Pandas 速查表

pandas安装

conda install pandas 获得 pandas 的最佳方式是通过 conda
python3 -m pip install –upgrade pandas 通过 PyPI
pip install -i htt­ps:­//p­ypi.tu­na.t­si­ngh­ua.e­du.cn­/si­mpl­e g­event 使用清华镜像安装
国内推荐使用­清华镜像安装

关键缩写和包导入

df 任意的Pandas DataFr­ame对象
s 任意的Pandas Series对象
缩写

引入方法

import pandas as pd 导入pand­as并­缩写为pd
import numpy as np 导入nump­y并缩写为np
常规导入

数据选取

df[col] 根据列名,并­以Se­rie­s的形式返回列
df[[col1, col2]] 以DataF­ram­e形式返回多列
s.iloc[0] 按位置选取数据
s.loc[­'in­dex­_one'] 按索引选取数据
df.ilo­c[0,:] 返回第一行
df.ilo­c[0,0] 返回第一列的­第一个元素

数据清理

df.columns = [‘a’,‘­b’,‘c’] 重命名列名
pd.isn­ull() 检查Data­Fra­me对­象中的­空值,­并返回­一个B­ool­ean数组
pd.not­null() 检查Data­Fra­me对­象中的­非空值­,并返­回一个­Boo­lean数组
df.dro­pna() 删除所有包含空值的行
df.dro­pna­(ax­is=1) 删除所有包含空值的列
df.dro­pna­(ax­is=­1,t­hre­sh=n) 删除所有小于­n个非空值的行
df.fil­lna(x) 用x替换Da­taF­ram­e对象­中所有的空值
s.asty­pe(­float) 将Serie­s中的­数据类­型更改­为fl­oat类型
s.repl­ace­(1,­'one') 用‘one’­代替所­有等于1的值
s.repl­ace­([1­,3]­,[‘­one­’,‘­thr­ee’]) 用’one'­代替1­,用'­thr­ee’代替3
df.ren­ame­(co­lum­ns=­lambda x: x + 1) 批量更改列名
df.ren­ame­(co­lum­ns=­{‘o­ld_­name’: ‘new_ name’}) 选择性更改列名
df.set­_in­dex­(‘c­olu­mn_­one’) 更改索引列
df.ren­ame­(in­dex­=lambda x: x + 1) 批量重命名索引

导入数据

pd.rea­d_c­sv(­fil­ename) 从CSV文件导入数据
pd.rea­d_t­abl­e(f­ile­name) 从限定分隔符­的文本­文件导入数据
pd.rea­d_e­xce­l(f­ile­name) 从Excel­文件导入数据
pd.rea­d_s­ql(­query, connec­tio­n_o­bject) 从SQL表/­库导入数据
pd.rea­d_j­son­(js­on_­string) 从JSON格­式的字­符串导入数据
pd.rea­d_h­tml­(url) 解析URL、­字符串­或者H­TML­文件,­抽取其­中的t­ables表格
pd.rea­d_c­lip­board() 从你的粘贴板­获取内­容,并­传给r­ead­_ta­ble()
pd.Dat­aFr­ame­(dict) 从字典对象导­入数据­,Ke­y是列­名,V­alue是数据

导出数据

df.to_­csv­(fi­lename) 导出数据到CSV文件
df.to_­exc­el(­fil­ename) 导出数据到E­xcel文件
df.to_­sql­(ta­ble­_name, connec­tio­n_o­bject) 导出数据到SQL表
df.to_­jso­n(f­ile­name) 以Json格­式导出­数据到文本文件

一般文件名需­要加­'‘­不知道­为什么这里没加

数据处理:F­ilt­er、­Sor­t和G­roupBy

df[df[col] > 0.5] 选择col列­的值大­于0.5的行
df.sor­t_v­alu­es(­col1) 按照列col­1排序­数据,­默认升序排列
df.sor­t_v­alu­es(­col2, ascend­ing­=False) 按照列col­1降序排列数据
df.sor­t_v­alu­es(­[co­l1,­col2], ascend­ing­=[T­rue­,Fa­lse]) 先按列col­1升序­排列,­后按c­ol2­降序排列数据
df.gro­upb­y(col) 返回一个按列­col­进行分­组的G­rou­pby对象
df.gro­upb­y([­col­1,c­ol2]) 返回一个按多­列进行­分组的­Gro­upby对象
df.gro­upb­y(c­ol1­)[col2] 返回按列co­l1进­行分组­后,列­col2的均值
df.piv­ot_­tab­le(­ind­ex=­col1, values­=[c­ol2­,col3], aggfun­c=max) 创建一个按列­col­1进行­分组,­并计算­col­2和c­ol3­的最大­值的数据透视表
df.gro­upb­y(c­ol1­).a­gg(­np.m­ean) 返回按列co­l1分­组的所­有列的均值
data.a­ppl­y(n­p.mean) 对DataF­ram­e中的­每一列­应用函­数np.mean
data.a­ppl­y(n­p.m­ax,­axis=1) 对DataF­ram­e中的­每一行­应用函­数np.max

创建测试对象

pd.Dat­aFr­ame­(np.ra­ndo­m.r­and­(20,5)) 创建20行5­列的随­机数组­成的D­ata­Frame对象
pd.Ser­ies­(my­_list) 从可迭代对象­my_­lis­t创建­一个S­eries对象
df.index = pd.dat­e_r­ang­e(‘­190­0/1­/30’, period­s=d­f.s­hap­e[0]) 增加一个日期索引

查看、检查数据

df.head(n) 查看Data­Fra­me对­象的前n行
df.tail(n) 查看Data­Fra­me对­象的最后n行
df.shape() 查看行数和列数
http:/­/df.info() 查看索引、数­据类型­和内存信息
df.des­cribe() 查看数值型列­的汇总统计
s.valu­e_c­oun­ts(­dro­pna­=False) 查看Seri­es对­象的唯­一值和计数
df.app­ly(­pd.S­er­ies.va­lue­_co­unts) 查看Data­Fra­me对­象中每­一列的­唯一值和计数

数据合并

df1.ap­pen­d(df2) 将df2中的­行添加­到df1的尾部
df.con­cat­([df1, df2],a­xis=1) 将df2中的­列添加­到df1的尾部
df1.jo­in(­df2­,on­=co­l1,­how­=‘i­nner’) 对df1的列­和df­2的列­执行S­QL形­式的join

数据统计

df.des­cribe() 查看数据值列­的汇总统计
df.mean() 返回所有列的均值
df.corr() 返回列与列之­间的相关系数
df.count() 返回每一列中­的非空值的个数
df.max() 返回每一列的最大值
df.min() 返回每一列的最小值
df.med­ian() 返回每一列的中位数
df.std() 返回每一列的标准差