当前位置: 首页 > news >正文

Python Excel 操作全面总结

d3f6b269e4894ed9aab20336e8abc1d9.jpeg

Excel 是我们日常生活中经常使用的数据处理工具,而 Python 作为一种强大的编程语言,在处理 Excel 文件方面也有着广泛的应用。本文将全面总结 Python Excel 操作,包括如何使用 Python 来读取、写入、修改 Excel 文件,以及如何使用 Python 的各种库来处理 Excel 数据。

第一部分:Python Excel 基础操作

1.1 安装 Python Excel 库

在开始使用 Python 操作 Excel 之前,需要安装一些 Python 库。常用的 Python Excel 库有 pandasopenpyxl 和 xlrd。其中,pandas 是一个强大的数据分析工具库,openpyxl 和 xlrd 是专门用于处理 Excel 文件的库。安装这些库可以使用 pip 命令:

pip install pandas openpyxl xlrd

1.2 读取 Excel 文件

使用 pandas 库可以非常方便地读取 Excel 文件。首先,需要导入 pandas 库,然后使用 read_excel() 函数读取 Excel 文件。下面是一个简单的示例:

import pandas as pd# 读取 Excel 文件
df = pd.read_excel('example.xlsx')# 显示前几行数据
print(df.head())

在这个示例中,example.xlsx 是要读取的 Excel 文件的名称。read_excel() 函数返回一个 DataFrame 对象,可以使用 head() 方法显示前几行数据。

1.3 写入 Excel 文件

同样使用 pandas 库,可以非常方便地将数据写入 Excel 文件。首先,需要创建一个 DataFrame 对象,然后使用 to_excel() 函数将 DataFrame 对象写入 Excel 文件。下面是一个简单的示例:

import pandas as pd# 创建一个 DataFrame 对象
data = {'Name': ['Tom', 'Jerry', 'Mickey'],'Age': [20, 21, 22]}
df = pd.DataFrame(data)# 将 DataFrame 对象写入 Excel 文件
df.to_excel('output.xlsx', index=False)

在这个示例中,首先创建了一个包含姓名和年龄数据的 DataFrame 对象。然后,使用 to_excel() 函数将这个 DataFrame 对象写入名为 output.xlsx 的 Excel 文件。index=False 参数表示不将 DataFrame 的行索引写入 Excel 文件。

1.4 修改 Excel 文件

使用 openpyxl 库可以修改 Excel 文件。首先,需要导入 openpyxl 库,然后使用 load_workbook() 函数加载要修改的 Excel 文件,接着可以修改工作表中的单元格数据,最后使用 save() 函数保存修改后的 Excel 文件。下面是一个简单的示例:

from openpyxl import load_workbook# 加载要修改的 Excel 文件
wb = load_workbook('example.xlsx')# 获取工作表
ws = wb.active# 修改单元格数据
ws['A1'] = 'Hello'
ws['A2'] = 'World'# 保存修改后的 Excel 文件
wb.save('modified_example.xlsx')

在这个示例中,首先加载了名为 example.xlsx 的 Excel 文件,然后获取了活动工作表,接着修改了工作表中的单元格数据,最后将修改后的 Excel 文件保存为 modified_example.xlsx

1.5 总结

本文介绍了 Python Excel 基础操作,包括安装 Python Excel 库、读取 Excel 文件、写入 Excel 文件和修改 Excel 文件。这些操作是 Python Excel 操作的基础,掌握了这些操作,就可以进一步学习更高级的 Python Excel 操作了。在下一部分中,我们将介绍如何使用 Python Excel 库进行 Excel 数据的批量处理。

第二部分:Python Excel 批量处理

在实际应用中,我们常常需要对大量的 Excel 文件进行批量处理,例如读取多个 Excel 文件的数据、对数据进行处理、然后将处理后的数据写入新的 Excel 文件。本部分将介绍如何使用 Python 来实现这些批量处理操作。

2.1 读取多个 Excel 文件

当需要读取多个 Excel 文件时,可以使用 pandas 的 read_excel() 函数结合循环结构来实现。以下是一个示例,展示了如何读取同一文件夹下所有 Excel 文件:

import pandas as pd
import os# 设置工作目录到包含 Excel 文件的文件夹
os.chdir('path_to_directory')# 获取所有 Excel 文件的列表
excel_files = [file for file in os.listdir() if file.endswith('.xlsx')]# 读取并处理每个 Excel 文件
for file in excel_files:df = pd.read_excel(file)# 这里可以对 df 进行各种数据处理操作# ...

在这个示例中,首先使用 os.chdir() 函数设置工作目录到包含 Excel 文件的文件夹。然后,使用列表推导式和 os.listdir() 函数获取所有 Excel 文件的列表。最后,通过循环结构读取并处理每个 Excel 文件。

2.2 写入多个 Excel 文件

在批量处理数据后,我们可能需要将处理后的数据分别写入到不同的 Excel 文件中。这可以通过 pandas 的 to_excel() 函数实现。以下是一个示例:

import pandas as pd# 假设我们有一个 DataFrame 列表,每个 DataFrame 都需要写入一个 Excel 文件
dataframes = [df1, df2, df3]  # df1, df2, df3 是预先定义的 DataFrame 对象# 循环写入每个 DataFrame 到 Excel 文件
for i, df in enumerate(dataframes, start=1):file_name = f'output_{i}.xlsx'df.to_excel(file_name, index=False)

在这个示例中,我们有一个 DataFrame 列表 dataframes,每个 DataFrame 对象都将被写入一个新的 Excel 文件。通过循环结构,我们为每个 DataFrame 分配一个文件名,并使用 to_excel() 函数将其写入到对应的 Excel 文件中。

2.3 修改多个 Excel 文件

如果需要批量修改多个 Excel 文件,可以使用 openpyxl 库。以下是一个示例,展示了如何批量修改同一文件夹下所有 Excel 文件中的特定单元格:

from openpyxl import load_workbook# 设置工作目录到包含 Excel 文件的文件夹
os.chdir('path_to_directory')# 获取所有 Excel 文件的列表
excel_files = [file for file in os.listdir() if file.endswith('.xlsx')]# 修改每个 Excel 文件
for file in excel_files:wb = load_workbook(file)ws = wb.active# 修改单元格数据ws['A1'] = 'Modified'# 保存修改后的 Excel 文件wb.save(file)

在这个示例中,我们首先获取了所有 Excel 文件的列表,然后通过循环结构对每个文件进行修改。使用 load_workbook() 函数加载每个 Excel 文件,然后修改特定单元格的数据,并使用 save() 函数保存修改。

2.4 总结

本部分介绍了如何使用 Python 对多个 Excel 文件进行批量处理,包括读取、写入和修改。这些技能对于自动化数据处理任务非常有用,可以大大提高工作效率。在下一部分中,我们将介绍如何使用 Python Excel 库进行 Excel 数据的格式化和样式设置。

第三部分:Python Excel 数据格式化和样式设置

在处理 Excel 数据时,除了基本的读写修改操作外,还常常需要对数据进行格式化和样式设置,以提高报表的可读性和专业性。pandas 和 openpyxl 库都提供了丰富的功能来支持这些操作。

3.1 使用 pandas 设置数据格式

pandas 在将数据写入 Excel 文件时,允许设置数据的格式。这可以通过 ExcelWriter 类和 styler 接口来实现。以下是一个示例,展示了如何设置数字的格式:

import pandas as pd# 创建一个 DataFrame
df = pd.DataFrame({'Number': [1.234567, 2.345678, 3.456789]})# 将 DataFrame 写入 Excel 文件,并设置数字格式
with pd.ExcelWriter('formatted.xlsx', engine='openpyxl') as writer:df.style.format({'Number': "{:.2f}"})\.to_excel(writer, index=False)# 上面的代码将数字格式化为保留两位小数

在这个示例中,我们创建了一个包含浮点数的 DataFrame,并使用 style.format() 方法设置了数字的格式。ExcelWriter 用于写入 Excel 文件,engine='openpyxl' 参数确保使用 openpyxl 作为写入引擎。

3.2 使用 openpyxl 设置单元格样式

openpyxl 提供了详细的样式设置功能,可以用来设置字体、颜色、边框、对齐等。以下是一个示例,展示了如何设置单元格的样式:

from openpyxl import Workbook
from openpyxl.styles import Font, Alignment, PatternFill, Border# 创建一个工作簿和工作表
wb = Workbook()
ws = wb.active# 定义字体样式
font = Font(bold=True, size=14)# 定义对齐样式
alignment = Alignment(horizontal='center', vertical='center')# 定义填充样式
fill = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid')# 定义边框样式
border = Border(left=Border.BorderSide(style='thin'),right=Border.BorderSide(style='thin'),top=Border.BorderSide(style='thin'),bottom=Border.BorderSide(style='thin'))# 应用样式到单元格
for row in ws.iter_rows(min_row=1, max_row=1, min_col=1, max_col=3):for cell in row:cell.font = fontcell.alignment = alignmentcell.fill = fillcell.border = border# 保存工作簿
wb.save('styled.xlsx')

在这个示例中,我们创建了一个工作簿和工作表,并定义了字体、对齐、填充和边框样式。然后,我们遍历第一行的所有单元格,并将这些样式应用到这些单元格上。最后,我们保存了工作簿。

3.3 使用 openpyxl 设置列宽和行高

在 openpyxl 中,可以轻松地设置列宽和行高,以适应不同的数据展示需求。以下是一个示例,展示了如何设置列宽和行高:

from openpyxl import Workbook# 创建一个工作簿和工作表
wb = Workbook()
ws = wb.active# 设置列宽
ws.column_dimensions['A'].width = 20
ws.column_dimensions['B'].width = 30# 设置行高
ws.row_dimensions[1].height = 40
ws.row_dimensions[2].height = 50# 保存工作簿
wb.save('sized.xlsx')

在这个示例中,我们创建了一个工作簿和工作表,并设置了特定列的列宽和特定行的高度。最后,我们保存了工作簿。

3.4 总结

本部分介绍了如何使用 pandas 和 openpyxl 库来设置 Excel 数据的格式和样式。这些功能对于创建专业和美观的 Excel 报表至关重要。在下一部分中,我们将介绍如何使用 Python Excel 库进行 Excel 数据的复杂分析和处理。

第四部分:Python Excel 数据分析和处理

在处理 Excel 数据时,除了基本的读写、格式化和样式设置外,还经常需要进行数据分析和处理。Python 提供了强大的库,如 pandas 和 numpy,来支持这些操作。本部分将介绍如何使用这些库进行数据清洗、转换和分析。

4.1 数据清洗

数据清洗是数据分析的第一步,通常包括去除重复数据、处理缺失值、过滤异常值等。以下是一个示例,展示了如何使用 pandas 进行数据清洗:

import pandas as pd# 读取 Excel 文件
df = pd.read_excel('data.xlsx')# 去除重复行
df.drop_duplicates(inplace=True)# 处理缺失值,可以选择填充或删除
df.fillna(method='ffill', inplace=True)  # 前向填充
# df.dropna(inplace=True)  # 删除缺失值# 过滤异常值,例如过滤年龄小于0或大于100的数据
df = df[(df['Age'] >= 0) & (df['Age'] <= 100)]# 保存清洗后的数据
df.to_excel('cleaned_data.xlsx', index=False)

在这个示例中,我们首先读取了一个 Excel 文件,然后去除了重复行,处理了缺失值,并通过条件过滤了年龄数据中的异常值。

4.2 数据转换

数据转换包括数据类型转换、列的拆分和合并、数据规范化等。以下是一个示例,展示了如何使用 pandas 进行数据转换:

# 假设我们需要将 'Date' 列从字符串转换为日期类型
df['Date'] = pd.to_datetime(df['Date'])# 假设我们需要将 'Name' 列拆分为 'First Name' 和 'Last Name'
df[['First Name', 'Last Name']] = df['Name'].str.split(expand=True)# 假设我们需要根据 'Age' 列创建一个新的分类列 'Age Group'
df['Age Group'] = pd.cut(df['Age'], bins=[0, 18, 35, 60, 100], labels=['青少年', '青年', '中年', '老年'])# 保存转换后的数据
df.to_excel('transformed_data.xlsx', index=False)

在这个示例中,我们将 ‘Date’ 列转换为日期类型,将 ‘Name’ 列拆分为 ‘First Name’ 和 ‘Last Name’,并根据 ‘Age’ 列创建了新的分类列 ‘Age Group’。

4.3 数据分析

数据分析是对数据进行统计和分析,以提取有价值的信息和洞察。pandas 提供了丰富的统计函数和方法来支持数据分析。以下是一个示例,展示了如何使用 pandas 进行数据分析:

# 基本统计描述
statistics = df.describe()# 计算分组统计,例如按 'Age Group' 分组统计 'Salary' 的平均值
grouped_statistics = df.groupby('Age Group')['Salary'].mean()# 计算相关系数矩阵
correlation_matrix = df.corr()# 打印统计结果
print(statistics)
print(grouped_statistics)
print(correlation_matrix)# 保存分析结果
statistics.to_excel('statistics.xlsx')
grouped_statistics.to_excel('grouped_statistics.xlsx')
correlation_matrix.to_excel('correlation_matrix.xlsx')

在这个示例中,我们进行了基本统计描述,按 ‘Age Group’ 分组统计了 ‘Salary’ 的平均值,并计算了相关系数矩阵。

4.4 总结

本部分介绍了如何使用 pandas 和 numpy 进行 Excel 数据的分析和处理。这些操作对于从 Excel 数据中提取有价值的信息至关重要。在下一部分中,我们将介绍如何使用 Python Excel 库进行 Excel 数据的图表制作和可视化。

第五部分:Python Excel 数据可视化

数据可视化是将数据转换为图形表示的过程,这有助于更直观地理解和分析数据。Python 提供了多种库来支持数据可视化,如 matplotlibseaborn 和 plotly。本部分将介绍如何使用这些库来创建图表并将它们嵌入到 Excel 文件中。

5.1 使用 matplotlib 创建图表

matplotlib 是 Python 中最常用的绘图库之一。以下是一个示例,展示了如何使用 matplotlib 创建一个简单的柱状图,并将其保存到 Excel 文件中:

import pandas as pd
import matplotlib.pyplot as plt# 读取 Excel 文件
df = pd.read_excel('data.xlsx')# 创建柱状图
plt.figure(figsize=(10, 6))
plt.bar(df['Category'], df['Value'])
plt.title('Category Value Chart')
plt.xlabel('Category')
plt.ylabel('Value')# 保存图表到文件
plt.savefig('chart.png')# 将图表插入新的 Excel 文件
df_chart = pd.DataFrame()
df_chart.to_excel('chart.xlsx', index=False)
wb = load_workbook('chart.xlsx')
ws = wb.active
ws.column_dimensions['A'].width = 25
img = openpyxl.drawing.image.Image('chart.png')
img.anchor = 'A1'
ws.add_image(img)
wb.save('chart_with_image.xlsx')

在这个示例中,我们首先使用 matplotlib 创建了一个柱状图,并将其保存为图片文件。然后,我们创建了一个新的 Excel 文件,并将这个图片插入到工作表中。

5.2 使用 seaborn 创建图表

seaborn 是基于 matplotlib 的一个高级接口,用于绘制吸引人且信息丰富的统计图形。以下是一个示例,展示了如何使用 seaborn 创建一个热力图,并将其保存到 Excel 文件中:

import seaborn as sns
import pandas as pd# 读取 Excel 文件
df = pd.read_excel('data.xlsx')# 计算相关系数矩阵
corr_matrix = df.corr()# 创建热力图
plt.figure(figsize=(10, 8))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')
plt.title('Correlation Heatmap')# 保存图表到文件
plt.savefig('heatmap.png')# 将图表插入新的 Excel 文件(步骤同上)

在这个示例中,我们使用 seaborn 创建了一个热力图来展示数据集各变量之间的相关性,并将其保存为图片文件。

5.3 使用 plotly 创建交互式图表

plotly 是一个用于创建交互式图表的库,可以在 Web 浏览器中查看和与图表交互。以下是一个示例,展示了如何使用 plotly 创建一个交互式散点图,并将其保存到 Excel 文件中:

import plotly.express as px
import pandas as pd# 读取 Excel 文件
df = pd.read_excel('data.xlsx')# 创建交互式散点图
fig = px.scatter(df, x='X', y='Y', color='Category', size='Value', hover_data=['Label'])# 保存图表到 HTML 文件
fig.write_html('scatter_plot.html')# 将 HTML 图表转换为图片,并插入 Excel(需要额外的库,如 selenium)

在这个示例中,我们使用 plotly.express 创建了一个交互式散点图,并将其保存为 HTML 文件。由于 plotly 生成的图表是交互式的,直接嵌入到 Excel 文件中较为复杂,可能需要转换为图片格式。

5.4 总结

本部分介绍了如何使用 matplotlibseaborn 和 plotly 来创建图表,并将这些图表嵌入到 Excel 文件中。数据可视化是数据分析的重要组成部分,它可以帮助我们更直观地理解和传达数据中的信息。通过将这些图表集成到 Excel 报告中,可以使报告更加生动和具有说服力。

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 气膜体育馆:学校体育设施的全新选择—轻空间
  • mac/windows 软件推荐
  • win11+vscode+Flutter 开发环境配置
  • Python OpenCV 入门指南
  • 八月二十九日(day 39)docker6
  • 个人笔记总结
  • ClickHousez中如何定时清理过期数据库?
  • Akka-集群
  • H264编码
  • 深度学习速通系列:贝叶思和SVM
  • 通过自定义注解、反射和AOP在Spring Boot中动态修改请求参数
  • Android运行时权限详解
  • 低通滤波器
  • Hive/Spark小文件解决方案(企业级实战)–参数和SQL优化
  • Redis在Spring Boot中的应用详细讲解和案例示范
  • “大数据应用场景”之隔壁老王(连载四)
  • 【个人向】《HTTP图解》阅后小结
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • Hexo+码云+git快速搭建免费的静态Blog
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Vue--数据传输
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 基于HAProxy的高性能缓存服务器nuster
  • 技术发展面试
  • 前端设计模式
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 探索 JS 中的模块化
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 微信开放平台全网发布【失败】的几点排查方法
  • 用mpvue开发微信小程序
  • 1.Ext JS 建立web开发工程
  • HanLP分词命名实体提取详解
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • #android不同版本废弃api,新api。
  • #if等命令的学习
  • (MATLAB)第五章-矩阵运算
  • (Note)C++中的继承方式
  • (TOJ2804)Even? Odd?
  • (搬运以学习)flask 上下文的实现
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (强烈推荐)移动端音视频从零到上手(下)
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET 设计一套高性能的弱事件机制
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .net对接阿里云CSB服务
  • .net下简单快捷的数值高低位切换
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [20140403]查询是否产生日志