文章目錄

  • 人工智能之數據分析 Pandas
  • 前言
  • 一、數據創建與讀取
  • 二、數據基本信息查看
  • 三、數據選擇與篩選
  • 四、排序(Sorting)
  • 自定義排序示例:
  • 五、缺失值處理
  • 六、去重與唯一值
  • 七、分組與聚合(GroupBy + Agg)
  • 1. 基礎聚合
  • 2. 命名聚合(推薦)
  • 3. 常用聚合函數
  • 4. 高級方法
  • 八、數據變換與應用
  • 九、字符串與時間操作
  • 字符串(`.str` 訪問器)
  • 時間序列(`.dt` 訪問器)
  • 十、數據合併與重塑
  • 透視表示例:
  • 十一、性能與工程建議
  • 十二、高頻函數速查表(一張圖掌握)
  • ✅ 總結
  • 後續



前言

本文將Pandas 中最常用、最核心的函數與操作 進行系統性整合與分類整理,涵蓋 數據創建、查看、篩選、排序、聚合、變換、合併、缺失值處理、字符串/時間操作 等全鏈路分析場景。內容結構清晰、示例簡潔,便於學習與速查。


一、數據創建與讀取

功能

函數/方法

示例

創建 DataFrame

pd.DataFrame()

pd.DataFrame({'A': [1,2], 'B': ['x','y']})

從字典創建

同上

pd.DataFrame(dict)

從 CSV 讀取

pd.read_csv()

pd.read_csv('data.csv', encoding='utf-8')

寫入 CSV

df.to_csv()

df.to_csv('out.csv', index=False)

從 Excel 讀取

pd.read_excel()

pd.read_excel('file.xlsx', sheet_name='Sheet1')

寫入 Excel

df.to_excel()

df.to_excel('out.xlsx', index=False)

從 JSON 讀取

pd.read_json()

pd.read_json('data.json')


二、數據基本信息查看

功能

函數/屬性

説明

前幾行

df.head(n=5)

快速預覽

後幾行

df.tail(n=5)

查看末尾

形狀

df.shape

(行數, 列數)

列名

df.columns

返回 Index 對象

行索引

df.index

默認 RangeIndex

數據類型

df.dtypes

每列 dtype

內存與非空統計

df.info()

包含缺失值、內存佔用

描述性統計

df.describe()

數值列的均值、std、分位數等

唯一值數量

df.nunique()

每列去重計數

全錶轉置

df.T

行列互換


三、數據選擇與篩選

功能

方法

示例

選列(Series)

df['col']

df['姓名']

選多列(DataFrame)

df[['col1', 'col2']]

注意雙括號

按標籤選行/列

.loc[row, col]

df.loc[0, '姓名'], df.loc[df['年齡']>30, ['姓名','工資']]

按位置選行/列

.iloc[row, col]

df.iloc[0:2, 0:2]

布爾索引

df[condition]

df[df['工資'] > 10000]

條件查詢(推薦)

df.query()

df.query('工資 > 10000 and 部門 == "技術"')

是否包含

df.isin()

df[df['部門'].isin(['技術','產品'])]

⚠️ 避坑:避免鏈式賦值(如 df[cond]['col'] = x),應使用 .loc[cond, 'col'] = x


四、排序(Sorting)

功能

函數

示例

按值排序

df.sort_values()

df.sort_values('工資', ascending=False)

多列排序

同上

df.sort_values(['部門', '工資'], ascending=[True, False])

按索引排序

df.sort_index()

df.sort_index(), df.sort_index(axis=1)

自定義順序

pd.Categorical

見下文

自定義排序示例:
df['部門'] = pd.Categorical(df['部門'], categories=['技術', '產品', '銷售'], ordered=True)
df.sort_values('部門')

五、缺失值處理

功能

函數

説明

判斷缺失

df.isnull() / pd.isna()

返回布爾 DataFrame

非缺失判斷

df.notnull()

取反

刪除缺失行

df.dropna()

axis=0(默認)

刪除缺失列

df.dropna(axis=1)

填充缺失值

df.fillna(value)

value 可為標量、字典、method

向前/後填充

df.fillna(method='ffill')

時間序列常用

替換特定值為 NaN

df.replace(to_replace, np.nan)


六、去重與唯一值

功能

函數

示例

刪除重複行

df.drop_duplicates()

全行比較

按列去重

df.drop_duplicates(subset=['姓名'])

值頻次統計

s.value_counts()

Series 方法

百分比頻次

s.value_counts(normalize=True)


七、分組與聚合(GroupBy + Agg)

1. 基礎聚合

df.groupby('部門')['工資'].mean()
df.groupby('部門').agg({'工資': 'mean', '姓名': 'count'})

2. 命名聚合(推薦)

df.groupby('部門', as_index=False).agg(
    平均工資=('工資', 'mean'),
    人數=('姓名', 'count'),
    最高薪=('工資', 'max')
)

3. 常用聚合函數

函數

説明

'sum', 'mean', 'median'

求和、均值、中位數

'min', 'max'

極值

'std', 'var'

標準差、方差

'count'

非空計數

'nunique'

唯一值數量

'first', 'last'

首/末值

4. 高級方法

方法

用途

.transform()

返回與原表同 shape,用於組內標準化

.apply()

自定義複雜邏輯(性能較低)

.filter()

過濾滿足條件的組(如 lambda g: len(g) > 5


八、數據變換與應用

功能

方法

示例

列向量化運算

直接操作

df['新工資'] = df['工資'] * 1.1

應用函數(列/行)

df.apply(func, axis=0/1)

df.apply(np.sum, axis=0)

Series 映射

s.map(dict_or_func)

s.map({'A':1, 'B':2})

條件賦值

np.where()

np.where(df['工資']>10000, '高', '低')

分箱離散化

pd.cut() / pd.qcut()

pd.cut(s, bins=3)

特徵工程

assign()(鏈式)

df.assign(年薪=df['工資']*12)


九、字符串與時間操作

字符串(.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

十、數據合併與重塑

功能

函數

説明

上下拼接

pd.concat([df1, df2])

axis=0(默認)

左右拼接

pd.concat([df1, df2], axis=1)

類 SQL JOIN

pd.merge(df1, df2, on='key', how='left')

支持 inner/left/right/outer

透視表

pd.pivot_table()

多維彙總

寬變長

df.melt()

逆透視

長變寬

df.pivot()

透視表示例:

pd.pivot_table(df, values='工資', index='部門', columns='性別', aggfunc='mean', fill_value=0)

十一、性能與工程建議

場景

推薦做法

避免循環

用向量化操作替代 iterrows()

內存優化

astype('category')int32 替代 int64

大文件處理

pd.read_csv(..., chunksize=10000)

鏈式編程

使用 assign()pipe() 提高可讀性

安全賦值

始終用 .loc 賦值,避免 SettingWithCopyWarning

類型安全

整數列含缺失 → 用 'Int64'(注意大寫 I)


十二、高頻函數速查表(一張圖掌握)

類別

核心函數

創建/讀取

DataFrame(), read_csv(), to_excel()

查看

head(), info(), describe(), shape

篩選

.loc, .iloc, query(), isin()

排序

sort_values(), sort_index()

缺失值

isnull(), dropna(), fillna()

去重

drop_duplicates(), value_counts()

聚合

groupby().agg(), transform(), pivot_table()

變換

apply(), map(), assign(), np.where()

字符串

.str.lower(), .str.contains()

時間

pd.to_datetime(), .dt.year

合併

concat(), merge()


✅ 總結

Pandas 的強大在於其一致性設計豐富生態

  • Series 和 DataFrame 是基石
  • 向量化操作是性能關鍵
  • groupby + agg 是分析核心
  • .loc / .str / .dt 是安全高效訪問的保障