大家好,我是Peter~
《深入浅出Pandas数据分析》第一版本终于可以和大家见面咯!文末有资料领取方式
从4月24号的第一篇Pandas文章:《一切从爆炸函数开始》,到昨天8月5号的《图解Pandas的轴旋转函数:stack和unstack》,总共历时103天,让Pandas来见证吧:
两行代码告诉你两个日期之间的时间差,这就是Pandas
什么是Pandas?引用一段来自Pandas中文官网的解释:
Pandas 是 Python的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。Pandas 的目标是成为 Python 数据分析实践与实战的必备高级工具,其长远目标是成为最强大、最灵活、可以支持任何语言的开源数据分析工具
简单解释:Pandas是Python的第三库中数据处理和分析最厉害的一个库!
Pandas是一个强大的数据分析库,那它能够处理哪些类型的数据?
这103天总共更新了16篇关于Pandas的文章:
这篇文章主要讲解的是Pandas中一个函数的使用:explode
它实现的是类似hive中explode函数的功能:从左边的信息统计出右边的信息
Pandas中有两种数据类型,其中一种就是Series。
Series 是一维数组结构,它仅由index(索引)和value(值)构成的。
第三篇文章介绍的是Pandas中最常用的一种数据结构:DataFrame 的10种创建方式。
DataFrame 是将数个 Series 按列合并而成的二维数据结构,每一列单独取出来是一个 Series ;除了拥有index和value之外,还有column
写完之后才想起来,漏了一种方式:通过剪贴板直接创建。当我们在剪贴板中准备好了数据,运行下面的语句就可以直接创建:
df = pd.read_clipboard()
df
前两篇文章介绍了Series和DataFrame两种数据结构的创建,那么接下来介绍的是:如何从中取数我们想要的数据。
Pandas中取数的方式真的是五花八门,所以总共花了3篇文章。第四篇文章中的方法主要是:
也是关于Pandas中取数的文章,主要介绍的是:
最后一篇介绍如何在Pandas中取数,重点介绍了3对函数:它们使用的时候有细微的区别
在我们拿到数据导入到Pandas,进行后续的处理之前,我们需要先查看下数据的基本信息,对这份数据有一个初步的了解,一般包含如下信息:
Pandas在处理数据的时候,保证数据类型的准确非常重要,第八篇文章主要是介绍了3种常见的数据类型转换方法+数据类型筛选的方法:
groupby分组统计是工作和数据处理工程中常见的一种方法。这篇文章详解了groupby的内部机制。
本篇文章主要是类比SQL中的排名和窗口函数,介绍了如何利用Pandas的rank函数来实现:
有了排名,必然也要来实现一下排序。排序sort_values函数在平时使用的频率是非常高的,经常需要对销售数据做TopN分析,就需要分组统计数据之后再进行一下排序。
一般情况下,数据都不是完美的。需要我们进行前期的各种处理操作,对缺失值的处理就是其中之一。
本篇文章主要是介绍了利用Pandas处理缺失值,包含:对缺失值的判断、删除缺失值、填充缺失值:
数据中存在重复值也是常有的情况,本篇文章中主要是介绍了重复值处理的两种方式:
在实际的业务需求中,我们的数据可能存在于不同的库表中,SQL可以通过各种join来实现,Pandas中主要是通过merge函数来实现的。
在这篇文章中详细介绍了merge的各个参数如何使用:
pd.merge(left, # 待合并的2个数据框
right,
how='inner', # ‘left’, ‘right’, ‘outer’, ‘inner’, ‘cross’
on=None, # 连接的键,默认是相同的键
left_on=None, # 指定不同的连接字段:键不同,但是键的取值有相同的内容
right_on=None,
left_index=False, # 根据索引来连接
right_index=False,
sort=False, # 是否排序
suffixes=('_x', '_y'), # 改变后缀
copy=True,
indicator=False, # 显示字段来源
validate=None)
Pandas中除了常用的merge函数来实现数据合并,还有3个函数也能实现部分的合并功能:concat、join、append;尤其是concat,其实也挺常用的。
concat参数:
pandas.concat(objs, # 合并对象
axis=0, # 合并方向,默认是0纵轴方向
join='outer', # 合并取的是交集inner还是并集outer
ignore_index=False, # 合并之后索引是否重新
keys=None, # 在行索引的方向上带上原来数据的名字;主要是用于层次化索引,可以是任意的列表或者数组、元组数据或者列表数组
levels=None, # 指定用作层次化索引各级别上的索引,如果是设置了keys
names=None, # 行索引的名字,列表形式
verify_integrity=False, # 检查行索引是否重复;有则报错
sort=False, # 对非连接的轴进行排序
copy=True # 是否进行深拷贝
)
join参数:
dataframe.join(other, # 待合并的另一个数据框
on=None, # 连接的键
how='left', # 连接方式:‘left’, ‘right’, ‘outer’, ‘inner’ 默认是left
lsuffix='', # 左边(第一个)数据框相同键的后缀
rsuffix='', # 第二个数据框的键的后缀
sort=False) # 是否根据连接的键进行排序;默认False
append主要参数:
DataFrame.append(
other, # 追加对象
ignore_index=False, # 是否保留原索引
verify_integrity=False, # 检查行索引是否重复;有则报错
sort=False)
stack和unstack也是一对互为逆操作的函数,它们二者的作用的是对Pandas的数据轴进行旋转,二者特点为:
来自官网的两张图来解释二者的用法:
在写作的过程中,参考了官网和很多资料,也有自己平时使用的一些心得,同时也模拟了很多数据,总结下几个特色:
目前写的内容真的仅仅是Pandas库的冰山一角,还有很多的内容没有展开。但是如果读者能够认真看完,并且自己实际去运行和理解代码,相信还是会有很大的收获,入门pandas必定是问(听)题(你)不(吹)大(牛)!
后续Pandas的文章会持续更新,这将是一个长期的过程。以后会带来更多高级使用技巧和案例,帮助读者掌握Pandas的使用。
领取方式:关注公众号[尤而小屋],回复Pandas即可领取