十個案例快速入門 Pandas
作者:Python數智工坊
通過以下十個案例的實踐演練,可以掌握Pandas的核心數據處理功能。建議使用Jupyter Notebook進行分步調試,結合.shape和.head()方法隨時驗證操作結果。?
本文通過十個常用的案例介紹,讓大家盡可能最快的熟悉pandas的使用,本文的十個案例包含詳細的代碼和注釋,涵蓋了pandas常用的一些使用場景。
環境要求:Python 3.8+,安裝Pandas庫
pip install pandas
示例1:創建/讀取數據
import pandas as pd
# 創建示例數據(字典格式)
data = {
'姓名': ['張三', '李四', '王五', '趙六'],
'年齡': [25, 30, 28, 35],
'城市': ['北京', '上海', '廣州', '深圳'],
'得分': [85.5, 90.0, 78.5, 92.3]
}
df = pd.DataFrame(data) # 將字典轉換為DataFrame
# 讀取外部文件(注:需要文件路徑)
# df = pd.read_csv('data.csv') # 讀取CSV
# df = pd.read_excel('data.xlsx') # 讀取Excel
print("數據集:")
print(df)
示例2:查看數據基本信息
# 顯示前3行數據
print(df.head(3)) # 默認顯示5行
# 顯示維度信息
print("數據維度(行數,列數):", df.shape)
# 顯示各字段數據類型
print("數據類型:\n", df.dtypes)
# 顯示統計摘要(僅數值列)
print("統計摘要:\n", df.describe())
示例3:數據篩選
# 篩選特定列
name_score = df[['姓名', '得分']] # 雙括號返回DataFrame
# 按行篩選(年齡大于28)
age_filter = df[df['年齡'] > 28] # 布爾篩選
# 多條件篩選(年齡>25且城市為北京)
complex_filter = df[(df['年齡'] > 25) & (df['城市'] == '北京')]
# 使用isin進行篩選
city_filter = df[df['城市'].isin(['北京', '廣州'])]
示例4:處理缺失值
# 生成含缺失值的數據
import numpy as np
data_with_nan = {
'A': [1, np.nan, 3],
'B': [4, 5, np.nan]
}
nan_df = pd.DataFrame(data_with_nan)
# 刪除包含缺失值的行
clean_df = nan_df.dropna() # 默認axis=0:刪除行
# 填充缺失值
filled_df = nan_df.fillna(0) # 用0填充
filled_mean = nan_df.fillna(nan_df.mean()) # 使用列均值填充
示例5:數據排序
# 按年齡升序排列
sorted_age = df.sort_values('年齡') # ascending=True默認升序
# 多重排序(先按得分降序,再按年齡升序)
multi_sorted = df.sort_values(['得分', '年齡'], ascending=[False, True])
示例6:數據分組聚合
# 按城市分組計算平均年齡
grouped = df.groupby('城市')['年齡'].mean()
# 多維度聚合(同時計算年齡均值和得分總和)
agg_result = df.groupby('城市').agg({
'年齡': 'mean',
'得分': 'sum'
})
示例7:數據合并
# 創建新數據集
new_data = {
'姓名': ['錢七', '孫八'],
'年齡': [29, 31],
'城市': ['杭州', '成都'],
'得分': [88.0, 84.5]
}
df_new = pd.DataFrame(new_data)
# 縱向合并(追加記錄)
combined = pd.concat([df, df_new], axis=0) # axis=0縱向合并
# 橫向合并(需共同字段)
other_info = pd.DataFrame({
'姓名': ['張三', '李四'],
'部門': ['技術部', '市場部']
})
merged = pd.merge(df, other_info, on='姓名')
示例8:時間序列處理
# 創建時間序列數據
date_rng = pd.date_range(start='2023-01-01', periods=5, freq='D')
time_df = pd.DataFrame({
'date': date_rng,
'value': [100, 115, 95, 110, 120]
})
# 設置日期索引
time_df.set_index('date', inplace=True)
# 重采樣(按周計算均值)
weekly_mean = time_df.resample('W').mean()
示例9:應用函數轉換
# 定義年齡分段函數
def age_group(age):
if age < 30:
return'青年'
elif age < 40:
return'中年'
else:
return'資深'
# 添加新列
df['年齡段'] = df['年齡'].apply(age_group)
# 使用lambda表達式轉換得分
df['得分等級'] = df['得分'].apply(lambda x: '優'if x >=90else'良')
示例10:保存處理結果
# 保存為CSV文件(不要保存索引)
df.to_csv('processed_data.csv', index=False)
# 保存為Excel文件
df.to_excel('processed_data.xlsx', index=False)
# 保存為JSON格式
df.to_json('processed_data.json', orient='records')
注意事項
- 文件操作時注意路徑的正確性。
- 使用inplace=True參數時操作會直接修改原數據。
- 合并數據時注意索引對齊問題。
- 分組操作后需使用聚合函數才能輸出有意義結果。
通過這10個案例的實踐演練,可以掌握Pandas的核心數據處理功能。建議使用Jupyter Notebook進行分步調試,結合.shape和.head()方法隨時驗證操作結果。
責任編輯:趙寧寧
來源:
Python數智工坊