史上最强Pandas手册,让你从小白立马变身数据分析师,建议收藏!

Smartbi大数据分析平台

功能覆盖数据分析全流程,一站式平台,产品功能可组合!

申请试用

Smartbi大数据分析平台

功能覆盖数据分析全流程,一站式平台,产品功能可组合! 申请试用

史上最强Pandas手册,让你从小白立马变身数据分析师,建议收藏!

Pandas是Python的一个数据分析库,提供如DataFrame等十分容易操作的数据结构,是近年做数据分析时不可或缺的工具之一。


虽然已经有满坑满谷的教学文章、视频或是线上课程,正是因为pandas学习资源之多,导致初学者常常不知如何踏出第一步。


在这篇文章里头,我们将接近40个实用的pandas技巧由浅入深地分成6大类别:


 建立DataFrame

 定制化DataFrame 显示设定

 数据清理& 整理

 取得想要关注的数据

 基本数据处理与转换

 简单汇总& 分析数据


通过有系统地呈现这些pandas技巧,我们希望能让更多想要利用Python做数据分析或是想成为data scientist的你,能用最有效率的方式掌握核心pandas能力;同时也希望你能将自己认为实用但本文没有提到的技巧与我们分享。


废话不多说啦,让我们开始这趟pandas旅程吧!当然,首先你得import pandas:


在这里插入图片描述


建立DataFrame

pandas里有非常多种可以初始化一个DataFrame的技巧:


1. 用Python dict建立DataFrame


使用Python的dict来初始化DataFrame十分直观,基本上dict里头的每一个键(key)都对应到一个列名称,而其值(value)则是一个iterable,代表该列里头所有的数值。


在这里插入图片描述


在需要管理多个DataFrames时你会需要用更有意义的名字来代表它们,但在数据科学领域里只要看到df,每个人都会预期它是一个Data Frame,不论是Python或是R语言的使用者。


很多时候你也会需要改变DataFrame 里的列名称:


在这里插入图片描述


这里也很直观,就是给一个将旧列名对应到新列名的Python dict。值得注意的是参数axis=1:在pandas里大部分函数预设处理的轴为行(row),以axis=0表示;而将axis设置为1则代表你想以列(column)为单位套用该函数。


你也可以用df.columns的方式改变列名称:


在这里插入图片描述


2. 使用pd.util.testing随机建立DataFrame


当你想要随意初始化一个DataFrame并测试pandas功能时,pd.util.testing就显得十分好用:


在这里插入图片描述


head函数预设用来显示DataFrame中前5项数据,要显示最后数据则可以使用tail函数。


你也可以用makeMixedDataFrame建立一个有各种数据类型的DataFrame方便测试:


在这里插入图片描述


其他函数如makeMissingDataframe及makeTimeDataFrame我们在后面的章节介绍使用。


3. 将剪贴簿内容转换成DataFrame


你可以从Excel、Google Sheet 或是网页上复制表格并将其转成DataFrame。


只需简单2个步骤:


 复制其他来源的表格;

 执行 pd.read_clipboard;


在这里插入图片描述


这个技巧在你想要快速将一些数据转成DataFrame 时非常方便。


4. 读取线上CSV文档


不限于本地档案,只要有正确的URL 以及网络连接就可以将网络上的任意CSV 档案转成DataFrame。比方说你可以将Kaggle著名的Titanic竞赛的CSV档案从网络上下载下来并转成DataFrame:


在这里插入图片描述


过来人经验,虽然像这样利用pandas 直接从网络上下载并分析数据很方便,但是有时host 数据的网页与机构(尤其是政府机关)会无预期地修改他们网站,导致数据集的URL 失效。为了最大化重现性,我还是会建议将数据载到本地备份之后,再做分析比较实在。


5. 优化内存使用量


你可以透过df.info查看DataFrame当前的内存用量:


在这里插入图片描述


从最后一列可以看出Titanic这个小DataFrame只占了322 KB。这边使用的df不占什么内存,但如果你想读入的DataFrame很大,可以只读入特定的栏位并将已知的分类型(categorical)栏位转成category型态以节省内存(在分类数目较数据量小时有效):


在这里插入图片描述


通过减少读入的栏位数并将object转换成category栏位,读入的df只剩135KB,只需刚刚的40%内存用量。


另外如果你想在有限的内存处理巨大CSV文档,也可以透通过chunksize参数来限制一次读入的行数(rows):


在这里插入图片描述


定制化DataFrame显示设定

虽然pandas 会尽可能地将一个DataFrame 完整且漂亮地呈现出来,有时候你还是会想要改变预设的显示方式。这节列出一些常见的使用情境。


1.完整显示所有列

有时候一个DataFrame 里头的栏位太多, pandas 会自动省略某些中间栏位以保持页面整洁:


在这里插入图片描述


但如果你无论如何都想要显示所有栏位以方便一次查看,可以透过pd.set_option函数来改变display.max_columns设定:


1  pd.set_option("display.max_columns", None) 

2  df 


另外你也可以使用T来转置(transpose)当前DataFrame,垂直显示所有栏位:


1  df.T.head (15)


此外,你可以在pandas官方文件里查看其他常用的显示设定。


2. 减少显示的栏位长度


这边你一样可以通过pd.set_option函数来限制Titanic数据集里头Name栏位的显示长度:


在这里插入图片描述


3. 改变浮点数显示位数


除了栏位长度以外,你常常会想要改变浮点数(float)显示的小数点位数:


在这里插入图片描述


你会发现Fare栏位现在只显示小数点后一位的数值了。另外注意刚刚设定的max_colwidth是会被套用到所有DataFrame的。因此这个DataFrame的Name栏位显示的宽度还跟上个DataFrame相同:都被缩减了。


想要将所有调整过的设定初始化,可以执行:


1  pd.reset_option("all")

其他常用的options 包含:

 max_rows

 max_columns

 date_yearfirst

等等。执行pd.describe_option()可以显示所有可供使用的options,但如果你是在Jupyter notebook内使用pandas的话,我推荐直接在set_option函式的括号里输入Shift+ tab显示所有选项。


另外值得一提的是pandas 函数都会回传处理后的结果,而不是直接修改原始DataFrame。


这让你可以轻松地把多个函式串(chain)成一个复杂的数据处理pipeline,但又不会影响到最原始的数据:


在这里插入图片描述


瞧!原来的DataFrame还是挺淳朴的,注意Fare栏位里的小数点并没有因为刚刚的styling而变少,而这让你在呈现DataFrame时有最大的弹性。


以上是思迈特软件的一些技术分享,希望对您有所帮助!

申请试用


试用申请

更聪明的大数据分析软件,快速挖掘企业数据价值!

新一代商业智能BI工具

Copyright© 广州思迈特软件有限公司  粤ICP备11104361号

电话咨询

售前咨询
400-878-3819 转1

售后咨询
400-878-3819 转2
服务时间:工作日9:00-18:00

sales邮箱

商务咨询请联系邮箱

邮箱地址:sales@smartbi.com.cn