1. 程式人生 > 其它 >pandas常用函式整理

pandas常用函式整理

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常用函式