本文目录导读:

我来详细说明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操作(较旧)
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播