Python 处理 Excel 数据的常用代码(含多 Sheet 快捷处理)
·
目录
Python 处理 Excel 数据的常用代码(含多 Sheet 快捷处理)
在数据分析、工程计算和业务报表处理中,Excel 仍然是最常见的数据格式之一。
例如:
- 测风数据统计
- 实验数据整理
- 业务报表分析
- 多文件数据汇总
如果只依赖 Excel 手动操作,不仅效率低,而且很难复现处理流程。而使用 Python 可以实现 自动化、批量化、可重复的数据处理。
本文整理了 最常用、最核心的 Excel 处理代码,适合日常工作快速查阅。
一、常用库
Python 处理 Excel,最常用的是 pandas。
import pandas as pd
安装方式:
pip install pandas openpyxl
说明:
| 库 | 作用 |
|---|---|
| pandas | 数据读取、清洗、统计 |
| openpyxl | 读写 xlsx 文件 |
二、读取 Excel 文件
1 读取 Excel
df = pd.read_excel("data.xlsx")
print(df.head())
查看前5行数据:
时间 风速 风向
2025-01-01 6.5 120
2025-01-02 7.2 140
...
2 读取指定 Sheet
df = pd.read_excel("data.xlsx", sheet_name="Sheet1")
3 读取指定列
df = pd.read_excel("data.xlsx", usecols=["时间", "风速", "风向"])
如果 Excel 有很多列,这样可以提高效率。
三、查看数据基本信息
查看前几行
df.head()
查看数据规模
df.shape
返回:
(10000, 6)
表示:
10000行
6列
查看列名
df.columns
查看数据类型
df.dtypes
四、数据筛选
1 选择一列
ws = df["风速"]
2 选择多列
df_sub = df[["时间", "风速", "风向"]]
3 条件筛选
例如:
筛选 风速大于10
df_high = df[df["风速"] > 10]
筛选多个条件:
df_high = df[(df["风速"] > 10) & (df["风向"] < 180)]
五、缺失值处理
Excel 数据通常会有空值。
查看缺失值
df.isna().sum()
删除缺失值
df = df.dropna()
用均值填充
df["风速"] = df["风速"].fillna(df["风速"].mean())
六、列名重命名
很多 Excel 列名很复杂,例如:
平均风速(m/s)
平均风向(°)
可以统一处理:
df = df.rename(columns={
"平均风速(m/s)": "风速",
"平均风向(°)": "风向"
})
七、新增计算列
例如新增风速等级:
df["风速等级"] = df["风速"].apply(
lambda x: "高风速" if x >= 10 else "低风速"
)
八、排序
按风速排序
df_sorted = df.sort_values(by="风速")
降序:
df_sorted = df.sort_values(by="风速", ascending=False)
九、分组统计
这是 Excel 处理中最常用的操作之一。
按风向扇区求平均风速
result = df.groupby("风向扇区")["风速"].mean()
多统计指标
result = df.groupby("风向扇区")["风速"].agg(["mean","max","min"])
统计数量
df.groupby("风向扇区").size()
十、时间数据处理
如果 Excel 有时间列:
2025/01/01 10:00
先转为时间格式:
df["时间"] = pd.to_datetime(df["时间"])
提取时间信息:
df["年"] = df["时间"].dt.year
df["月"] = df["时间"].dt.month
df["日"] = df["时间"].dt.day
十一、保存 Excel
保存为 Excel
df.to_excel("结果.xlsx", index=False)
保存多个 Sheet
with pd.ExcelWriter("结果.xlsx") as writer:
df.to_excel(writer, sheet_name="原始数据", index=False)
df_high.to_excel(writer, sheet_name="高风速数据", index=False)
result.to_excel(writer, sheet_name="统计结果")
最终 Excel 结构:
结果.xlsx
├─ 原始数据
├─ 高风速数据
└─ 统计结果
十二、多个 Sheet 的快捷处理(非常实用)
很多 Excel 文件包含多个 Sheet,例如:
测风塔数据.xlsx
├─ mast1
├─ mast2
├─ mast3
方法1:一次性读取全部 Sheet
all_sheets = pd.read_excel("data.xlsx", sheet_name=None)
返回:
dict
结构:
{
"Sheet1": df1,
"Sheet2": df2
}
遍历所有 Sheet
for name, df in all_sheets.items():
print("sheet:", name)
print(df.head())
统一处理所有 Sheet
例如:
统计每个 sheet 的平均风速:
result = {}
for name, df in all_sheets.items():
mean_ws = df["风速"].mean()
result[name] = mean_ws
print(result)
输出:
{
mast1: 7.2,
mast2: 6.8,
mast3: 7.5
}
十三、多个 Sheet 合并
如果多个 Sheet 数据结构相同,可以合并:
all_sheets = pd.read_excel("data.xlsx", sheet_name=None)
df_all = pd.concat(all_sheets.values(), ignore_index=True)
print(df_all.shape)
最终得到一个统一的数据表。
十四、批量读取多个 Excel 文件
例如:
data/
mast1.xlsx
mast2.xlsx
mast3.xlsx
批量读取:
import os
import pandas as pd
folder = "data"
all_df = []
for file in os.listdir(folder):
if file.endswith(".xlsx"):
path = os.path.join(folder, file)
df = pd.read_excel(path)
all_df.append(df)
df_all = pd.concat(all_df, ignore_index=True)
print(df_all.shape)
十五、一个完整示例
import pandas as pd
# 读取Excel
all_sheets = pd.read_excel("wind_data.xlsx", sheet_name=None)
result = []
for name, df in all_sheets.items():
df["风速"] = df["风速"].fillna(df["风速"].mean())
mean_ws = df["风速"].mean()
result.append([name, mean_ws])
result_df = pd.DataFrame(result, columns=["测风塔", "平均风速"])
result_df.to_excel("统计结果.xlsx", index=False)
最终输出:
统计结果.xlsx
| 测风塔 | 平均风速 |
|---|---|
| mast1 | 7.2 |
| mast2 | 6.8 |
十六、最值得记住的核心代码
如果只记住最常用的:
# 读取
df = pd.read_excel("data.xlsx")
# 查看
df.head()
df.shape
# 筛选
df[df["风速"] > 10]
# 缺失值
df["风速"] = df["风速"].fillna(df["风速"].mean())
# 分组统计
df.groupby("风向扇区")["风速"].mean()
# 排序
df.sort_values(by="风速")
# 保存
df.to_excel("result.xlsx", index=False)
掌握这些基本就能解决 70%以上 Excel 数据处理问题。
结语
Python 处理 Excel 的核心流程其实很简单:
读取数据 → 查看结构 → 清洗数据 → 筛选统计 → 保存结果
真正重要的不是复杂代码,而是 形成标准化的数据处理流程。当数据量越来越大时,Python 自动化处理的优势会越来越明显。
更多推荐



所有评论(0)