文章目錄
- 人工智能之數據分析 Pandas
- 前言
- 一、數據創建與讀取
- 二、數據基本信息查看
- 三、數據選擇與篩選
- 四、排序(Sorting)
- 自定義排序示例:
- 五、缺失值處理
- 六、去重與唯一值
- 七、分組與聚合(GroupBy + Agg)
- 1. 基礎聚合
- 2. 命名聚合(推薦)
- 3. 常用聚合函數
- 4. 高級方法
- 八、數據變換與應用
- 九、字符串與時間操作
- 字符串(`.str` 訪問器)
- 時間序列(`.dt` 訪問器)
- 十、數據合併與重塑
- 透視表示例:
- 十一、性能與工程建議
- 十二、高頻函數速查表(一張圖掌握)
- ✅ 總結
- 後續
前言
本文將Pandas 中最常用、最核心的函數與操作 進行系統性整合與分類整理,涵蓋 數據創建、查看、篩選、排序、聚合、變換、合併、缺失值處理、字符串/時間操作 等全鏈路分析場景。內容結構清晰、示例簡潔,便於學習與速查。
一、數據創建與讀取
|
功能
|
函數/方法
|
示例
|
|
創建 DataFrame
|
|
|
|
從字典創建
|
同上
|
|
|
從 CSV 讀取
|
|
|
|
寫入 CSV
|
|
|
|
從 Excel 讀取
|
|
|
|
寫入 Excel
|
|
|
|
從 JSON 讀取
|
|
|
二、數據基本信息查看
|
功能
|
函數/屬性
|
説明
|
|
前幾行
|
|
快速預覽
|
|
後幾行
|
|
查看末尾
|
|
形狀
|
|
|
|
列名
|
|
返回 Index 對象
|
|
行索引
|
|
默認 RangeIndex
|
|
數據類型
|
|
每列 dtype
|
|
內存與非空統計
|
|
包含缺失值、內存佔用
|
|
描述性統計
|
|
數值列的均值、std、分位數等
|
|
唯一值數量
|
|
每列去重計數
|
|
全錶轉置
|
|
行列互換
|
三、數據選擇與篩選
|
功能
|
方法
|
示例
|
|
選列(Series)
|
|
|
|
選多列(DataFrame)
|
|
注意雙括號
|
|
按標籤選行/列
|
|
|
|
按位置選行/列
|
|
|
|
布爾索引
|
|
|
|
條件查詢(推薦)
|
|
|
|
是否包含
|
|
|
⚠️ 避坑:避免鏈式賦值(如
df[cond]['col'] = x),應使用.loc[cond, 'col'] = x
四、排序(Sorting)
|
功能
|
函數
|
示例
|
|
按值排序
|
|
|
|
多列排序
|
同上
|
|
|
按索引排序
|
|
|
|
自定義順序
|
|
見下文
|
自定義排序示例:
df['部門'] = pd.Categorical(df['部門'], categories=['技術', '產品', '銷售'], ordered=True)
df.sort_values('部門')
五、缺失值處理
|
功能
|
函數
|
説明
|
|
判斷缺失
|
|
返回布爾 DataFrame
|
|
非缺失判斷
|
|
取反
|
|
刪除缺失行
|
|
|
|
刪除缺失列
|
|
|
|
填充缺失值
|
|
|
|
向前/後填充
|
|
時間序列常用
|
|
替換特定值為 NaN
|
|
六、去重與唯一值
|
功能
|
函數
|
示例
|
|
刪除重複行
|
|
全行比較
|
|
按列去重
|
|
|
|
值頻次統計
|
|
Series 方法
|
|
百分比頻次
|
|
七、分組與聚合(GroupBy + Agg)
1. 基礎聚合
df.groupby('部門')['工資'].mean()
df.groupby('部門').agg({'工資': 'mean', '姓名': 'count'})
2. 命名聚合(推薦)
df.groupby('部門', as_index=False).agg(
平均工資=('工資', 'mean'),
人數=('姓名', 'count'),
最高薪=('工資', 'max')
)
3. 常用聚合函數
|
函數
|
説明
|
|
|
求和、均值、中位數
|
|
|
極值
|
|
|
標準差、方差
|
|
|
非空計數
|
|
|
唯一值數量
|
|
|
首/末值
|
4. 高級方法
|
方法
|
用途
|
|
|
返回與原表同 shape,用於組內標準化
|
|
|
自定義複雜邏輯(性能較低)
|
|
|
過濾滿足條件的組(如 |
八、數據變換與應用
|
功能
|
方法
|
示例
|
|
列向量化運算
|
直接操作
|
|
|
應用函數(列/行)
|
|
|
|
Series 映射
|
|
|
|
條件賦值
|
|
|
|
分箱離散化
|
|
|
|
特徵工程
|
|
|
九、字符串與時間操作
字符串(.str 訪問器)
df['姓名'].str.lower() # 轉小寫
df['郵箱'] = df['姓名'].str + '@company.com'
df[df['城市'].str.contains('京')] # 正則匹配
df['首字'] = df['姓名'].str[0]
時間序列(.dt 訪問器)
df['日期'] = pd.to_datetime(df['日期'])
df['年'] = df['日期'].dt.year
df['月份'] = df['日期'].dt.month
df['工作日'] = df['日期'].dt.dayofweek < 5
十、數據合併與重塑
|
功能
|
函數
|
説明
|
|
上下拼接
|
|
|
|
左右拼接
|
|
|
|
類 SQL JOIN
|
|
支持 inner/left/right/outer
|
|
透視表
|
|
多維彙總
|
|
寬變長
|
|
逆透視
|
|
長變寬
|
|
透視表示例:
pd.pivot_table(df, values='工資', index='部門', columns='性別', aggfunc='mean', fill_value=0)
十一、性能與工程建議
|
場景
|
推薦做法
|
|
避免循環 |
用向量化操作替代 |
|
內存優化 |
|
|
大文件處理 |
|
|
鏈式編程 |
使用 |
|
安全賦值 |
始終用 |
|
類型安全 |
整數列含缺失 → 用 |
十二、高頻函數速查表(一張圖掌握)
|
類別
|
核心函數
|
|
創建/讀取 |
|
|
查看 |
|
|
篩選 |
|
|
排序 |
|
|
缺失值 |
|
|
去重 |
|
|
聚合 |
|
|
變換 |
|
|
字符串 |
|
|
時間 |
|
|
合併 |
|
✅ 總結
Pandas 的強大在於其一致性設計和豐富生態:
- Series 和 DataFrame 是基石
- 向量化操作是性能關鍵
groupby+agg是分析核心.loc/.str/.dt是安全高效訪問的保障