机器学习 | 利用Pandas进入高级数据分析领域

目录

初识Pandas

Pandas数据结构

基本数据操作

DataFrame运算

文件读取与存储

高级数据处理


初识Pandas

Pandas是2008年WesMcKinney开发出的库,专门用于数据挖掘的开源python库,以Numpy为基础,借力Numpy模块在计算方面性能高的优势,其基于matplotlib能够简便画图,具有独特的数据结构。

与Numpy相比,Pandas能够更好地理解数据和发现其关联性,增强图表的可读性

具有丰富的数据清洗功能,可以处理缺失值、重复值、异常值等问题。

当然其还有如下的功能:

数据处理:可以轻松处理各种类型的数据,包括二维表格数据、时间序列数据等。

数据分析:可以轻松地计算均值、中位数、标准差等统计指标。

与其他工具的兼容性:可以使用Pandas读取和写入各种数据格式,如CSV、SQL数据库等。

总之,Pandas是一款功能强大且易于使用的数据分析工具,能够让你高效地处理和分析结构化数据。通过利用Pandas的各种功能,你可以更快地了解数据、发现洞察,并做出有意义的数据驱动决策。

Pandas数据结构

Pandas中一共有三种数据结构,分别为:Series、DataFrame和Multilndex(老版本中叫Panel),其中Series是一维数据结构,DataFrame是二维的表格型数据结构,Multilndex是三维的数据结构。如果电脑没有pandas这个包的话,我们首先终端执行如下命令进行安装:

pip install pandas -i https://pypi.mirrors.ustc.edu.cn/simple

Series:Series是一个类似于一维数组的数据结构,它能够保存任何类型的数据,比如整数、字符串、浮点数等,主要由一组数据和与之相关的索引两部分构成。其代码创建如下:

# 导入 pandas
import pandas as pd# data:传入的数据,可以是ndarray,list等
# index:索引,必须是唯一的,且与数据的长度相等。
# dtype:数据的类型
pd.Series(data=None, index=None, dtype=None)

以下是通过Series创建的三种方式:

为了更方便地操作Series对象中的索引和数据,Series中提供了两个属性index和values

DataFrame:DataFrame是一个类似于二维数组或表格(如excel)的对象,既有行索引,又有列索引。行索引,表明不同行,横向索引,叫index,0轴,axis=0;列索引,表名不同列,纵向索引,叫columns,1轴,axis=1。其代码创建如下:

# 导入pandas
import pandas as pd# index:行标签。如果没有传入索引参数,则默认会自动创建一个从o-N的整数索引。
# columns:列标签。如果没有传入索引参数,则默认会自动创建一个从o-N的整数索引。
pd.DataFrame(data=None, index=None, columns=None)

以下是通过DataFrame创建的方式:

为了更方便地操作DataFrame对象中的数据,DataFrame中提供了如下属性进行操作:

如果想对DataFrame索引的内容进行修改的话可以采用如下的方式进行设置(不能单个索引修改):

如果想重置或删除索引的话,可以采用如下的方式进行:

如果想以某列值设置为新的索引,可以采用如下的方式进行:

Multilndex:是三维的数据结构;多级索引(也称层次化索引)是pandas的重要功能,可以在Series、DataFrame对象上拥有2个以及2个以上的索引。

当我们打印上面的年月表格的行索引结果时,给出的结果如下:

多级或分层索引对象中index的属性有names表示levels的名称,levels表示每个levels的元组值:

使用MultiIndex进行创建的方式如下:

基本数据操作

以下是使用pandas对数据进行基本的操作,我们首先通过pandas读取csv获取到数据,然后操作:

索引操作:pandas支持索引选取序列和切片操作,也可以直接使用列名和行名:

赋值操作:可以直接对某项数据进行赋值操作:

排序操作:使用排序操作可以采用如下的方式进行

当然还有更简单的Series排序,使用 Series 排序时,只有一列不需要参数:

DataFrame运算

算术运算:可以采用如下方式

逻辑运算:可以采用如下方式 

当然我们也可以采用相应的函数进行操作:

统计运算:可以采用如下方式 

综合分析直接得出所有字段的统计结果:

如果想求某一字段的累计求和的话,可以采用如下的方式进行:

如果想自定义运算的话,可以采用如下的方式进行: 

文件读取与存储

我们的数据大部分存在于文件当中,所以pandas会支持复杂的iO操作,pandas的API支持众多的文件格式如CSV、SQL、XLS、JSON、HDF5。最常用的就是HDF5和CSV文件:

如果要读取 CSV 可以采用如下的方式:

如果要读取 HDF5 可以采用如下的方式:

注意

1)HDF5在存储的时候支持压缩,使用的方式是blosc,这个是速度最快的也是pandas默认支持的

2)用压缩可以提磁盘利用率,节省空间

3)HDF5还是跨平台的,可以轻松迁移到hadoop上面

如果要读取 JSON 可以采用如下的方式:

高级数据处理

pandas还有需要高级数据处理的操作,就以下几个常用的高级数据操作进行讲解:

缺失值处理:在Pandas中,缺失值表示数据集中的空值或未知值。它们通常由NaN(Not a Number)或None表示,具体取决于数据类型。缺失值可能是由于多种原因造成的,比如数据采集过程中的错误、数据转换过程中的问题、用户未提供某些值等。在数据分析和处理过程中,了解和处理缺失值是非常重要的。如何处理缺失值呢?

首先我们先导入一个电脑数据的分析的案例:

接下来我们对缺失值进行判断,如果存在缺失值进行删除:

接下来我们对缺失值进行判断,如果存在缺失值进行替换: 

如果缺失值不是NaN而是?的话,我们可以进行如下操作:

数据离散化:连续属性的离散化就是在连续属性的值域上,将值域划分为若干个离散的区间,最后用不同的符号或整数值代表落在每个子区间中的属性值。离散化有很多种方法,这使用一种最简单的方式去操作:

原始人的身高数据:165,174,160,180,159,163,192,184

假设按照身高分几个区间段:150~165,165~180,180~195

这样我们将数据分到了三个区间段,我可以对应的标记为矮、中、高三个类别,最终要处理成一个"哑变量"矩阵

连续属性离散化的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值的个数。离散化方法经常作为数据挖掘的工具。首先我们先导入数据:

接下来对数据进行一个分组操作:

如果我们想把分组数据变成one-hot编码的话可以采用如下操作(把每个类别生成一个布尔列,这些列中只有一列可以为这个样本取值为1.其又被称为热编码):

数据合并:如果你的数据由多张表组成,那么有时候需要将不同的内容合并在一起分析:

交叉表与透视表:两种用于数据分析和汇总的功能

其使用操作如下:

具体操作如下:

分组与聚合:分组与聚合通常是分析数据的一种方式,通常与一些统计函数一起使用,查看数据的分组情况。其具体操作如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/651028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android如何通过按钮实现页面跳转方法

Hello大家好!我是咕噜铁蛋!在Android应用开发中,页面跳转是一项基本且常见的功能。通过按钮实现页面跳转可以为用户提供更好的交互体验,使应用更加灵活和易用。本文将介绍Android Studio中如何通过按钮实现页面跳转的方法&#xf…

JVM简介

一、什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组…

vivado 放置I/O端口

放置I/O端口 I/O规划视图布局提供了几种将I/O端口分配给封装引脚的方法。你可以在“I/O端口”窗口中选择单个I/O端口、I/O端口组或接口,然后分配将它们封装到封装窗口中的封装引脚或设备窗口中的I/O焊盘。在“程序包”窗口中,您可以: •将端…

飞机发动机和飞机压缩机的关系是什么?各自的作用是什么?飞机压缩机类似于汽车涡轮增压器吗?

问题描述:飞机发动机和飞机压缩机的关系是什么?各自的作用是什么?飞机压缩机类似于汽车涡轮增压器吗? 问题解答: 飞机发动机和飞机压缩机是飞机涡轮引擎中的两个主要组成部分,它们共同协作以产生推力&…

基于springboot+vue的明星周边产品销售网站(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 研究背景…

redis哨兵机制

1)哨兵机制本质上是通过独立的进程来体现的,和之前的redis-server进程是完全不同的进程,redis-sentinel不负责存储数据,只是针对于其他的redis-server进程起到监控的效果,但是通常来说哨兵节点,也会搞一个集合&#xf…

Kotlin快速入门系列2

Kotlin的基本数据类型 Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于 Java 的是,字符不属于数值类型,是一个独立的数据类型。 Java和kotlin数据类型对照如下: Java基本数据类型 Kotlin对象数据类型 数据类…

goland课程管理(6)

项目目录结构如下图所示: core包下面: class.go package coreimport "github.com/gin-gonic/gin"func Class1(ctx *gin.Context) {}course.go package coreimport (. "cookie/database". "cookie/model""fmt"…

【Python】02快速上手爬虫案例二:搞定验证码

文章目录 前言1、不要相信什么验证码的库2、以古诗文网为例,获取验证码1)code_result.py2)gsw.py 前言 提示:以古诗文网为例,获取验证码: 登录:https://so.gushiwen.cn/user/login.aspx 1、不…

C++笔记之作用域解析符::和命名空间、作用域的关系

C++笔记之作用域解析符::和命名空间、作用域的关系 —— 杭州 2024-01-26 code review 文章目录 C++笔记之作用域解析符::和命名空间、作用域的关系1.`命名空间`和`作用域`两个术语的联系和区别命名空间(Namespace)作用域(Scope)联系与区别2.`作用域解析符::`和`命名空间`…

Stable Diffusion插件Recolor实现黑白照片上色

今天跟大家分享一个使用Recolor插件通过SD实现老旧照片轻松变彩色,Recolor翻译过来的含义就是重上色,该模型可以保持图片的构图,它只会负责上色,图片不会发生任何变化。 一:插件下载地址 https://github.com/pkuliyi…

(2024,预训练和微调扩散,图编码器,图特征与CLIP特征对齐)场景图到图像合成:集成 CLIP 指导与扩散模型中的场景图条件

Scene Graph to Image Synthesis- Integrating CLIP Guidance with Graph Conditioning in Diffusion Models 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 3. 方法 3.1 扩…

Hugo使用且部署GitHubPages

hugo的使用 20201121 Hugo是由Go语言实现的静态网站生成器。简单、易用、高效、易扩展、快速部署。 安装Hugo 0.windows安装(releases) 下载地址:https://github.com/spf13/hugo/releases。 配置环境变量 验证测试是否安装成功 hugo help1. 二进制安装&#xf…

Asp.Net Core 获取应用程序相关目录

在ASP.NET Core中,可以通过以下三种方式获取应用程序所在目录: 1、使用AppContext.BaseDirectory属性: string appDirectory AppContext.BaseDirectory; 例如:D:\后端项目\testCore\test.WebApi\bin\Debug\net6.0\ 2、使用…

Jmeter实现造10个账户、单元数据

今天简单介绍Jemeter的入门,Jmeter 的安装这边就跳过,直接讲述如何使用JMETER,如何运用Jmeter进行测试。Jmeter实现造10个账户、单元数据,之后大数据量批量造数据以此类推。 1.下载jmeter软件 2.安装jmeter软件 3.运行\bin\jmeter.bat批处理文件 4.选择脚本文件 5.…

Adobe ColdFusion 反序列化漏洞复现(CVE-2023-38203)

0x01 产品简介 Adobe ColdFusion是美国奥多比(Adobe)公司的一套快速应用程序开发平台。该平台包括集成开发环境和脚本语言。 0x02 漏洞概述 Adobe ColdFusion存在代码问题漏洞,该漏洞源于受到不受信任数据反序列化漏洞的影响,攻击者通过漏洞可以代码执行,可导致服务器失…

Linux 驱动开发基础知识—— 具体单板的 LED 驱动程序(五)

个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:V…

Unity应用在车机上启动有概率黑屏的解决方案

问题描述 最近将游戏适配到车机上(Android系统),碰到了一个严重bug,启动的时候有概率会遇到黑屏,表现就是全黑,无法进入Unity的场景。 经过查看LogCat日志,也没有任何报错,也没有任…

代码随想录刷题笔记-Day12

1. 二叉树的递归遍历 144. 二叉树的前序遍历https://leetcode.cn/problems/binary-tree-preorder-traversal/94. 二叉树的中序遍历https://leetcode.cn/problems/binary-tree-inorder-traversal/145. 二叉树的后续遍历https://leetcode.cn/problems/binary-tree-postorder-tra…

java获取linux和window序列号

前言 获取系统序列号在Java中并不是一个直接支持的功能,因为Java语言本身并不提供直接访问硬件级别的信息,如CPU序列号。但是,我们可以使用一些平台特定的工具或命令来实现这一功能。下面我将展示如何使用Java获取Windows和Linux系统上的CPU…