作者介绍
莲石东路@乌森
心之所向,无界成长。从底层架构到应用实战,聊聊炼数成金背后的故事。
持续更新数据治理、数据科学、数据可视化、空间计算系列文章。
使用Python做数据分析,必然要提及的一个工具就是pandas,它是一个非常强大的数据分析工具包,集数据处理、分析、可视化于一身的工具,非常强大好用。在讲下一篇的Ploty.js之前我们先总结一下Pandas的使用。
01
Pandas数据结构:一维数组(Series)
1.1
创建Series数组
Series是一个一维的数据类型,其中每一个元素都有一个标签。类似于Numpy中元素带标签的数组。其中,标签可以是数字或者字符串。
1.2
Series数组的索引
Series对象提供了几种不同的索引方法。
(1) 枚举索引
枚举索引按照index值进行索引。index值默认使用下标,下标总是从0开始的,而且索引值总是数字。也可以用关键字为index赋值,关键字既可以是数字,也可以是字符串等。
(2)布尔索引
切片索引使用的是下标,不会受到index的影响。
(3)切片索引
02
Pandas数据结构:数据表(Dataframe)
Pandas提供了一种名为Dataframe的二维表结构。可以把DataFrame想象成一个电子表格,它由行名(index)、列名(columns)和数据(values)组成。
2.1
创建Dataframe数据表
(1)从字典创建
(2)从Series创建
(3)从二维数组直接创建
由二维数组直接创建DataFrame,得到一样形状的结果数据,如果不指定index和columns,两者均返回默认数字格式。
2.2
Dataframe数据表的遍历
2.3
Dataframe数据表的索引
(1)枚举索引
(2)布尔索引
(3)切片索引
(4)loc和iloc索引
2.4
多索引Dataframe数据表
03
Pandas数据 I/O
了解更多
04
Series和DataFrame的基本操作
4.1
Series和DataFrame添加删除元素
(1)Series添加删除元素
(2)DataFrame添加删除元素
4.2
Series和DataFrame数据排重
4.3
Series和DataFrame数据替换和映射
(1)数据替换
(2)数据映射
map()函数就是一个数据到一个数据的映射关系,中间没有对数据的增删改;map(function,list)就是将list里面的数据取出来然后用于function。
4.4
DataFrame行列变换
(1)使用 numpy 实现转置
(2)利用 pandas 多级索引实现转置
stack() 会将数据的列”旋转”为行,新的行索引比原来的行索引低了一个级别(0的级别最高)。unstack() 将数据的行”旋转”为列,默认旋转的是级别最低的索引。
4.5
DataFrame合并与拆分
(1)堆叠
concat()能够实现轴向数据集的堆叠。
(2)连接
merge()可根据一个或者多个键将不同的DataFrame连接在一起,类似于SQL数据库中的join操作。
(3)拆分
4.6
DataFrame排序
4.7
DataFrame分组
05
Pandas与数据统计
5.1
Series的统计
5.1
DataFrame的统计
06
小技巧:Pandas提速攻略
6.1
标准循环—101.6秒
DataFrame是具有行和列的Pandas对象。如果使用循环,需要遍历整个对象。Python不能利用任何内置函数,而且速度很慢。
6.2
使用Pandas内置函数:iterrows()—6.8秒,快15倍
在第一个示例中,循环遍历了整个DataFrame。iterrows()为每一行返回一个Series,它以索引对的形式遍历DataFrame,以Series的形式遍历感兴趣的列。这使得它比标准循环更快。
6.3
apply()方法—1.7秒,快59.7倍
apply 本身并不快,但与DataFrame结合使用时,它具有优势。
6.3
Pandas向量化—0.04秒,快2540倍
可以利用向量化的优点来创建非常快的代码。
领取专属 10元无门槛券
私享最新 技术干货