66個(gè)最常用的pandas數(shù)據(jù)分析函數(shù)
但是網(wǎng)上關(guān)于pandas的知識(shí)點(diǎn)比較散,分門別類的來介紹pandas的常用函數(shù),能夠滿足你對(duì)于pandas學(xué)習(xí)的所有需要,本文介紹的函數(shù)在實(shí)際中非常實(shí)用。

本文中,我們將使用如下縮寫:
df #任何pandas DataFrame對(duì)象s #任何pandas series對(duì)象
首先需要先導(dǎo)入2個(gè)庫:
import pandas as pdimport numpy as np
從各種不同的來源和格式導(dǎo)入數(shù)據(jù)
pd.read_csv(filename) # 從CSV文件pd.read_table(filename) # 從分隔的文本文件(例如CSV)中pd.read_excel(filename) # 從Excel文件pd.read_sql(query, connection_object) # 從SQL表/數(shù)據(jù)庫中讀取pd.read_json(json_string) # 從JSON格式的字符串,URL或文件中讀取。pd.read_html(url) # 解析html URL,字符串或文件,并將表提取到數(shù)據(jù)幀列表pd.read_clipboard() # 獲取剪貼板的內(nèi)容并將其傳遞給 read_table()pd.DataFrame(dict) # 從字典中,列名稱的鍵,列表中的數(shù)據(jù)的值
導(dǎo)出數(shù)據(jù)
使用以下命令將DataFrame導(dǎo)出為CSV,.xlsx,SQL或JSON。
df.to_csv(filename) # 寫入CSV文件df.to_excel(filename) # 寫入Excel文件df.to_sql(table_name, connection_object) # 寫入SQL表df.to_json(filename) # 以JSON格式寫入文件
創(chuàng)建測試對(duì)象
pd.DataFrame(np.random.rand(20,5)) # 5列20行隨機(jī)浮點(diǎn)數(shù)pd.Series(my_list) # 從一個(gè)可迭代的序列創(chuàng)建一個(gè)序列 my_listdf.index = pd.date_range('1900/1/30', periods=df.shape[0]) # 添加日期索引
查看、檢查數(shù)據(jù)
df.head(n) # DataFrame的前n行df.tail(n) # DataFrame的最后n行df.shape # 行數(shù)和列數(shù)df.info() # 索引,數(shù)據(jù)類型和內(nèi)存信息df.describe() # 數(shù)值列的摘要統(tǒng)計(jì)信息s.value_counts(dropna=False) # 查看唯一值和計(jì)數(shù)df.apply(pd.Series.value_counts) # 所有列的唯一值和計(jì)數(shù)
數(shù)據(jù)選取
使用這些命令選擇數(shù)據(jù)的特定子集。df[col] # 返回帶有標(biāo)簽col的列df[[col1, col2]] # 返回列作為新的DataFrames.iloc[0] # 按位置選擇s.loc['index_one'] # 按索引選擇df.iloc[0,:] # 第一行df.iloc[0,0] # 第一欄的第一元素
數(shù)據(jù)清理
使用這些命令可以執(zhí)行各種數(shù)據(jù)清理任務(wù)。
df.columns = ['a','b','c'] # 重命名列pd.isnull() # 空值檢查,返回Boolean Arrraypd.notnull() # 與pd.isnull() 相反df.dropna() # 刪除所有包含空值的行df.dropna(axis=1) # 刪除所有包含空值的列df.dropna(axis=1,thresh=n) # 刪除所有具有少于n個(gè)非null值的行df.fillna(x) # 將所有空值替換為xs.fillna(s.mean()) # 用均值替換所有空值(均值可以用統(tǒng)計(jì)模塊中的幾乎所有函數(shù)替換 )s.astype(float) # 將系列的數(shù)據(jù)類型轉(zhuǎn)換為floats.replace(1,'one') # 1 用 'one's.replace([1,3],['one','three']) # 替換所有等于的值 替換為所有1 'one' ,并 3 用 'three'df.rename(columns=lambda x: x + 1) # 列的重命名df.rename(columns={'old_name': 'new_ name'})# 選擇性重命名df.set_index('column_one') # 更改索引df.rename(index=lambda x: x + 1) # 大規(guī)模重命名索引
篩選,排序和分組依據(jù)
使用這些命令可以對(duì)數(shù)據(jù)進(jìn)行過濾,排序和分組。
df[df[col] > 0.5] # 列 col 大于 0.5df[(df[col] > 0.5) & (df[col] < 0.7)] # 小于 0.7 大于0.5的行df.sort_values(col1) # 按col1升序?qū)χ颠M(jìn)行排序df.sort_values(col2,ascending=False) # 按col2 降序?qū)χ颠M(jìn)行 排序df.sort_values([col1,col2],ascending=[True,False]) #按 col1 升序排序,然后 col2 按降序排序df.groupby(col) #從一個(gè)欄返回GROUPBY對(duì)象 df.groupby([col1,col2]) # 返回來自多個(gè)列的groupby對(duì)象df.groupby(col1)[col2] # 返回中的值的平均值 col2,按中的值分組 col1 (平均值可以用統(tǒng)計(jì)模塊中的幾乎所有函數(shù)替換 )df.pivot_table(index=col1,values=[col2,col3],aggfunc=mean) # 創(chuàng)建一個(gè)數(shù)據(jù)透視表組通過 col1 ,并計(jì)算平均值的 col2 和 col3df.groupby(col1).agg(np.mean) # 在所有列中找到每個(gè)唯一col1 組的平均值df.apply(np.mean) #np.mean() 在每列上應(yīng)用該函數(shù)nf.apply(np.max,axis=1) # np.max() 在每行上應(yīng)用功能
數(shù)據(jù)合并
使用這些命令可以將多個(gè)數(shù)據(jù)幀組合為一個(gè)數(shù)據(jù)幀。
df1.append(df2) # 將df2添加 df1的末尾 (各列應(yīng)相同)pd.concat([df1, df2],axis=1) # 將 df1的列添加到df2的末尾 (行應(yīng)相同)df1.join(df2,on=col1,how='inner') # SQL樣式將列 df1 與 df2 行所在的列col 具有相同值的列連接起來。'how'可以是一個(gè) 'left', 'right', 'outer', 'inner'
數(shù)據(jù)統(tǒng)計(jì)
使用這些命令來執(zhí)行各種統(tǒng)計(jì)測試。(這些也都可以應(yīng)用于系列。)
df.describe() # 數(shù)值列的摘要統(tǒng)計(jì)信息df.mean() # 返回均值的所有列df.corr() # 返回DataFrame中各列之間的相關(guān)性df.count() # 返回非空值的每個(gè)數(shù)據(jù)幀列中的數(shù)字df.max() # 返回每列中的最高值df.min() # 返回每一列中的最小值df.median() # 返回每列的中位數(shù)df.std() # 返回每列的標(biāo)準(zhǔn)偏差
本文翻譯自文章:https://www.dataquest.io/blog/pandas-cheat-sheet/,同時(shí)添加了部分注解。評(píng)論
圖片
表情
