python——Excel处理

Python处理Excel文件的库

大纲

  1. 库概述

    • pandas
    • openpyxl
    • xlrd
  2. 库的安装

    • 安装pandas
    • 安装openpyxl
    • 安装xlrd
  3. 功能介绍

    • pandas功能
    • openpyxl功能
    • xlrd功能
  4. 库的使用

    • pandas使用方法
      • 读取Excel文件
      • 数据统计计算
      • 写入Excel文件
    • openpyxl使用方法
      • Workbook对象
      • 读取和修改Excel文件
      • 自定义格式和样式
      • 插入公式
    • xlrd使用方法
      • 读取Excel文件
  5. 结合使用场景

    • 读取数据
    • 处理和计算
    • 格式化和保存
  6. 具体示例

    • 综合示例:使用pandas读取数据,使用openpyxl进行格式化

1. 库概述

1.1 pandas
  • 主要功能 :处理数据分析和计算,支持读取和写入Excel文件(.xls.xlsx)。
  • 适用场景:数据处理、统计分析、数据清洗等。
1.2 openpyxl
  • 主要功能 :处理.xlsx格式的Excel文件,包括读取、修改、格式化和写入。
  • 适用场景:Excel文件的高级格式化、公式插入、样式设置等。
1.3 xlrd
  • 主要功能 :读取.xls格式的Excel文件,不支持写操作。
  • 适用场景:老版Excel文件的读取。

2. 库的安装

2.1 安装pandas
bash 复制代码
pip install pandas
pip install openpyxl  # 处理.xlsx文件
pip install xlrd      # 处理.xls文件
2.2 安装openpyxl
bash 复制代码
pip install openpyxl
2.3 安装xlrd
bash 复制代码
pip install xlrd

3. 功能介绍

3.1 pandas功能
  • 读取Excel文件 :支持.xls.xlsx格式,方便快速读取数据。
  • 数据统计计算:提供丰富的数据分析功能,如求和、均值、最大值等。
  • 写入Excel文件:将处理结果保存到新的Excel文件中。
3.2 openpyxl功能
  • 读取和修改Excel文件 :支持.xlsx格式的读取和修改。
  • 自定义格式和样式:支持设置单元格的字体、边框、填充颜色等。
  • 插入公式:支持在单元格中插入Excel公式。
  • Workbook操作:创建新的工作簿、添加工作表、设置工作簿属性等。
3.3 xlrd功能
  • 读取Excel文件 :支持.xls格式的读取,但不支持写操作。

4. 库的使用

4.1 pandas使用方法
  • 读取Excel文件

    python 复制代码
    import pandas as pd
    
    # 读取.xlsx文件
    df = pd.read_excel('example.xlsx', engine='openpyxl')
    
    # 读取.xls文件
    df = pd.read_excel('example.xls', engine='xlrd')
  • 数据统计计算

    • 求和

      python 复制代码
      total = df['ColumnName'].sum()

      示例 :计算Sales列的总和

      python 复制代码
      total_sales = df['Sales'].sum()
      print(f'Total Sales: {total_sales}')
    • 均值

      python 复制代码
      mean = df['ColumnName'].mean()

      示例 :计算Age列的平均值

      python 复制代码
      average_age = df['Age'].mean()
      print(f'Average Age: {average_age}')
    • 最大值和最小值

      python 复制代码
      max_value = df['ColumnName'].max()
      min_value = df['ColumnName'].min()

      示例 :计算Salary列的最大值和最小值

      python 复制代码
      max_salary = df['Salary'].max()
      min_salary = df['Salary'].min()
      print(f'Max Salary: {max_salary}')
      print(f'Min Salary: {min_salary}')
    • 分组统计

      python 复制代码
      grouped = df.groupby('GroupColumn')['NumericColumn'].sum()

      示例 :按Department分组计算Salary的总和

      python 复制代码
      department_salaries = df.groupby('Department')['Salary'].sum()
      print(department_salaries)
    • 描述性统计

      python 复制代码
      description = df.describe()

      示例:获取所有数值列的统计摘要

      python 复制代码
      summary = df.describe()
      print(summary)
  • 写入Excel文件

    python 复制代码
    df.to_excel('output.xlsx', index=False)
4.2 openpyxl使用方法
  • Workbook对象

    • 创建工作簿

      python 复制代码
      from openpyxl import Workbook
      
      # 创建一个新的工作簿
      wb = Workbook()
      
      # 选择当前活动的工作表
      ws = wb.active
      
      # 为工作表命名
      ws.title = "Sheet1"
    • 添加工作表

      python 复制代码
      # 创建一个新的工作表
      ws2 = wb.create_sheet(title="Sheet2")
    • 删除工作表

      python 复制代码
      wb.remove(ws2)
  • 读取和修改Excel文件

    python 复制代码
    from openpyxl import load_workbook
    
    # 加载工作簿
    wb = load_workbook('example.xlsx')
    
    # 选择工作表
    ws = wb['Sheet1']
  • 自定义格式和样式

    python 复制代码
    from openpyxl.styles import NamedStyle, Font, Border, Side, PatternFill
    
    # 定义样式
    currency_style = NamedStyle(name='currency', number_format='$#,##0.00')
    bold_font = Font(bold=True)
    thin_border = Border(left=Side(border_style="thin"), 
                         right=Side(border_style="thin"), 
                         top=Side(border_style="thin"), 
                         bottom=Side(border_style="thin"))
    fill_color = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")
    
    # 应用样式
    ws['A1'].style = currency_style
    ws['A1'].font = bold_font
    ws['A1'].border = thin_border
    ws['A1'].fill = fill_color
  • 插入公式

    python 复制代码
    ws['C1'] = '=SUM(A:A)'  # 在C1单元格插入A列总和公式
  • 保存工作簿

    python 复制代码
    wb.save('output.xlsx')
4.3 xlrd使用方法
  • 读取Excel文件

    python 复制代码
    import xlrd
    
    # 打开文件
    workbook = xlrd.open_workbook('example.xls')
    
    # 选择工作表
    sheet = workbook.sheet_by_index(0)

    示例:计算第0列的总和

    python 复制代码
    total = sum(sheet.cell_value(row, 0) for row in range(sheet.nrows) if isinstance(sheet.cell_value(row, 0), (int, float)))
    print(f'Total: {total}')

5. 结合使用场景

在实际工作中,pandasopenpyxl常常结合使用,以充分利用它们的优势:

  • 读取数据 :使用pandas读取Excel文件,进行数据处理和分析。
  • 处理和计算 :在pandas中进行数据统计计算。
  • 格式化和保存 :使用openpyxl对数据进行格式化,并将结果保存为新的Excel文件。

示例 :使用pandas读取数据,使用openpyxl进行格式化

python 复制代码
import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import NamedStyle, Font, PatternFill

# 使用pandas读取数据
df = pd.read_excel('example.xlsx', engine='openpyxl')

# 进行数据处理
total_sales = df['Sales'].sum()

# 将

处理结果写入新的Excel文件
df.to_excel('output.xlsx', index=False)

# 使用openpyxl加载新生成的Excel文件
wb = load_workbook('output.xlsx')
ws = wb['Sheet1']

# 定义样式
currency_style = NamedStyle(name='currency', number_format='$#,##0.00')
bold_font = Font(bold=True)
fill_color = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")

# 应用样式
ws['B1'].style = currency_style
ws['B1'].font = bold_font
ws['B1'].fill = fill_color
ws['B1'] = total_sales  # 写入总销售额

# 保存工作簿
wb.save('output.xlsx')

6. 具体示例

  • 读取和处理数据

    python 复制代码
    import pandas as pd
    
    # 读取数据
    df = pd.read_excel('data.xlsx', engine='openpyxl')
    
    # 计算总销售额
    total_sales = df['Sales'].sum()
    print(f'Total Sales: {total_sales}')
  • 格式化Excel文件

    python 复制代码
    from openpyxl import load_workbook
    from openpyxl.styles import Font, PatternFill
    
    # 加载工作簿
    wb = load_workbook('data.xlsx')
    ws = wb.active
    
    # 定义样式
    bold_font = Font(bold=True)
    fill_color = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")
    
    # 应用样式
    ws['A1'].font = bold_font
    ws['A1'].fill = fill_color
    
    # 保存工作簿
    wb.save('formatted_data.xlsx')
  • 处理旧版Excel文件

    python 复制代码
    import xlrd
    
    # 打开文件
    workbook = xlrd.open_workbook('old_data.xls')
    
    # 选择工作表
    sheet = workbook.sheet_by_index(0)
    
    # 计算第0列的总和
    total = sum(sheet.cell_value(row, 0) for row in range(sheet.nrows) if isinstance(sheet.cell_value(row, 0), (int, float)))
    print(f'Total: {total}')

结论

通过pandasopenpyxlxlrd这三个库,Python提供了强大的Excel文件处理能力。pandas适合数据分析和处理,openpyxl适合Excel文件的高级操作和格式化,而xlrd则用于读取旧版Excel文件。结合这些库,可以高效地完成Excel文件的读取、处理、格式化和保存等任务。

相关推荐
斯凯利.瑞恩5 分钟前
Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户附数据代码
python·决策树·随机森林
杨荧20 分钟前
【JAVA毕业设计】基于Vue和SpringBoot的服装商城系统学科竞赛管理系统
java·开发语言·vue.js·spring boot·spring cloud·java-ee·kafka
白子寰27 分钟前
【C++打怪之路Lv14】- “多态“篇
开发语言·c++
yannan2019031327 分钟前
【算法】(Python)动态规划
python·算法·动态规划
蒙娜丽宁37 分钟前
《Python OpenCV从菜鸟到高手》——零基础进阶,开启图像处理与计算机视觉的大门!
python·opencv·计算机视觉
光芒再现dev38 分钟前
已解决,部署GPTSoVITS报错‘AsyncRequest‘ object has no attribute ‘_json_response_data‘
运维·python·gpt·语言模型·自然语言处理
王俊山IT39 分钟前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
为将者,自当识天晓地。41 分钟前
c++多线程
java·开发语言
小政爱学习!43 分钟前
封装axios、环境变量、api解耦、解决跨域、全局组件注入
开发语言·前端·javascript
好喜欢吃红柚子1 小时前
万字长文解读空间、通道注意力机制机制和超详细代码逐行分析(SE,CBAM,SGE,CA,ECA,TA)
人工智能·pytorch·python·计算机视觉·cnn