Pandas基础命令速查表

最近用到Pandas,想查几个函数,结果翻来翻去都是那几个豆腐干大小的图片,我真是缓缓地打出一个?难道你能对着一张图片ctrl + F5?

于是赶紧安排一下官方库的翻译。这不,老铁,来了~


本文翻译整理自Pandas Cheat Sheet - Python for DataScience

点这里一键fork >>Pandas基础命令速查清单

速查表内容概要

[缩写解释 & 库的导入]

[数据的导入]

[数据的导出]

[创建测试对象]

[数据的查看与检查]

[数据的选取]

[数据的清洗]

[数据的过滤(filter),排序(sort)和分组(groupby)]

[数据的连接(join)与组合(combine)]

[数据的统计]

缩写解释 & 库的导入

df --- 任意的pandas DataFrame(数据框)对象

s --- 任意的pandas Series(数组)对象

pandas和numpy是用Python做数据分析最基础且最核心的库

import pandas as pd # 导入pandas库并简写为pd

import numpy as np # 导入numpy库并简写为np

数据的导入

pd.read_csv(filename) # 导入csv格式文件中的数据

pd.read_table(filename) # 导入有分隔符的文本 (如TSV) 中的数据

pd.read_excel(filename) # 导入Excel格式文件中的数据

pd.read_sql(query, connection_object) # 导入SQL数据表/数据库中的数据

pd.read_json(json_string) # 导入JSON格式的字符,URL地址或者文件中的数据

pd.read_html(url) # 导入经过解析的URL地址中包含的数据框 (DataFrame) 数据

pd.read_clipboard() # 导入系统粘贴板里面的数据

pd.DataFrame(dict) # 导入Python字典 (dict) 里面的数据,其中key是数据框的表头,value是数据框的内容。

数据的导出

df.to_csv(filename) # 将数据框 (DataFrame)中的数据导入csv格式的文件中

df.to_excel(filename) # 将数据框 (DataFrame)中的数据导入Excel格式的文件中

df.to_sql(table_name,connection_object) # 将数据框 (DataFrame)中的数据导入SQL数据表/数据库中

df.to_json(filename) # 将数据框 (DataFrame)中的数据导入JSON格式的文件中

创建测试对象

pd.DataFrame(np.random.rand(10,5)) # 创建一个5列10行的由随机浮点数组成的数据框

DataFrame

pd.DataFrame(np.random.rand(10,5))

pd.Series(my_list) # 从一个可迭代的对象 my_list 中创建一个数据组

my_list = ['Kesci',100,'欢迎来到科赛网']

pd.Series(my_list)

df.index = pd.date_range('2017/1/1',periods=df.shape[0]) # 添加一个日期索引 index

df = pd.DataFrame(np.random.rand(10,5))

df.index = pd.date_range('2017/1/1',periods=df.shape[0])

df

数据的查看与检查

df.head(n) # 查看数据框的前n行

df = pd.DataFrame(np.random.rand(10,5))

df.head(3)

df.tail(n) # 查看数据框的最后n行

df = pd.DataFrame(np.random.rand(10,5))

df.tail(3)

df.shape # 查看数据框的行数与列数

df = pd.DataFrame(np.random.rand(10,5))

df.shape

df.info() # 查看数据框(DataFrame) 的索引、数据类型及内存信息

df = pd.DataFrame(np.random.rand(10,5))

df.info()

df.describe() # 对于数据类型为数值型的列,查询其描述性统计的内容

df.describe()

s.value_counts(dropna=False) # 查询每个独特数据值出现次数统计

s = pd.Series([1,2,3,3,4,np.nan,5,5,5,6,7])

s.value_counts(dropna=False)

df.apply(pd.Series.value_counts) # 查询数据框 (Data Frame) 中每个列的独特数据值出现次数统计

数据的选取

df[col] # 以数组Series 的形式返回选取的列

df =pd.DataFrame(np.random.rand(5,5),columns=list('ABCDE'))

df['C']

df[[col1, col2]] # 以新的数据框(DataFrame)的形式返回选取的列

df =pd.DataFrame(np.random.rand(5,5),columns=list('ABCDE'))

df[['B','E']]

s.iloc[0] # 按照位置选取

s =pd.Series(np.array(['I','Love','Data']))

s.iloc[0]

s.loc['index_one'] # 按照索引选取

s =pd.Series(np.array(['I','Love','Data']))

s.loc[1]

df.iloc[0,:] # 选取第一行

df =pd.DataFrame(np.random.rand(5,5),columns=list('ABCDE'))

df.iloc[0,:]

df.iloc[0,0] # 选取第一行的第一个元素

df = pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))

df.iloc[0,0]

数据的清洗

df.columns = ['a','b'] # 重命名数据框的列名称

df =pd.DataFrame({'A':np.array([1,np.nan,2,3,6,np.nan]),

                                'B':np.array([np.nan,4,np.nan,5,9,np.nan]),

                                'C':'foo'})

df.columns = ['a','b','c']

df

pd.isnull() # 检查数据中空值出现的情况,并返回一个由布尔值(True,Fale)组成的列

df =pd.DataFrame({'A':np.array([1,np.nan,2,3,6,np.nan]),

                                'B':np.array([np.nan,4,np.nan,5,9,np.nan]),

                                'C':'foo'})

pd.isnull(df)

pd.notnull() # 检查数据中非空值出现的情况,并返回一个由布尔值(True,False)组成的列

df =pd.DataFrame({'A':np.array([1,np.nan,2,3,6,np.nan]),

                                'B':np.array([np.nan,4,np.nan,5,9,np.nan]),

                                'C':'foo'})

pd.notnull(df)

df.dropna() # 移除数据框 DataFrame 中包含空值的行

df =pd.DataFrame({'A':np.array([1,np.nan,2,3,6,np.nan]),

                                'B':np.array([np.nan,4,np.nan,5,9,np.nan]),

                                'C':'foo'})

df.dropna()

df.dropna(axis=1) # 移除数据框 DataFrame 中包含空值的列

df =pd.DataFrame({'A':np.array([1,np.nan,2,3,6,np.nan]),

                                'B':np.array([np.nan,4,np.nan,5,9,np.nan]),

                                'C':'foo'})

df.dropna(axis=1)

df.dropna(axis=1,thresh=n) # 移除数据框df中空值个数不超过n的行

df =pd.DataFrame({'A':np.array([1,np.nan,2,3,6,np.nan]),

                                'B':np.array([np.nan,4,np.nan,5,9,np.nan]),

                                'C':'foo'})

test = df.dropna(axis=1,thresh=1)

test

df.fillna(x) # 将数据框 DataFrame 中的所有空值替换为 x

df =pd.DataFrame({'A':np.array([1,np.nan,2,3,6,np.nan]),

                                'B':np.array([np.nan,4,np.nan,5,9,np.nan]),

                                'C':'foo'})

df.fillna('Test')

s.fillna(s.mean()) -> 将所有空值替换为平均值

s = pd.Series([1,3,5,np.nan,7,9,9])

s.fillna(s.mean())

s.astype(float) # 将数组(Series)的格式转化为浮点数

s = pd.Series([1,3,5,np.nan,7,9,9])

s.astype(float)

s.replace(1,'one') # 将数组(Series)中的所有1替换为'one'

s = pd.Series([1,3,5,np.nan,7,9,9])

s.replace(1,'one')

s.replace([1,3],['one','three']) # 将数组(Series)中所有的1替换为'one',所有的3替换为'three'

s = pd.Series([1,3,5,np.nan,7,9,9])

s.replace([1,3],['one','three'])

df.rename(columns=lambda x: x + 2) # 将全体列重命名

df = pd.DataFrame(np.random.rand(4,4))

df.rename(columns=lambda x: x+ 2)

df.rename(columns={'old_name': 'new_name'}) # 将选择的列重命名

df =pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))

df.rename(columns={'A':'newA','C':'newC'})

df.set_index('column_one') # 改变索引

df =pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))

df.set_index('B')

df.rename(index = lambda x: x+ 1) # 改变全体索引

df = pd.DataFrame(np.random.rand(10,5))

df.rename(index = lambda x: x+ 1)

数据的过滤(filter),排序(sort)和分组(groupby)

df[df[col] > 0.5] # 选取数据框df中对应行的数值大于0.5的全部列

df =pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))

df[df['A'] > 0.5]

df[(df[col] > 0.5) & (df[col] <0.7)] # 选取数据框df中对应行的数值大于0.5,并且小于0.7的全部列

df =pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))

df[(df['C'] > 0.5) & (df['D'] <0.7)]

df.sort_values(col1) # 按照数据框的列col1升序(ascending)的方式对数据框df做排序

df =pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))

df.sort_values('E')

df.sort_values(col2,ascending=False) # 按照数据框的列col2降序(descending)的方式对数据框df做排序

df =pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))

df.sort_values('A',ascending=False)

df.sort_values([col1,col2],ascending=[True,False]) # 按照数据框的列col1升序,col2降序的方式对数据框df做排序

df =pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))

df.sort_values(['A','E'],ascending=[True,False])

df.groupby(col) # 按照某列对数据框df做分组

df = pd.DataFrame({'A':np.array(['foo','foo','foo','foo','bar','bar']),

                                'B':np.array(['one','one','two','two','three','three']),

                                'C':np.array(['small','medium','large','large','small','small']),

                                'D':np.array([1,2,2,3,3,5])})

df.groupby('A').count()

df.groupby([col1,col2]) # 按照列col1和col2对数据框df做分组

df =pd.DataFrame({'A':np.array(['foo','foo','foo','foo','bar','bar']),

                                'B':np.array(['one','one','two','two','three','three']),

                                'C':np.array(['small','medium','large','large','small','small']),

                                'D':np.array([1,2,2,3,3,5])})

df.groupby(['B','C']).sum()

df.groupby(col1)[col2].mean() # 按照列col1对数据框df做分组处理后,返回对应的col2的平均值

df =pd.DataFrame({'A':np.array(['foo','foo','foo','foo','bar','bar']),

                                'B':np.array(['one','one','two','two','three','three']),

                                'C':np.array(['small','medium','large','large','small','small']),

                                'D':np.array([1,2,2,3,3,5])})

df.groupby('B')['D'].mean()

df.pivot_table(index=col1,values=[col2,col3],aggfunc=mean)

# 做透视表,索引为col1,针对的数值列为col2和col3,分组函数为平均值

df =pd.DataFrame({'A':np.array(['foo','foo','foo','foo','bar','bar']),

                                'B':np.array(['one','one','two','two','three','three']),

                                'C':np.array(['small','medium','large','large','small','small']),

                                'D':np.array([1,2,2,3,3,5])})

df.pivot_table(df,index=['A','B'],columns=['C'],aggfunc=np.sum)

df.groupby(col1).agg(np.mean) # 返回按列col1分组的所有列的均值

df =pd.DataFrame({'A':np.array(['foo','foo','foo','foo','bar','bar']),

                                'B':np.array(['one','one','two','two','three','three']),

                                'C':np.array(['small','medium','large','large','small','small']),

                                'D':np.array([1,2,2,3,3,5])})

df.groupby('A').agg(np.mean)

df.apply(np.mean) # 对数据框df的每一列求平均值

df = pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))

df.apply(np.mean)

df.apply(np.max,axis=1) # 对数据框df的每一行求最大值

df =pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))

df.apply(np.max,axis=1)

数据的连接(join)与组合(combine)

df1.append(df2) # 在数据框df2的末尾添加数据框df1,其中df1和df2的列数应该相等

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2','A3'],

                                    'B': ['B0', 'B1', 'B2','B3'],

                                    'C': ['C0', 'C1', 'C2','C3'],

                                    'D': ['D0', 'D1', 'D2','D3']},index=[0, 1, 2, 3])

df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6','A7'],

                                    'B': ['B4', 'B5', 'B6','B7'],

                                    'C': ['C4', 'C5', 'C6','C7'],

                                    'D': ['D4', 'D5', 'D6','D7']},index=[4, 5, 6, 7])

df1.append(df2)

pd.concat([df1, df2],axis=1) # 在数据框df1的列最后添加数据框df2,其中df1和df2的行数应该相等

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2','A3'],

                                    'B': ['B0', 'B1', 'B2','B3'],

                                    'C': ['C0', 'C1', 'C2','C3'],

                                    'D': ['D0', 'D1', 'D2','D3']},index=[0, 1, 2, 3])

df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6','A7'],

                                    'B': ['B4', 'B5', 'B6','B7'],

                                    'C': ['C4', 'C5', 'C6','C7'],

                                    'D': ['D4', 'D5', 'D6','D7']},index=[4, 5, 6, 7])

pd.concat([df1,df2],axis=1)

df1.join(df2,on=col1,how='inner') # 对数据框df1和df2做内连接,其中连接的列为col1

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2','A3'],

                                   'B': ['B0', 'B1', 'B2','B3'],

                                    'key': ['K0', 'K1', 'K0','K1']})

df2 = pd.DataFrame({'C': ['C0', 'C1'],

                                   'D': ['D0', 'D1']},index=['K0', 'K1'])

df1.join(df2, on='key')

数据的统计

df.describe() # 得到数据框df每一列的描述性统计

df =pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))

df.describe()

df.mean() # 得到数据框df中每一列的平均值

df = pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))

df.mean()

df.corr() # 得到数据框df中每一列与其他列的相关系数

df =pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))

df.corr()

df.count() # 得到数据框df中每一列的非空值个数

df =pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))

df.count()

df.max() # 得到数据框df中每一列的最大值

df =pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))

df.max()

df.min() # 得到数据框df中每一列的最小值

df = pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))

df.min()

df.median() # 得到数据框df中每一列的中位数

df =pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))

df.median()

df.std() # 得到数据框df中每一列的标准差

df =pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))

df.std()

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容