python pandas处理数据_python学习之pandas数据处理

pandas 是基于NumPY 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

习惯上,我们会按下面格式引入所需要的包:

1f8200ce5a5142bb7a394b767092efc3.png

一、            创建对象

1、可以通过传递一个list对象来创建一个Series,pandas会默认创建整型索引:

fbbc78dd1c7e459b46ad1cd7f17ab9c1.png

2、通过传递一个numpy array,时间索引以及列标签来创建一个DataFrame:

099711119d8604cdfaa2eb60e9e06e85.png

3、通过传递一个能够被转换成类似序列结构的字典对象来创建一个DataFrame:

c0de5c81e3a99a54aa50a42f8afbcfa7.png

4、查看不同列的数据类型:

3834226741bfefbf4fab8213606e0418.png

5、如果你使用的是IPython,使用Tab自动补全功能会自动识别所有的属性以及自定义的列,下图中是所有能够被自动识别的属性的一个子集:

0e892a7b98a8e8b41073e0da3a89ad58.png

二、            查看数据

1、  查看frame中头部和尾部的行:

4e554ab8417d77e5cf87d3565e17c2b4.png

2、  显示索引、列和底层的numpy数据:

cbdaea344d42d3cec19f850357ecd956.png

3、  describe()函数对于数据的快速统计汇总:

535af54b7fe710763a7c1eb827a1c373.png

4、  对数据的转置:

532395b983ed84d9fd15cc4350ef4385.png

5、  按轴进行排序

27c47c1fe22b990eeb49ad38d8e1affc.png

6、  按值进行排序

accfcc9af25c03e8707f2c0523d5c6e0.png

三、            选择

虽然标准的Python/Numpy的选择和设置表达式都能够直接派上用场,但是作为工程使用的代码,我们推荐使用经过优化的pandas数据访问方式:

l  获取

1、 选择一个单独的列,这将会返回一个Series,等同于df.A:

56412dbbdacce442f0d9adff26ef58c2.png

2、 通过[]进行选择,这将会对行进行切片

a975ad6de164a557ffa600507242a663.png

l  通过标签选择

1、 使用标签来获取一个交叉的区域

dd945a862f263a7fcfc03efd41962ced.png

2、 通过标签来在多个轴上进行选择

9452d54c84bb9b21b2e6b0a90c13128c.png

3、 标签切片

3b11e4e00ed8d06950eef7888f6eeeea.png

4、 对于返回的对象进行维度缩减

64dca1f71b79a1fd0a2699af30b0000b.png

5、 获取一个标量

9ec529126038193f5982a86f2a6dca63.png

6、 快速访问一个标量(与上一个方法等价)

50189aa84f2f1987c1d172dc921a50a0.png

l  通过位置选择

1、 通过传递数值进行位置选择(选择的是行)

0db59c1d3bdead853dbfb8735329cff4.png

2、 通过数值进行切片,与numpy/python中的情况类似

e6aa665629da5995a079152105fd08d0.png

3、 通过指定一个位置的列表,与numpy/python中的情况类似

9c49e75f14f0e050303aae910223b1ea.png

4、 对行进行切片

6fdbee55bf80142996200df2025af152.png

5、 对列进行切片

77bef2ff4c219ac4b650198d41d5956c.png

6、 获取特定的值

af684a891e9efebe6830e6875e00191d.png

l  布尔索引

1、 使用一个单独列的值来选择数据:

149f3d7ee44a84793a48f0f42c2c7441.png

2、 使用where操作来选择数据:

26d7d1472e77ce8d57dd6e09e1836a2b.png

3、 使用isin()方法来过滤:

c72162c54212b3591a4d14973a1ae9cf.png

l  设置

1、 设置一个新的列:

a74eb13ebe716048a1ede922d43d1e20.png

2、 通过标签设置新的值:

c449e11ef2c038aa193879b438b78394.png

3、 通过位置设置新的值:

e3af232720dd531ed3b3fa1e4e155c90.png

4、 通过一个numpy数组设置一组新值:

3114f6639e424ebe9d8fd128e2fe4887.png

上述操作结果如下:

5ad4d4a7177d07dbe352959d4fcc8c94.png

5、 通过where操作来设置新的值:

e869b398cfab0ea820ef26dc6bfbe739.png

四、            缺失值处理

在pandas中,使用np.nan来代替缺失值,这些值将默认不会包含在计算中,详情请参阅:Missing Data Section。

1、  reindex()方法可以对指定轴上的索引进行改变/增加/删除操作,这将返回原始数据的一个拷贝:、

92d1aa9f6b002258feee35b9f405c736.png

2、  去掉包含缺失值的行:

10080a68c2e71c2f77732b0e82eeb6d8.png

3、  对缺失值进行填充:

5ade8b5c2c59ad705d68de368ffd7684.png

4、  对数据进行布尔填充:

fb6bd363689d788bfd4eafc22fb117bb.png

五、            相关操作

l  统计(相关操作通常情况下不包括缺失值)

1、  执行描述性统计:

2511cfebf173b770487540fba1e1b1be.png

2、  在其他轴上进行相同的操作:

64fce847ffa70e89db0bce6de832de11.png

3、  对于拥有不同维度,需要对齐的对象进行操作。Pandas会自动的沿着指定的维度进行广播:

cefc9c6ac1af9154640d14b6de59660b.png

l  Apply

1、  对数据应用函数:

486cf4eff78377de3bb0c2159bd0f0d2.png

l  直方图

e10fffdb3b854c8a733eaf466e96952f.png

l  字符串方法

Series对象在其str属性中配备了一组字符串处理方法,可以很容易的应用到数组中的每个元素,如下段代码所示。更多详情请参考:Vectorized String Methods.

a2f885cc3ef762be5bdc1c2f186fc60a.png

六、            合并

Pandas提供了大量的方法能够轻松的对Series,DataFrame和Panel对象进行各种符合各种逻辑关系的合并操作。具体请参阅:Merging section

l  Concat

b76ba2cc567f289ae6eb7c4edd6ed31c.png

l  Join 类似于SQL类型的合并,具体请参阅:Database style joining

448761d10ca0fb13ef8c5847608eb3b5.png

l  Append 将一行连接到一个DataFrame上,具体请参阅Appending:

2b10ea30fd5d3e0fa94c1bd6611abe99.png

七、            分组

对于”group by”操作,我们通常是指以下一个或多个操作步骤:

l  (Splitting)按照一些规则将数据分为不同的组;

l  (Applying)对于每组数据分别执行一个函数;

l  (Combining)将结果组合到一个数据结构中;

f57dec0668d14209f5a770a61168df99.png

1、  分组并对每个分组执行sum函数:

25edf3c9dd6db5d77244e8ef660b2083.png

2、  通过多个列进行分组形成一个层次索引,然后执行函数:

f15c83b6746e85f8da348b65ef5f0416.png

八、            Reshaping

l  Stack

57742f2e6f78504e3f3d09047e62df94.png

68dd7e8854e04db821a8ff8f8b57bb1f.png

069d0ee77829175291b6b0a16de869ba.png

l  数据透视表,详情请参阅:Pivot Tables.

de6e42f2b8c9b9065c8c7ae7a5f83284.png

可以从这个数据中轻松的生成数据透视表:

89f9425c848cb11e597ef9f479609544.png

九、            时间序列

Pandas在对频率转换进行重新采样时拥有简单、强大且高效的功能(如将按秒采样的数据转换为按5分钟为单位进行采样的数据)。这种操作在金融领域非常常见。具体参考:Time Series section。

5f6d33889587b2b8b7f68a07c7e4a136.png

1、  时区表示:

6fef37487459e2dc91c6e4dcea15de42.png

2、  时区转换:

2b9c7e9822643af41e26bfc113968a66.png

3、  时间跨度转换:

861a45a5f29928991d6f7d6de9ade90a.png

4、  时期和时间戳之间的转换使得可以使用一些方便的算术函数。

096b47c380ce9c92227eb947224f0e20.png

十、            Categorical

从0.15版本开始,pandas可以在DataFrame中支持Categorical类型的数据,详细 介绍参看:categorical introduction和API documentation。

3ef32f5c5734554b995245730758afc7.png

1、  将原始的grade转换为Categorical数据类型:

7ad85086abc2d864d6356ecf52856dbe.png

2、  将Categorical类型数据重命名为更有意义的名称:

239168682eb01412c11b915531cdbe2e.png

3、  对类别进行重新排序,增加缺失的类别:

c2075eed4b1b09cbd1cb49128bf60c21.png

4、  排序是按照Categorical的顺序进行的而不是按照字典顺序进行:

3b4df4442892a5b9618e5e249f2999fe.png

5、  对Categorical列进行排序时存在空的类别:

a4f000be04f30116f7e2eff5a446f7b2.png

十一、           画图

具体文档参看:Plottingdocs

4c5f9e05097a3e0e25bde05ad7199295.png

对于DataFrame来说,plot是一种将所有列及其标签进行绘制的简便方法:

344f40151c77d2720ef1ccd0b72388af.png

c276884f7093948027cedcf436c2a714.png

十二、           导入和保存数据

1、  写入csv文件:

7653887c28685f433708347917287f9e.png

2、  从csv文件中读取:

d384f47fc497cdcdf75413c3d4a737e5.png

l  HDF5,参考:HDFStores

1、  写入HDF5存储:

15e88365294024970c16ad79e6d2e59b.png

2、  从HDF5存储中读取:

b11ce35cbb6b76b70c06bc15f813a975.png

l  Excel,参考:MS Excel

1、  写入excel文件:

b128ee04bd449f0323c5bf8f50e67bb9.png

2、  从excel文件中读取:

1f33e2efba55a4f5ab62964e531edb4d.png


版权声明:本文为weixin_33089993原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。