常用导入方式:import pandas as pd。分析表格数据时,建议先用 head()、shape、info() 和 describe() 熟悉数据。
读取、创建与查看数据
| 写法 | 作用 |
pd.read_csv('data.csv') | 读取 CSV 文件 |
pd.read_excel('data.xlsx') | 读取 Excel 文件 |
pd.DataFrame(data) | 创建 DataFrame |
df.head() | 查看前 5 行 |
df.tail() | 查看后 5 行 |
df.shape | 查看行数和列数 |
df.columns | 查看列名 |
df.dtypes | 查看各列数据类型 |
df.info() | 查看结构、非空值数量和数据类型 |
df.describe() | 查看数值列的描述性统计 |
df['col'].value_counts() | 统计不同取值及其频数 |
选择、筛选与排序
| 写法 | 作用 |
df['col'] | 选择单列,返回 Series |
df[['a', 'b']] | 选择多列,返回 DataFrame |
df.loc[0:3, ['a', 'b']] | 按标签选择行和列 |
df.iloc[0:3, 0:2] | 按整数位置选择行和列 |
df[df['age'] > 20] | 按条件筛选行 |
df[(c1) & (c2)] | 同时满足两个条件 |
df[(c1) | (c2)] | 满足任一条件 |
df['col'].isin(values) | 判断值是否属于给定集合 |
df.sort_values('col') | 按某列排序 |
df.sort_values('col', ascending=False) | 按某列降序排序 |
df.nlargest(5, 'score') | 取某列最大的前 5 行 |
数据清洗与转换
| 写法 | 作用 |
df.isna().sum() | 统计各列缺失值数量 |
df.dropna() | 删除含缺失值的行 |
df['col'].fillna(value) | 填充某列缺失值 |
df.duplicated().sum() | 统计重复行数量 |
df.drop_duplicates() | 删除重复行 |
df.rename(columns={'a':'A'}) | 重命名列 |
df['col'].astype('int64') | 转换数据类型 |
pd.to_datetime(df['date']) | 转换为日期时间类型 |
df['new'] = df['a'] + df['b'] | 根据已有列创建新列 |
df['col'].map(mapping) | 按映射关系替换值 |
df['col'].str.strip() | 去除字符串首尾空格 |
分组、合并、重塑与导出
| 写法 | 作用 |
df.groupby('group')['x'].mean() | 按组计算均值 |
df.groupby('group').agg(...) | 对各组执行多个聚合统计 |
pd.concat([df1, df2]) | 按行或按列拼接数据 |
pd.merge(df1, df2, on='id') | 按共同键连接两个表 |
pd.merge(..., how='left') | 左连接,保留左表全部记录 |
df.pivot_table(...) | 创建透视表并进行聚合 |
df.melt(...) | 将宽表转换为长表 |
df.reset_index() | 将索引恢复为普通列 |
df.set_index('id') | 将指定列设置为索引 |
df.to_csv('out.csv', index=False) | 保存为 CSV |
df.to_excel('out.xlsx', index=False) | 保存为 Excel |
课堂提示:先分清 loc(按标签)与 iloc(按位置);筛选多个条件时,每个条件通常需要加括号,并用 & 或 | 连接。