在數據分析、數據清洗和可視化等領域,Python 無疑是最受歡迎的語言之一,而在 Python 的數據處理生態中,Pandas 是最核心、最基礎的庫之一。如果你接觸數據分析、機器學習、金融建模,或者只是想處理一些 Excel 表格,那么學會 Pandas 是你不可避免的一步。
本文將系統介紹 Pandas 的基礎知識,包括其核心數據結構、常用功能和實際應用示例,幫助你打下堅實的 Pandas 基礎。
一、Pandas 是什么?
Pandas 是一個基于 NumPy 構建的數據分析庫,由 Wes McKinney 在 2008 年開發。Pandas 的目標是提供靈活、高效、易于使用的數據結構和數據分析工具。
Pandas 的名字來源于“panel data”,即經濟學中的“面板數據”。
二、Pandas 的兩大核心數據結構
1. Series:一維標記數組
可以理解為帶標簽的一維數組,可以存儲任意類型的數據(整數、浮點數、字符串等)。
import pandas as pds = pd.Series([1, 3, 5, None, 6])
print(s)
輸出:
0 1.0
1 3.0
2 5.0
3 NaN
4 6.0
dtype: float64
特點:
-
自動生成索引(也可以自定義索引)
-
支持缺失值(NaN)
-
支持向量化操作
2. DataFrame:二維表格型數據結構
可以看作是由多個 Series 按列組成的二維表,類似 Excel 表格或者數據庫表。
data = {'姓名': ['張三', '李四', '王五'],'年齡': [25, 30, 28],'城市': ['北京', '上海', '廣州']
}
df = pd.DataFrame(data)
print(df)
輸出:
姓名 年齡 城市
0 張三 25 北京
1 李四 30 上海
2 王五 28 廣州
三、讀取與保存數據
Pandas 支持多種格式的數據讀寫:
# 讀取 CSV 文件
df = pd.read_csv('data.csv')# 寫入 CSV 文件
df.to_csv('output.csv', index=False)# 讀取 Excel 文件
df = pd.read_excel('data.xlsx')# 寫入 Excel 文件
df.to_excel('output.xlsx', index=False)# 讀取 JSON 文件
df = pd.read_json('data.json')
四、常用操作
1. 查看數據
df.head() # 查看前5行
df.tail(3) # 查看后3行
df.info() # 數據摘要信息
df.describe() # 數據統計摘要
2. 選擇數據
df['姓名'] # 選擇一列
df[['姓名', '城市']] # 選擇多列
df.iloc[0] # 按行號選擇第1行
df.loc[1, '年齡'] # 按標簽選取
3. 過濾數據
df[df['年齡'] > 27] # 年齡大于27的行
4. 修改數據
df['年齡'] = df['年齡'] + 1 # 所有年齡加1
df.loc[0, '城市'] = '深圳' # 修改單元格
五、缺失值處理
df.isnull() # 判斷缺失
df.dropna() # 刪除缺失值
df.fillna(0) # 填充缺失值
六、分組與聚合(GroupBy)
grouped = df.groupby('城市')
print(grouped['年齡'].mean()) # 每個城市的平均年齡
七、合并與拼接
拼接(上下或左右)
pd.concat([df1, df2], axis=0) # 縱向拼接
pd.concat([df1, df2], axis=1) # 橫向拼接
合并(類似 SQL 的 JOIN)
pd.merge(df1, df2, on='id', how='inner')
八、排序
df.sort_values(by='年齡') # 按年齡升序
df.sort_values(by='年齡', ascending=False) # 降序
九、應用函數
df['年齡'].apply(lambda x: x + 10) # 每個年齡加10
df.applymap(str) # 對整個 DataFrame 應用函數
十、實際案例:讀取 CSV 并統計分析
假設我們有一個名為 sales.csv
的銷售數據文件:
日期,銷售額,地區
2023-01-01,1000,北京
2023-01-02,1200,上海
2023-01-03,800,廣州
df = pd.read_csv('sales.csv')
print(df.groupby('地區')['銷售額'].sum())
輸出:
地區
上海 1200
北京 1000
廣州 800
Name: 銷售額, dtype: int64
結語
Pandas 是數據處理的瑞士軍刀,無論你是分析師、數據科學家,還是工程師,都值得深入學習。本文只是入門介紹,實際應用中 Pandas 的功能遠不止于此,比如時間序列分析、多重索引、高性能數據讀取等。
下一步建議深入學習:
-
Pandas 官方文檔:pandas documentation — pandas 2.2.3 documentation
-
結合 Matplotlib/Seaborn 進行可視化
-
實戰項目練習,例如 Kaggle 競賽