Pandas 操作 Excel 的常用场景
Pandas 用来操作 Excel 很顺手,下面整理了 9 个常见操作,覆盖了日常工作中大部分场景。
读取与写入
先用字典创建一个 DataFrame,设置工号为索引,写入 Excel 再读出来。读回时索引会变成普通列,如果想保留索引,可以在 read_excel 时指定 index_col 参数。不过日常使用,知道基本的读写就够了。
import pandas as pd
# 通过字典形式构建 DataFrame
df = pd.DataFrame({
'工号': [1001, 1002, 1003],
'姓名': ['张三', '李四', '王五'],
'年龄': [28, 25, 30]
})
df = df.set_index('工号') # 自定义索引
df.to_excel('人事信息.xlsx') # 写入 excel
df = pd.read_excel('人事信息.xlsx') # 读取 excel
print(df)
# 输出结果:
# 工号 姓名 年龄
# 0 1001 张三 28
# 1 1002 李四 25
# 2 1003 王五 30
选择列
选择某一列很简单,直接用列名索引。
# 选择 Name 列数据
names = df['姓名']
print(names)
# 输出结果:
# 0 张三
# 1 李四
# 2 王五
选择行
用 loc 按标签索引选择行,iloc 按位置也可以。
# 选择第一行数据
first_row = df.loc[0]
print(first_row)
# 输出结果:
# 工号 1001
# 姓名 张三
# 年龄 28
条件过滤
条件过滤直接写布尔表达式。
# 过滤年龄大于 25 的行
filtered_data = df[df['年龄'] > 25]
print(filtered_data)
# 输出结果:
# 工号 姓名 年龄
# 0 1001 张三 28
# 2 1003 王五 30
添加列
添加新列,直接赋值。注意长度要匹配。
# 添加新列
df['籍贯'] = ['广东', '广西', '湖南']
print(df)
# 输出结果:
# 工号 姓名 年龄 籍贯
# 0 1001 张三 28 广东
# 1 1002 李四 25 广西
# 2 1003 王五 30 湖南
删除列
删除列用 drop,axis=1 表示列,inplace=True 可以直接修改原 DataFrame,不过返回新对象也行。
# 删除年龄列
df = df.drop('年龄', axis=1)
print(df)
# 输出结果:
# 工号 姓名 籍贯
# 0 1001 张三 广东
# 1 1002 李四 广西
# 2 1003 王五 湖南
修改数据
修改单元格,loc 定位到具体位置。
# 修改第一行第一个元素为'陈六'
df.loc[0, '姓名'] = '陈六'
print(df)
# 输出结果:
# 工号 姓名 籍贯
# 0 1001 陈六 广东
# 1 1002 李四 广西
# 2 1003 王五 湖南
合并表格
合并多个表用 concat 纵向拼接,前提是列结构一致。如果结构不同,可以用 merge。
# 读取另一个 Excel 文件
df2 = pd.read_excel('example2.xlsx')
# 合并两个 DataFrame
merged_df = pd.concat([df, df2])
print(merged_df)
数据透视表
透视表是数据分析常用功能,pivot_table 参数清晰,默认聚合函数是 mean,指定 aggfunc='sum' 进行求和。
# 生成数据透视表
import pandas as pd
# 创建销售数据集
data = {'日期': ['2024-04-01', '2024-04-02', '2024-04-02', '2024-04-02', '2024-04-03'],
'产品': ['苹果', '香蕉', '苹果', '香蕉', '苹果'],
'销售额': [1000, 1500, 800, 1200, 1500]}
df = pd.DataFrame(data)
# 显示数据集
print(df)
pivot_table = df.pivot_table(index='日期', columns='产品', values='销售额', aggfunc='sum')
# 显示数据透视表
print(pivot_table)
# 数据结果:
# 产品 苹果 香蕉
# 日期
# 2024-04-01 1000.0 NaN
# 2024-04-02 800.0 2700.0
# 2024-04-03 1500.0 NaN
这些操作在实际写脚本时经常用到,熟练之后效率能提升不少。另外,Pandas 还有很多高级功能,但先把基础的玩熟再说。


