一文詳解Python Pandas中67個最常用的數(shù)據(jù)處理函數(shù)
Pandas 是 Python 中最強大的數(shù)據(jù)處理庫之一,無論是數(shù)據(jù)分析、清洗還是可視化,都離不開它。本文整理了 67 個最常用的 Pandas 函數(shù),涵蓋了從數(shù)據(jù)導入、查看、清洗、選擇、排序、聚合到合并的全過程。建議收藏,隨時查閱!
1. 創(chuàng)建與導入數(shù)據(jù) (Creating & Loading Data)
數(shù)據(jù)分析的第一步通常是將數(shù)據(jù)加載到 DataFrame 中。
import pandas as pd
# 自己創(chuàng)建數(shù)據(jù)框,用于練習
pd.DataFrame()
# 從 CSV 文件導入數(shù)據(jù)
pd.read_csv('filename.csv')
# 從限定分隔符的文本文件導入數(shù)據(jù)
pd.read_table('filename.txt')
# 從 Excel 文件導入數(shù)據(jù)
pd.read_excel('filename.xlsx')
# 從 SQL 表/庫導入數(shù)據(jù)
pd.read_sql(query, connection_object)
# 從 JSON 格式的字符串導入數(shù)據(jù)
pd.read_json(json_string)
# 解析 URL、字符串或者 HTML 文件,抽取其中的 tables 表格
pd.read_html(url)
2. 導出數(shù)據(jù) (Exporting Data)
處理完數(shù)據(jù)后,我們通常需要將其保存為各種格式。
# 導出數(shù)據(jù)到 CSV 文件
df.to_csv('filename.csv')
# 導出數(shù)據(jù)到 Excel 文件
df.to_excel('filename.xlsx')
# 導出數(shù)據(jù)到 SQL 表
df.to_sql(table_name, connection_object)
# 以 Json 格式導出數(shù)據(jù)到文本文件
df.to_json('filename.json')
# 將多個數(shù)據(jù)幀寫入同一個工作簿的多個 sheet (工作表)
writer = pd.ExcelWriter('test.xlsx', index=False)
df1.to_excel(writer, sheet_name='單位')
writer.save() # 注意:在較新版本 Pandas 中,推薦使用 with pd.ExcelWriter(...) as writer: 語法
3. 查看與檢查數(shù)據(jù) (Inspecting Data)
在進行復雜操作前,先了解數(shù)據(jù)的基本結(jié)構(gòu)和概況。
# 查看 DataFrame 對象的前 n 行 df.head(n) # 查看 DataFrame 對象的最后 n 行 df.tail(n) # 查看行數(shù)和列數(shù) df.shape # 查看索引、數(shù)據(jù)類型和內(nèi)存信息 df.info() # 查看字段(首行)名稱 df.columns # 查看數(shù)值型列的匯總統(tǒng)計 df.describe() # 查看 Series 對象的唯一值和計數(shù) s.value_counts(dropna=False) # 查看 DataFrame 對象中每一列的唯一值和計數(shù) df.apply(pd.Series.value_counts) # 查看是否有缺失值 df.isnull().any() # 查看 column_name 字段數(shù)據(jù)重復的數(shù)據(jù)信息 df[df['column_name'].duplicated()] # 查看 column_name 字段數(shù)據(jù)重復的個數(shù) df[df['column_name'].duplicated()].count()
4. 數(shù)據(jù)選擇與索引 (Selecting & Indexing)
靈活地選取我們需要的數(shù)據(jù)子集。
# 根據(jù)列名,并以 Series 的形式返回列 df['col'] # 以 DataFrame 形式返回多列 df[['col1', 'col2']] # 按位置選取數(shù)據(jù) (Series) s.iloc[0] # 按索引選取數(shù)據(jù) (Series) s.loc['index_one'] # 返回第一行 df.iloc[0, :] # 返回第一列的第一個元素 df.iloc[0, 0] # 返回第一行(索引為默認的數(shù)字時,用法同 df.iloc),但需要注意的是 loc 是按索引, iloc 參數(shù)只接受數(shù)字參數(shù) df.loc[0, :] # 【已棄用】返回字段為 col1 和 col2 的前 5 條數(shù)據(jù) # 注意:.ix 在新版 Pandas 中已被移除,請使用 .loc 或 .iloc # df.ix[[:5], ["col1", "col2"]] # 選擇索引名稱為 5,字段名稱為 col1 的數(shù)據(jù) df.at[5, "col1"] # 選擇索引排序為 5,字段排序為 0 的數(shù)據(jù) df.iat[5, 0]
5. 數(shù)據(jù)清洗與轉(zhuǎn)換 (Cleaning & Transforming)
數(shù)據(jù)清洗是數(shù)據(jù)分析中最耗時的部分,掌握這些函數(shù)能事半功倍。
# 重命名列名(需要將所有列名列出,否則會報錯)
df.columns = ['a', 'b', 'c']
# 檢查 DataFrame 對象中的空值,并返回一個 Boolean 數(shù)組
pd.isnull(df)
# 檢查 DataFrame 對象中的非空值,并返回一個 Boolean 數(shù)組
pd.notnull(df)
# 刪除所有包含空值的行
df.dropna()
# 刪除所有包含空值的列
df.dropna(axis=1)
# 刪除所有小于 n 個非空值的行
df.dropna(axis=1, thresh=n)
# 用 x 替換 DataFrame 對象中所有的空值
df.fillna(value=x)
# 指定列填充缺失值
df['column_name'].fillna(x)
# 將 Series 中的數(shù)據(jù)類型更改為 float 類型
s.astype(float)
# 用 ‘one' 代替所有等于 1 的值
s.replace(1, 'one')
# 用 'one' 代替 1,用 'three' 代替 3
s.replace([1, 3], ['one', 'three'])
# 批量更改列名
df.rename(columns=lambda x: x + 1)
# 選擇性更改列名
df.rename(columns={'old_name': 'new_name'})
# 將某個字段設(shè)為索引,可接受列表參數(shù),即設(shè)置多個索引
df.set_index('column_one')
# 將索引設(shè)置為 col1 字段,并將索引新設(shè)置為 0, 1, 2...
df.reset_index() # 原文為 df.reset_index("col1"),通常直接調(diào)用或傳 drop=True
# 批量重命名索引
df.rename(index=lambda x: x + 1)
6. 排序 (Sorting)
讓數(shù)據(jù)有序排列,方便觀察趨勢。
# 對前 5 條數(shù)據(jù)進行索引排序
df.sort_index().loc[:5]
# 按照列 col1 排序數(shù)據(jù),默認升序排列
df.sort_values('col1')
# 按照列 col1 降序排列數(shù)據(jù)
df.sort_values('col2', ascending=False)
# 先按列 col1 升序排列,后按 col2 降序排列數(shù)據(jù)
df.sort_values(['col1', 'col2'], ascending=[True, False])
7. 分組與聚合 (Grouping & Aggregation)
數(shù)據(jù)透 視和統(tǒng)計分析的核心功能。
# 返回一個按列 col 進行分組的 Groupby 對象
df.groupby('col')
# 返回一個按多列進行分組的 Groupby 對象
df.groupby(['col1', 'col2'])
# 返回按列 col1 進行分組后,列 col2 的均值
df.groupby('col1')['col2'].agg('mean')
# agg 可以接受列表參數(shù),如 agg([len, np.mean])
# 創(chuàng)建一個按列 col1 進行分組,計算 col2 的最大值和 col3 的最大值、最小值的數(shù)據(jù)透 視表
df.pivot_table(index='col1', values=['col2', 'col3'], aggfunc={'col2': max, 'col3': [max, min]})
# 返回按列 col1 分組的所有列的均值
df.groupby('col1').agg(np.mean)
# 對特定列聚合
df.groupby('col1')['col2'].agg(['min', 'max'])
# 對 DataFrame 中的每一列應用函數(shù) np.mean
data.apply(np.mean)
# 對 DataFrame 中的每一行應用函數(shù) np.max
data.apply(np.max, axis=1)
# 通常與 groupby 連用,避免索引更改(返回與原表長度一致的序列)
df.groupby('col1')['col2'].transform("sum")
8. 合并與連接 (Merging & Joining)
將多個數(shù)據(jù)表整合成一張大表。
# 【已棄用】將 df2 中的行添加到 df1 的尾部
# 注意:.append() 在 Pandas 2.0+ 中已被移除,請使用 pd.concat()
# df1.append(df2)
pd.concat([df1, df2]) # 推薦做法
# 將 df2 中的列添加到 df1 的尾部,值為空的對應行與對應列都不要
df.concat([df1, df2], axis=1, join='inner')
# 對 df1 的列和 df2 的列執(zhí)行 SQL 形式的 join
# 默認按照索引來進行合并,如果 df1 和 df2 有共同字段時,會報錯
# 可通過設(shè)置 lsuffix, rsuffix 來進行解決
# 如果需要按照共同列進行合并,就要用到 set_index(col1)
df1.join(df2.set_index('col1'), on='col1', how='inner')
# 對 df1 和 df2 合并,按照 col1,方式為 outer
pd.merge(df1, df2, on='col1', how='outer')
# 與 df1.join(df2, how='outer') 效果相同
pd.merge(df1, df2, left_index=True, right_index=True, how='outer')
9.總結(jié)
這 67 個函數(shù)涵蓋了 Pandas 使用場景的 80% 以上。熟練掌握它們,你的數(shù)據(jù)處理效率將得到質(zhì)的飛躍!
Tips:
- 遇到報錯時,先檢查數(shù)據(jù)類型 (
df.info()) 和缺失值 (df.isnull())。 - 盡量使用向量化操作(如
apply,map, 直接運算),避免使用for循環(huán)遍歷 DataFrame。 - 注意 Pandas 版本更新,部分舊函數(shù)(如
ix,append)已被新函數(shù)替代。
到此這篇關(guān)于一文詳解Python Pandas中67個最常用的數(shù)據(jù)處理函數(shù)的文章就介紹到這了,更多相關(guān)Python Pandas函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解基于Transformer實現(xiàn)電影評論星級分類任務(wù)
這篇文章主要為大家介紹了詳解基于Transformer實現(xiàn)電影評論星級分類任務(wù)過程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04
python-opencv 中值濾波{cv2.medianBlur(src, ksize)}的用法
這篇文章主要介紹了python-opencv 中值濾波{cv2.medianBlur(src, ksize)}的用法,具有很好的參考價值,希望對大家有所幫助。2021-06-06
Python中二進制文件內(nèi)存映射技術(shù)的原理與應用詳解
這篇文章將深入探討Python中內(nèi)存映射技術(shù)的原理、用法和實際應用場景,從基礎(chǔ)概念到高級技巧,為讀者提供全面的專業(yè)指導,下面小編就來和大家詳細介紹一下吧2025-09-09
Python實現(xiàn)過濾單個Android程序日志腳本分享
這篇文章主要介紹了Python實現(xiàn)過濾單個Android程序日志腳本分享,本文講解了原理、實現(xiàn)代碼、使用方法、最新代碼等內(nèi)容,需要的朋友可以參考下2015-01-01
Python seek()和tell()函數(shù)的具體使用
本文主要介紹了Python seek()和tell()函數(shù)的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02

