python数据分析--pandas初步学习

本文介绍了pandas库在数据分析中的重要性,详细讲解了Series和DataFrame的基本概念、生成方式、属性及操作。包括如何处理缺失值、数据对齐、数据合并等核心功能,为初学者提供了全面的pandas学习指南。
摘要由CSDN通过智能技术生成

我们都知道数据分析的三剑客--numpy,pandas,matplotlib(这个也可以用一个叫plotly的库)

  • numpy:主要用于数据科学计算
  • pandas:主要用于数据处理,这个能力比numpy的数据处理能力更好
  • matplotlib:主要用于数据可视化的

pandas介绍

  • pandas是基于numpy构建的库,pandas与numpy区别主要在于pandas有两种特别的数据结构:Series和DataFrame根据我的学习这两个其实对应的就是python中的字典和数据库中的数据表,我们接着看
  • 此外,为什么pandas的数据处理能力比numpy更好,因为pandas除了上面说的这两种数据结构很好之外,另外就是pandas提供了强大的IO读取工具,CSV格式,Excel文件,数据库都可以很方便的读取,而且DataFrame和这几种文件都很像,对于大数据,pandas支持大文件的分块读取
  • 对于数据清洗来说,可能数据集中有一些缺失值,pandas把各种类型的数据缺失值统一称为NaNNaN官方说明是float类型,None == None---->True,但是np.nan == np.nan---->False,但是对于is的话两者都是True
  • 对于分析建模是最重要的,pandas有自动数据对齐特性,通过这个特性,可以很方便的将数据集进行拆分-重组

最后的数据可视化的事情就交给matplotlib来做了

 

Series

  • 是numpy.ndarray(多维数组)的子类
  • 数据类型是支持泛型的,也就任何类型都可
  • 索引不需要按照顺序
  • 可以有重复的数据
  • index不像字典的key,可以是可变对象

Series类似于一维数组又有点类似于有序的字典(我们知道python中的字典是无序,我们可以通过for来验证,虽然Collections中有OrderedDict是有序的,set也是无序的,set不是Iterable)。并且Series的index和value之间是独立的,且这个index可以是可变对象

Series的两种生成方式

1.

可以看到,这里我们的index就是一个list,是可变对象,但是我们一般还是用不可变对象来做index

2.

可以看到没有设置index的话,会直接帮我们生成默认的index

当然我们还可以根据字典来生成Series:

这样是不是就生成了NaN了,并且类型变成了float64浮点类型了,所以官方解释说NaN是float类型

这也算字典生成Series:

查看Series

NaN的查询方式:

嵌套查看NaN:找出那对value为NaN的index-value,返回那对index-value

查看非NaN的个数:

data2.count()

Series的自动对齐功能

我一开始一直在想什么是自动对齐,学到才觉得确实很好用

光会用没什么,主要是我们要发现更深入的东西,我们会发现,什么东西和NaN进行运算都会变成NaN,就像个黑洞一样,计算机中有很多用到类似的思想,比如bit 0与任何东西&都是0,Linux中dev下面的null设备(设备就是对应成一个文件),可以接受任何输入且不返回任何结果,可以将不需要打印出来的消息输出到null设备中去。路由交换中路由也有一个叫什么null的逻辑接口,用于防止路由环路和过滤数据包

Series的name属性

Series对象本身和index都有一个name属性,name在DataFrame能够发挥很大作用,当我们将一个Series对象放进DataFrame中,这个Series会变成DataFrame中的一个列,就和数据表类似,列肯定要有列名,这个列名就是Series对象的name属性,如果我们没有对该Series对象进行命名,则DataFrame会自动帮我们命名为   0

DataFrame

  • numpy中array-like
  • 每一列可以有不同的类型,且每个元素都可以不同类型,数据库中每一列是需要同类型的
  • 通过行,列来索引
  • 可以删除行也可以删除列

生成DataFrame对象

非常像数据库中的数据表

那可不可以这样呢?

答案是不可以,会报错,说需要相同的长度

查看DataFrame属性

DataFrame的索引

取一行:

这两个是一样的,我们取的是一个1号行

DataFrame的常用操作

增加一列

 增加一行

删除行或者列

删除列

删除行:用drop方法,不能用del,会报错,但是drop方法返回的是copy而不是真正的数据,要在源数据里面删除的话需要设置inplace=True

设置某一列为index

这并没有在源数据上面进行修改

在原数据上面修改

 将index列还原

处理缺失值

第一种:丢弃含有缺失值的行

dropna([inplace])

第二种:填充缺失值数据

fillna(filldata[,inplace])

数据合并:类似于数据表的连接操作

例如:pd.merge(data,data1,on='columnname',how='left')

数据合并之后可能会有重复值,我们可以用data.drop_duplicates(inplace=True)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值