此文是《10周入门资料分析》系列的第16篇
想了解学习路线,可以先阅读 学习计画 | 10周入门资料分析
上篇介绍了 NumPy,本篇介绍 pandas。
目录
pandas入门
pandas的资料结构介绍
基本功能
汇总和计算描述统计
处理缺失资料
层次化索引
pandas入门
Pandas 是基于Numpy构建的,让以NumPy为中心的应用变的更加简单。
pandas的资料结构介绍
1、Series
由一组资料(各种 NumPy 资料类型)和一组索引组成:
Values 和 index 属性:
给所创建的Series带有一个可以对各个数据点进行标记的索引:
与普通NumPy阵列相比,可以透过索引的方式选取Series中的单个或一组值:
可将Series看成是一个定长的有序字典,它是索引值到资料值的一个映射(它可以用在许多原本需要字典参数的函数中)。
如果资料被存放在一个 python 字典中,可以直接透过这个字典来创建Series:
如果只传入一个字典,则结果Series中的索引就是原字典的键(有序排列),上面的states。
Series最重要的一个功能是在算数运算中自动对齐不同索引的资料:
Series物件本身及其索引都有一个name属性:
Series的索引可以透过赋值的方式就地修改:
2、DataFrame
是一个表格型的资料结构。既有行索引也列索引。DataFrame中面向行和面向列的操作基本是平衡的。DataFrame中的资料是以一个或多个二维块存放的。用层次化索引,将其表示为更高维度的资料。
构建 DataFrame:直接传入一个由等长清单或 NumPy 阵列组成的字典。
会自动加上索引,但指定列序列,则按指定顺序进行排列:
和Series一样,如果传入的列在资料中找不到,就会产生NA值:
透过赋值的方式进行修改:
透过类似字典标记的方式或属性的方式,可以将DataFrame的列获取为一个Series:
栏也可以透过位置或名称的方式进行获取,比如用索引栏位ix。
将清单或阵列赋值给某个列时,其长度必须跟DataFrame的长度相匹配。如果赋值的是一个Series,就会精确匹配DataFrame的索引,所有的空位都将被填上缺失值:
给不存在的列赋值会创建出一个新列,关键字del用于删除列:
透过索引方式返回的列是相应资料的视图,并不是副本,对返回的Series做的任何修改都会反映到源DataFrame上,透过series的copy方法即可显式地複製列。
另一种常见的资料形式是嵌套字典,如果将它传给DataFrame,解释为 — — 外层字典的键作为列,内层键作为行索引。
对结果进行转置:
指定索引按序列:
由Series组成的字典差不多也是一样的用法:
设定了DataFrame的index和columns的 name 属性,这些资讯也会被显示,values 属性以二维ndarray的形式返回DataFrame中的资料:
如果DataFrame各列的资料类型不同,值阵列的资料类型就会选用能相容所有列的资料类型(如 dtype = object)。
3、索引物件
pandas的索引物件,管理轴标籤和其他中继资料(如轴名称等)。
构建Series或DataFrame时,所用到的任何阵列或其他序列的标籤都会被转换成一个Index,且Index物件是不可修改的:
Index的功能类似一个固定大小的集合:
基本功能
1、重新索引
方法 reindex:创建一个适应新索引的新物件。
调用该Series的reindex将会根据新索引进行重排。如果某个索引值当前不存在,就引入缺失值。
对于时间序列这样的有序数据,重新索引时可能需要做一些差值处理:
对于DataFrame ,reindex可以修改行、列索引,或两个都修改。如果仅传入一列,则会重新索引行:
使用columns关键字可重新索引列:
ix标籤索引功能:
丢弃制定轴上的项
drop方法返回的是一个在指定轴上删除了指定值的新对象:
对于DataFrame,可以删除任意轴上的索引值:
2、索引、选取和过滤
Series索引的工作方式类似于NumPy阵列的索引,但Series的索引值不只是整数:
利用标籤的切片运算,其包含闭区间(与普通 python 切片运算不同):
对DataFrame进行索引就是获取一个列:
或多个列:
这种索引方式的特殊情况:透过切片或布林型阵列选取行。
另一种用法是透过布林型DataFrame进行索引(在语法上更像 ndarray):
专门的索引栏位 ix,是一种重新索引的简单手段:
3、算数运算和数据对齐
pandas最重要的一个功能是对不同索引的物件进行算数运算。
对不同的索引对,取并集:
自动的资料对齐操作在不重叠的索引出引入了NA值,即一方有的索引,另一方没有,运算后该处索引的值为缺失值。
对DataFrame,对齐操作会同时发生在行和列上。
4、在算术方法中填充值
对运算后的NA值处填充一个特殊值(比如 0):
否则 e 列都是NaN值。
类似,在对Series和 DataFrame 重新索引时,也可以指定一个填充值:
······································
···········································
··············································
·········································
点击链接获取全文:Python资料分析(四)Pandas
我是「数据分析那些事」。常年分享数据分析乾货,不定期分享好用的职场技能工具。
已经有2800+的同好按赞我的脸书了,你不来吗?XD