本文目录导读:

我来详细说明Python处理Excel表格数据的主要方法:
常用库安装
pip install pandas openpyxl xlrd xlwt
使用pandas库(推荐)
读取Excel文件
import pandas as pd
# 读取Excel文件
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# 查看数据
print(df.head()) # 前5行
print(df.info()) # 数据信息
print(df.describe()) # 统计描述
数据操作示例
import pandas as pd
# 读取数据
df = pd.read_excel('sales.xlsx')
# 数据筛选
high_sales = df[df['销售额'] > 10000]
# 数据排序
sorted_df = df.sort_values('销售额', ascending=False)
# 分组统计
by_category = df.groupby('产品类别')['销售额'].sum()
# 添加新列
df['利润'] = df['销售额'] - df['成本']
# 缺失值处理
df = df.dropna() # 删除空值
df = df.fillna(0) # 填充空值
# 保存Excel
df.to_excel('output.xlsx', index=False)
使用openpyxl库(精细控制)
基础操作
from openpyxl import load_workbook, Workbook
# 读取Excel
wb = load_workbook('data.xlsx')
ws = wb.active # 或 wb['Sheet1']
# 读取特定单元格
cell_value = ws['A1'].value
print(cell_value)
# 读取行和列
for row in ws.iter_rows(min_row=1, max_row=5, values_only=True):
print(row)
# 写入数据
ws['A1'] = '新数据'
# 保存
wb.save('modified.xlsx')
高级功能
from openpyxl import load_workbook
from openpyxl.styles import Font, PatternFill, Alignment
wb = load_workbook('data.xlsx')
ws = wb.active
# 设置样式
header_font = Font(bold=True, color='FFFFFF')
header_fill = PatternFill(start_color='366092', end_color='366092', fill_type='solid')
# 格式化表头
for cell in ws[1]:
cell.font = header_font
cell.fill = header_fill
cell.alignment = Alignment(horizontal='center')
# 合并单元格
ws.merge_cells('A1:D1')
# 设置列宽
ws.column_dimensions['A'].width = 20
ws.save('formatted.xlsx')
实用数据处理示例
综合数据清洗
import pandas as pd
import numpy as np
def clean_excel_data(input_file, output_file):
# 读取数据
df = pd.read_excel(input_file)
# 数据清洗
# 1. 删除完全空的行
df = df.dropna(how='all')
# 2. 填充空值
numeric_cols = df.select_dtypes(include=[np.number]).columns
df[numeric_cols] = df[numeric_cols].fillna(0)
# 3. 移除重复数据
df = df.drop_duplicates()
# 4. 数据类型转换
if '日期' in df.columns:
df['日期'] = pd.to_datetime(df['日期'])
# 5. 重命名列
df.columns = [col.strip().replace(' ', '_') for col in df.columns]
# 6. 添加统计信息
df['总计'] = df.sum(axis=1)
# 保存清洗后的数据
df.to_excel(output_file, index=False)
print(f"数据已保存到: {output_file}")
批量处理多个Excel文件
import pandas as pd
import glob
import os
def merge_multiple_excel(folder_path, output_file):
all_files = glob.glob(os.path.join(folder_path, "*.xlsx"))
df_list = []
for file in all_files:
df = pd.read_excel(file)
df['来源文件'] = os.path.basename(file) # 添加来源标记
df_list.append(df)
# 合并所有DataFrame
merged_df = pd.concat(df_list, ignore_index=True)
# 保存
merged_df.to_excel(output_file, index=False)
print(f"合并了 {len(all_files)} 个文件")
实际应用示例
销售数据分析报告
import pandas as pd
import matplotlib.pyplot as plt
def sales_analysis(excel_file):
# 读取销售数据
df = pd.read_excel(excel_file)
# 数据透视表
monthly_sales = df.pivot_table(
index='月份',
columns='产品',
values='销售额',
aggfunc='sum'
)
# 计算统计指标
analysis = {
'总销售额': df['销售额'].sum(),
'平均每单': df['销售额'].mean(),
'最大单笔': df['销售额'].max(),
'最小单笔': df['销售额'].min(),
'订单总数': len(df)
}
# 生成图表
plt.figure(figsize=(10, 6))
monthly_sales.plot(kind='bar')
plt.title('月度销售分析')
plt.tight_layout()
plt.savefig('sales_analysis.png')
return analysis
# 使用示例
result = sales_analysis('sales_data.xlsx')
print(result)
注意事项
- 大文件处理:使用
chunksize参数分块读取 - 编码问题:添加
encoding='utf-8'或'gbk' - 性能优化:只读取需要的列
usecols=['A', 'B', 'C'] - 错误处理:添加try-except块处理异常
# 大文件分块读取示例
chunk_size = 10000
for chunk in pd.read_excel('large_file.xlsx', chunksize=chunk_size):
# 处理每个chunk
pass
选择哪种方法取决于你的具体需求:
- pandas:数据分析、统计处理、快速转换
- openpyxl:精细控制、格式化、图表
- xlrd/xlwt:传统Excel操作(较旧)