Pandas被称为“Python Data Analysis Li”,它:
是基于Numpy的一种工具库;
提供了大量能使我们快速便捷处理数据的函数和方法;
最初被作为金融数据分析根据被开发出来;
集成了时间序列功能;
对缺失值的灵活处理能力;
…
Pandas有两种主要的数据结构:Series和Dataframe,前者是一维的,后者是多维的(表格型)。
一、 Series
Series由一组数据和对应的索引组成,看个例子:
有点像第1天学的字典。
复习一下字典:
Series在操作上也像字典,对比一下a(字典)和b(Series):
实际上,字典也确实可以直接变身成为Series!比如下面的字典a,储存了每个地区的平均工资,将其变为Series:
二、DataFrame
1. 数据结构
DataFrame是一个表格型的数据结构。
下面的这组数据,储存了2015年中国人口前十的城市,以及它们拥有的人口。
那么怎么才能生成这样一张表呢?最常用的方法,是用字典生成:
2. 基本操作
(1)改变索引名
刚刚的城市人口数据,我们有10个城市,索引是0~9,我们不想用这么单调的数字来做索引,想用每个城市的简称来表示,和Series一样,可以用index=来指定索引
(因为Python自带的shell中,结果的显示没有ipython notebook美观,所以下面的例子我用ipython notebook的结果来展示)
(2)增加一列
如何给DataFrame增加一列?还是以刚刚城市人口的数据pop_DF为例,我们来增加一列,给每个城市打上“China”的标记:
有时候增加的这一列不一定全,可能有缺失,比如再给每个城市增加一列归属省份,但是本人地理差,只知道广州属于广东,苏州属于江苏,那么我可以这么加:
总结:
- 可以用Series来按照索引的匹配来增加一列;
- 缺失的地方会用NaN来表示。
(3)排序
作为统计师,排序是常见的,我想到的以后可能用到的至少有这几种:
人为给定顺序;
按照索引来自动排序:升序、降序;
按照某一变量来自动排序;
人为给定顺序:
用reindex函数,可以人为的给定顺序,想让谁在前面谁就在前面。
比如,我们按照首字母来人为给定如下顺序
这时我有一个问题了:要是reindex中出现了不存在的索引怎么办?
比如上例中pop_DF2的“Chu”,结果其所对应的全部变量都是缺失的。
按照索引自动排序:
可以用 .sort_index() 来让数据按照索引自动排序。
在上例中,我们多了一个索引为“Chu”的空数据,并且在Bao的前面,我们再用sort_index()让它按照字母顺序自动重排一下。
这是默认的升序排列,也可以降序,只要指定ascending=False就可以:
pop_DF2.sort_index(ascending=False)
按照变量自动排序:
我们可以用 .sort_values( by = ‘’ ) 来指定某一个变量来排序:
我们回到pop_DF这个数据:
(4)删除一列或一行
如何删掉一行?
用 .drop() 就可以删掉指定的索引行,
比如我们想删掉pop_DF中,人口大于2000(万)的城市,也就是重庆和上海,对于的索引(也就是简称)为:Yu和Hu
如何删掉一列?
用 .drop() ,指定一下要删的列变量,并且加一句 axis=1 。
Pandas数据的DataFrame数据格式的魅力:
列表生成DataFrame: