Python处理Excel文件的库
大纲
-
库概述
pandas
openpyxl
xlrd
-
库的安装
- 安装
pandas
- 安装
openpyxl
- 安装
xlrd
- 安装
-
功能介绍
pandas
功能openpyxl
功能xlrd
功能
-
库的使用
pandas
使用方法- 读取Excel文件
- 数据统计计算
- 写入Excel文件
openpyxl
使用方法Workbook
对象- 读取和修改Excel文件
- 自定义格式和样式
- 插入公式
xlrd
使用方法- 读取Excel文件
-
结合使用场景
- 读取数据
- 处理和计算
- 格式化和保存
-
具体示例
- 综合示例:使用
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文件
pythonimport pandas as pd # 读取.xlsx文件 df = pd.read_excel('example.xlsx', engine='openpyxl') # 读取.xls文件 df = pd.read_excel('example.xls', engine='xlrd')
-
数据统计计算
-
求和
pythontotal = df['ColumnName'].sum()
示例 :计算
Sales
列的总和pythontotal_sales = df['Sales'].sum() print(f'Total Sales: {total_sales}')
-
均值
pythonmean = df['ColumnName'].mean()
示例 :计算
Age
列的平均值pythonaverage_age = df['Age'].mean() print(f'Average Age: {average_age}')
-
最大值和最小值
pythonmax_value = df['ColumnName'].max() min_value = df['ColumnName'].min()
示例 :计算
Salary
列的最大值和最小值pythonmax_salary = df['Salary'].max() min_salary = df['Salary'].min() print(f'Max Salary: {max_salary}') print(f'Min Salary: {min_salary}')
-
分组统计
pythongrouped = df.groupby('GroupColumn')['NumericColumn'].sum()
示例 :按
Department
分组计算Salary
的总和pythondepartment_salaries = df.groupby('Department')['Salary'].sum() print(department_salaries)
-
描述性统计
pythondescription = df.describe()
示例:获取所有数值列的统计摘要
pythonsummary = df.describe() print(summary)
-
-
写入Excel文件
pythondf.to_excel('output.xlsx', index=False)
4.2 openpyxl
使用方法
-
Workbook
对象-
创建工作簿
pythonfrom openpyxl import Workbook # 创建一个新的工作簿 wb = Workbook() # 选择当前活动的工作表 ws = wb.active # 为工作表命名 ws.title = "Sheet1"
-
添加工作表
python# 创建一个新的工作表 ws2 = wb.create_sheet(title="Sheet2")
-
删除工作表
pythonwb.remove(ws2)
-
-
读取和修改Excel文件
pythonfrom openpyxl import load_workbook # 加载工作簿 wb = load_workbook('example.xlsx') # 选择工作表 ws = wb['Sheet1']
-
自定义格式和样式
pythonfrom 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
-
插入公式
pythonws['C1'] = '=SUM(A:A)' # 在C1单元格插入A列总和公式
-
保存工作簿
pythonwb.save('output.xlsx')
4.3 xlrd
使用方法
-
读取Excel文件
pythonimport xlrd # 打开文件 workbook = xlrd.open_workbook('example.xls') # 选择工作表 sheet = workbook.sheet_by_index(0)
示例:计算第0列的总和
pythontotal = 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. 结合使用场景
在实际工作中,pandas
和openpyxl
常常结合使用,以充分利用它们的优势:
- 读取数据 :使用
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. 具体示例
-
读取和处理数据
pythonimport pandas as pd # 读取数据 df = pd.read_excel('data.xlsx', engine='openpyxl') # 计算总销售额 total_sales = df['Sales'].sum() print(f'Total Sales: {total_sales}')
-
格式化Excel文件
pythonfrom 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文件
pythonimport 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}')
结论
通过pandas
、openpyxl
和xlrd
这三个库,Python提供了强大的Excel文件处理能力。pandas
适合数据分析和处理,openpyxl
适合Excel文件的高级操作和格式化,而xlrd
则用于读取旧版Excel文件。结合这些库,可以高效地完成Excel文件的读取、处理、格式化和保存等任务。