標籤:

Pandas基礎命令速查清單

Pandas基礎命令速查清單

4 人贊了文章

本文翻譯整理自Pandas Cheat Sheet - Python for DataScience,你可登錄科賽 kesci,在K-Lab工具中實踐速查清單里使用的代碼。

項目鏈接:Pandas基礎命令速查清單

速查表內容概要

  • [縮寫解釋 & 庫的導入]
  • [數據的導入]
  • [數據的導出]
  • [創建測試對象]
  • [數據的查看與檢查]
  • [數據的選取]
  • [數據的清洗]
  • [數據的過濾(filter),排序(sort)和分組(groupby)]
  • [數據的連接(join)與組合(combine)]
  • [數據的統計]

縮寫解釋 & 庫的導入

df --- 任意的pandas DataFrame(數據框)對象

s --- 任意的pandas Series(數組)對象

pandas和numpy是用Python做數據分析最基礎且最核心的庫

import pandas as pd # 導入pandas庫並簡寫為pdimport 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)

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()

推薦閱讀:

Tableau 4 | 數據猿的理想生存地在哪裡呀在哪裡
千里之行始於足下
Prime漲價了?趕緊買Amazon股票!
P3-用 Tableau 來做電影數據可視化

TAG:數據分析 |