以下是 Pandas DataFrame 的核心知识点总结,用结构化分类帮你高效记忆关键操作和概念:
1. 基础操作
创建DataFrame
方法 | 代码示例 | 说明 |
---|
从字典创建 | df = pd.DataFrame({'A': [1,2], 'B': [3,4]}) | 字典键为列名,值为数据 |
从列表创建 | df = pd.DataFrame([[1,3], [2,4]], columns=['A','B']) | 需指定列名 |
从CSV读取 | df = pd.read_csv('data.csv') | 常用header , index_col 参数 |
查看数据
方法 | 作用 |
---|
df.head(n) | 查看前n行(默认5) |
df.tail(n) | 查看后n行 |
df.info() | 显示列名、类型、非空值数量 |
df.describe() | 数值列统计摘要(均值、分位数等) |
2. 索引与选择
核心方法
操作 | 代码示例 | 特点 |
---|
列选择 | df['A'] 或 df.A | 返回Series(单列) |
多列选择 | df[['A', 'B']] | 返回DataFrame |
行选择 | df.loc[行标签] | 按标签选择(支持切片、布尔索引) |
位置选择 | df.iloc[行位置] | 按整数位置选择(类似列表切片) |
布尔筛选
df[df['A'] > 5]
df[(df['A'] > 5) & (df['B'] < 10)]
df.query('A > 5 and B < 10')
3. 数据清洗
缺失值处理
方法 | 代码示例 | 说明 |
---|
检测缺失值 | df.isna() | 返回布尔矩阵 |
删除缺失行 | df.dropna(axis=0) | 删除包含NaN的行 |
填充缺失值 | df.fillna(0) | 用固定值填充 |
前向填充 | df.fillna(method='ffill') | 用前一行数据填充 |
重复值处理
df.duplicated()
df.drop_duplicates()
类型转换
df['A'] = df['A'].astype(int)
pd.to_datetime(df['date_col'])
4. 数据操作
列操作
操作 | 代码示例 |
---|
添加新列 | df['C'] = df['A'] + df['B'] |
删除列 | df.drop('A', axis=1, inplace=True) |
重命名列 | df.rename(columns={'A': '新列名'}) |
行操作
df.append(new_row)
df.drop(index=[0,1])
排序
df.sort_values(by='A', ascending=False)
df.sort_index()
5. 数据合并与连接
方法 | 代码示例 | 适用场景 |
---|
纵向拼接 | pd.concat([df1, df2], axis=0) | 相同结构数据堆叠 |
横向拼接 | pd.concat([df1, df2], axis=1) | 按列合并 |
主键合并 | pd.merge(df1, df2, on='key', how='inner') | SQL风格的连接(支持left/right/outer) |
索引合并 | df1.join(df2, how='left') | 按索引合并 |
6. 分组与聚合
分组操作
grouped = df.groupby('A')
grouped = df.groupby(['A', 'B'])
聚合计算
grouped.sum()
grouped.agg({'C': 'sum', 'D': 'mean'})
透视表
pd.pivot_table(df, values='D', index='A', columns='B', aggfunc=np.mean)
7. 时间序列处理
日期解析
df['date'] = pd.to_datetime(df['date_str'])
df.set_index('date', inplace=True)
重采样
df.resample('M').mean()
8. 高效内存管理
技巧 | 代码示例 | 作用 |
---|
优化数据类型 | df['A'] = df['A'].astype('int32') | 减少内存占用 |
使用分类类型 | df['category_col'] = df['category_col'].astype('category') | 文本列内存优化 |
9. 避免常见错误
-
链式赋值警告
❌ 错误写法:df[df.A > 5]['B'] = 10
✅ 正确写法:df.loc[df.A > 5, 'B'] = 10
-
浅拷贝问题
修改切片数据时使用.copy()
:
df_sub = df[df.A > 5].copy()
10. 高频函数速查表
函数/方法 | 用途 |
---|
df.shape | 获取行数和列数 |
df.columns | 查看列名列表 |
df.set_index() | 设置索引列 |
df.reset_index() | 重置索引为默认整数索引 |
df.melt() | 宽表转长表 |
df.apply() | 对行/列应用函数 |
记忆技巧
- 按操作场景分类记忆:索引选择、清洗、聚合等分开整理。
- 对比记忆:如
loc
vs iloc
,merge
vs join
。 - 实战练习:用真实数据集(如泰坦尼克数据集)反复练习核心操作。
- 制作速查表:将常用操作打印成表格随时查阅。