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行的由隨機浮點數組成的數據框
DataFramepd.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
http://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替換為threes = 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:數據分析 |