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时有最大的弹性。
以上是思迈特软件的一些技术分享,心愿对您有所帮忙!
发表回复