pandas常用函式整理
阿新 • • 發佈:2021-08-08
Pandas是基於NumPy的一種工具,專門用於解決資料分析任務。Pandas提供了大量便於快速處理資料的函式和方法,本文將其中常用的部分進行彙總記錄。
1. 檔案處理
# 讀取檔案 df = pd.read_csv(path='file.csv') """ 引數: header=None # 檔案中不包含列名,df預設為0, 1, 2, 3... names=['A', 'B', 'c', ...] # 自定義列名 skiprows=[0, 1, 2] # 需要跳過的行號,從檔案頭0開始 nrows=N # 需要讀取的行數 chunksize=M # 每M次迭代一次,返回TextFileReader型別,用於大檔案 encoding=None # 'ansi', 'utf-8', 'big5' """ dfex = pd.read_excel('file.xlsx', sheetname=[0, 1]) # 讀取多個sheet頁,返回df字典 # 儲存檔案 df.to_csv('./data/data_extracted.csv', encoding='gbk', index=None) # 合併檔案 pd.merge(df1, df2, on='common_col', how='inner', sort=True) # 按照公共列合併兩個DataFrame,inner/outer為交集/並集 pd.merge(df1, df2, left_on='col1', right_on='col2') # df1,df2無公共列名,需指定兩邊的參考列
2. 資料檢視
# 資料檢視 df.shape # 檢視資料維度 df.head(n=N) # 前N行 df.tail(n=M) # 後M行 df.values() # 值的二維陣列,numpy.ndarray. 推薦使用df.to_numpy() df.columns # 列明,可以直接通過賦值修改 df.index # 索引名,不可以直接賦值修改 df.reindex(index=['row1', 'row2'], columns=['col1', 'col2']) # 根據新索引重新排序 # 資料選擇 df[m:n] df[df['col1'] > 1] # 選取滿足條件的行 df.query('col1 > 1') # 選取滿足條件的行 df.iloc[m:n] # 根據index選取行或列,m-(n-1)行 df.loc['1':'m', 'col1':'coln'] # 根據index名稱和columns選取區域,1-m行1-n列
3. 資料處理
# 重複、nan處理 df.duplicated() # 返回各行是否是上一行的重複 df.drop_duplicates() # 刪除重複行,可根據列過濾 df.fillna(0) # 實數0填充nan df.dropna(axis=0, how='all') # 刪除值全為nan的行 (axis:0/1, how:'all'/'any') # 刪除 del df['col'] # 直接刪除某一列 df.drop(list(range(5)), axis=0) # 刪除前5行 df.drop(['col1', 'col2'], axis=1) # 刪除指定列 new_index = df.reset_index(drop=False) # drop=True時重置df的索引 # 行列index重新命名 df.rename(index={'row1':'A'}, columns={'col1':'A1'} df.replace(20, 30) # 將20替換為30 df['col1'].map(func) # Series.map, 只對列進行函式轉換 df.stack() # 將二維資料壓縮為一維,按屬性組合: rows, cols -> (row * cols), 1 df.unstack() # 如果某一列具有較少類別,就把這些類別拉出來做為列 df.pivot() # 將資料集壓扁
4. 資料運算與排序
df.T # DataFrame轉置
df1 + df2 # 按照索引和列相加,得到並集,NaN填充
df * N # 所有元素乘以N
df.sort_index(axis=0, ascending=True) # 按行索引升序排列
df.sort_index(by=['col1', 'col2']) # 按指定列優先排序
參考文獻
[1] pandas常用函式