Python脚本如何处理Excel表格数据

wen 实用脚本 1

本文目录导读:

Python脚本如何处理Excel表格数据

  1. 常用库安装
  2. 使用pandas库(推荐)
  3. 使用openpyxl库(精细控制)
  4. 实用数据处理示例
  5. 实际应用示例
  6. 注意事项

我来详细说明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)

注意事项

  1. 大文件处理:使用chunksize参数分块读取
  2. 编码问题:添加encoding='utf-8''gbk'
  3. 性能优化:只读取需要的列usecols=['A', 'B', 'C']
  4. 错误处理:添加try-except块处理异常
# 大文件分块读取示例
chunk_size = 10000
for chunk in pd.read_excel('large_file.xlsx', chunksize=chunk_size):
    # 处理每个chunk
    pass

选择哪种方法取决于你的具体需求:

  • pandas:数据分析、统计处理、快速转换
  • openpyxl:精细控制、格式化、图表
  • xlrd/xlwt:传统Excel操作(较旧)

抱歉,评论功能暂时关闭!