用Python自动化处理Excel表格详解

news2024/11/18 15:41:28

a1b380f2e94b4dcdb8a93041846e2b63.png


 

Excel表格基础知识

Excel表格可以帮助用户创建、编辑、格式化和计算数据,并生成各种图表和报表。Excel表格通常用于商业、金融、科学、教育等领域。

 

Excel表格的常用操作

Excel表格的常用操作包括插入、删除、移动、复制、粘贴、排序和筛选、图表等。这些操作可以帮助用户快速有效地处理数据,并生成各种报表和图表。

Excel表格的文件格式

Excel表格的文件格式有多种,常见的有xls、xlsx、xlsm、xlsb等。其中,xls格式是Excel 97-2003所使用的二进制格式,而xlsx格式是Excel 2007及以上版本所使用的XML格式。xlsm格式与xlsx格式类似,但支持宏和VBA代码。xlsb格式是一种二进制格式,通常用于处理大型数据集。

Python自动化处理Excel表格

在Python中,我们可以使用pandas和openpyxl等库来自动化处理Excel表格。

pandas库

pandas是一个开源的数据分析库,具有高效、灵活、易用等特点。它可以帮助用户处理各种数据类型,包括Excel表格。在pandas中,我们可以使用read_excel和to_excel等函数来读取和写入Excel表格。

示例代码

import pandas as pd

# 读取Excel表格
df = pd.read_excel('data.xlsx')

# 处理数据
# ...

# 写入Excel表格
df.to_excel('output.xlsx', index=False)

openpyxl库

openpyxl是一个开源的Python库,用于读取和写入Excel表格。它可以帮助用户处理各种数据类型,包括Excel表格。在openpyxl中,我们可以使用load_workbook和save_workbook等函数来读取和写入Excel表格。

示例代码

from openpyxl import load_workbook

# 读取Excel表格
wb = load_workbook('data.xlsx')
ws = wb.active

# 处理数据
# ...

# 写入Excel表格
wb.save('output.xlsx')

Python自动化处理Excel表格的常见问题

在使用Python自动化处理Excel表格时,常见的问题包括读取数据、写入数据、格式化数据、筛选数据等。下面,我们将针对这些问题进行详细讲解。

如何读取Excel表格?

在Python中,我们可以使用pandas和openpyxl等库来读取Excel表格。其中,pandas库常用于读取较大的Excel表格,而openpyxl库常用于读取较小的Excel表格。

使用pandas读取Excel表格

import pandas as pd

# 读取Excel表格
df = pd.read_excel('data.xlsx')

使用openpyxl读取Excel表格

from openpyxl import load_workbook

# 读取Excel表格
wb = load_workbook('data.xlsx')
ws = wb.active

# 获取数据
data = []
for row in ws.iter_rows(values_only=True):
    data.append(row)

如何写入Excel表格?

在Python中,我们可以使用pandas和openpyxl等库来写入Excel表格。其中,pandas库常用于写入较大的Excel表格,而openpyxl库常用于写入较小的Excel表格。

使用pandas写入Excel表格

import pandas as pd

# 写入Excel表格
df.to_excel('output.xlsx', index=False)

使用openpyxl写入Excel表格

from openpyxl import Workbook

# 写入Excel表格
wb = Workbook()
ws = wb.active

for row in data:
    ws.append(row)

wb.save('output.xlsx')

如何格式化Excel表格?

在Python中,我们可以使用openpyxl等库来格式化Excel表格。其中,openpyxl库提供了各种格式化工具,可以帮助用户对Excel表格进行格式化。

示例代码

from openpyxl.styles import Font, Alignment

# 设置字体和对齐方式
font = Font(name='Arial', size=12, bold=True)
alignment = Alignment(horizontal='center', vertical='center')

# 格式化表头
for cell in ws[1]:
    cell.font = font
    cell.alignment = alignment

# 格式化数据
for row in ws.iter_rows(min_row=2):
    for cell in row:
        cell.number_format = '0.00'

如何筛选Excel表格?

在Python中,我们可以使用pandas和openpyxl等库来筛选Excel表格。其中,pandas库常用于筛选较大的Excel表格,而openpyxl库常用于筛选较小的Excel表格。

使用pandas筛选Excel表格

import pandas as pd

# 筛选数据
df_filtered = df[df['column_name'] == 'value']

使用openpyxl筛选Excel表格

from openpyxl.utils import column_index_from_string

# 筛选数据
for row in ws.iter_rows(min_row=2):
    if row[column_index_from_string('A')-1].value == 'value':
        # 处理数据
        # ...

筛选和修改数据

使用 pandas 和 openpyxl 可以方便地筛选和修改 Excel 文件中的数据。以下是一个简单的示例代码:

import pandas as pd
from openpyxl import load_workbook

# 读取 Excel 文件并加载工作表
file = 'example.xlsx'
workbook = load_workbook(file)
sheet = workbook['Sheet1']

# 将工作表中的数据读取到 pandas DataFrame 中
data = sheet.values
df = pd.DataFrame(data, columns=['姓名', '年龄', '性别'])

# 筛选出年龄大于等于 30 岁的人员信息
df_filtered = df[df['年龄'] >= 30]

# 将年龄小于 20 岁的人员信息删除
df.drop(df[df['年龄'] < 20].index, inplace=True)

# 在 DataFrame 中添加一列数据
df['职业'] = ['学生', '教师', '医生']

# 将修改后的 DataFrame 写入 Excel 文件
with pd.ExcelWriter(file, engine='openpyxl', mode='a') as writer:
    writer.book = workbook
    df.to_excel(writer, sheet_name='Sheet1', index=False)

在这个代码中,先使用 openpyxl 库读取 Excel 文件并加载工作表。然后,使用 pandas 库将工作表中的数据读取到 DataFrame 中:

  • 使用条件表达式筛选出年龄大于等于 30 岁的人员信息,并将其存储在 df_filtered 变量中。

  • 使用 drop() 方法删除年龄小于 20 岁的人员信息。

  • 在 DataFrame 中添加一列职业信息。

最后将修改后的 DataFrame 写回到 Excel 文件中。

创建图表

使用 pandas 和 openpyxl 可以方便地在 Excel 文件中创建各种类型的图表。以下是一个简单的示例代码:

import pandas as pd
from openpyxl import load_workbook
from openpyxl.chart import BarChart, Reference

# 读取 Excel文件并加载工作表
file = 'example.xlsx'
workbook = load_workbook(file)
sheet = workbook['Sheet1']

# 将工作表中的数据读取到 pandas DataFrame 中
data = sheet.values
df = pd.DataFrame(data, columns=['姓名', '年龄', '性别'])

# 创建一个柱形图并添加到 Excel 文件中
chart = BarChart()
chart.title = '人员年龄分布'
chart.x_axis.title = '姓名'
chart.y_axis.title = '年龄'

xdata = Reference(sheet, min_col=1, min_row=2, max_row=len(df))
ydata = Reference(sheet, min_col=2, min_row=2, max_row=len(df))
chart.add_data(ydata)
chart.set_categories(xdata)

sheet.add_chart(chart, 'D1')

# 保存 Excel 文件
workbook.save(file)

在这个示例代码中,先使用 openpyxl 库读取 Excel 文件并加载工作表。然后使用 pandas 库将工作表中的数据读取到 DataFrame 中。

创建一个柱形图并将其添加到 Excel 文件中的步骤:

  • 创建一个 BarChart 对象,并设置标题、X 轴标题和 Y 轴标题。

  • 使用 Reference 方法创建一个数据范围对象,并将其指定为图表的 X 轴和 Y 轴数据。

  • 使用 add_data() 方法将 Y 轴数据添加到图表中。

  • 使用 set_categories() 方法将 X 轴数据添加到图表中。

  • 使用 add_chart() 方法将图表添加到工作表中。

好了,今天的分享就到这里,欢迎点赞收藏转发,感谢🙏

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/756497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

node操作MySQL数据库

本文节选自我的博客&#xff1a;node 操作 MySQL 数据库 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是MilesChen&#xff0c;偏前端的全栈开发者。&#x1f4dd; CSDN主页&#xff1a;爱吃糖的猫&#x1f525;&#x1f4e3; 我的博客&#xff1a;爱吃糖的猫&…

集群基础4——haproxy负载均衡mariadb

文章目录 一、环境说明二、安装配置mariadb三、安装配置haproxy四、验证 一、环境说明 使用haproxy对mysql多机单节点进行负载均衡。 主机IP角色安装服务192.168.161.131后端服务器1mariadb&#xff0c;3306端口192.168.161.132后端服务器2mariadb&#xff0c;3306端口192.168.…

【2023 年第二届钉钉杯大学生大数据挑战赛初赛】 初赛 A:智能手机用户监测数据分析 问题一Python代码分析

2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A&#xff1a;智能手机用户监测数据分析 问题一Python代码分析 1 题目 2023 年第二届钉钉杯大学生大数据挑战赛初赛题目 初赛 A&#xff1a;智能手机用户监测数据分析 一、问题背景 近年来&#xff0c;随着智能手机的产生&a…

STM32F10x外部中断/事件控制器(EXTI)应用

往期文章&#xff1a; STM32F1x固件库函数学习笔记&#xff08;一&#xff09; 文章目录 一、EXTI简介二、EXTI初始化结构体详解三、外部中断&#xff08;EXTI&#xff09;编程要点及例程参考文献 一、EXTI简介 外部中断/事件控制器&#xff0c;简称&#xff1a;EXTI&#x…

Jenkins打包、发布、部署

目录 前言 一、安装jdk 二、安装maven 三、安装git 四、安装jenkins 五、访问jenkins 六、创建用户 七、配置jenkins 八、执行 总结 前言 服务器&#xff1a;CentOS 7.9 64位 jdk&#xff1a;1.8 maven&#xff1a;3.9.1 git&#xff1a;git version 1.8.3.1 jenkins&a…

计算机中的数制与编码(二进制转换)

一、进制表示 1. 十进制表示 使用&#xff08;0&#xff0c;1&#xff0c;2&#xff0c;…&#xff0c;9&#xff09;十位数字表示&#xff0c;十进制运算时逢十进一。 2. 二进制表示 使用(0&#xff0c;1)两个数字表示&#xff0c;二进制运算时逢二进一。 3. 十六进制表示…

AIGC文生图:stable-diffusion-webui部署及使用

1 stable-diffusion-webui介绍 Stable Diffusion Web UI 是一个基于 Stable Diffusion 的基础应用&#xff0c;利用 gradio 模块搭建出交互程序&#xff0c;可以在低代码 GUI 中立即访问 Stable Diffusion Stable Diffusion 是一个画像生成 AI&#xff0c;能够模拟和重建几乎…

宝塔面板清理

查看磁盘使用情况时发现/dev/sda1满了&#xff0c;重启服务器也不行&#xff0c;瞎折腾了半天&#xff0c;才发现是宝塔的回收站占了较大的磁盘&#xff0c;于是按以下操作清理了下&#xff0c;就可以了 1、清除系统监控记录。打开宝塔面板后台&#xff0c;找到监控&#xff0c…

模拟面试2

1.说一说ArrayList的实现原理&#xff1f; ArrayList底层基于数组实现&#xff0c;内部封装了Object类型的数组&#xff0c;实现了list接口&#xff0c;通过默认构造器创建容器时&#xff0c;该数组被初始化为一个空数组&#xff0c;首次添加数据时再将其初始化为容量为10的数组…

变量生命符thread_local

thread_local是c11为线程安全引进的变量声明符。 thread_local是一个存储器指定符&#xff1a; 所谓存储器指定符&#xff0c;其作用类似命名空间&#xff0c;指定了变量名的存储期以及链接方式。同类型的关键字还有&#xff1a; static&#xff1a;静态或者线程存储期&…

2.我的第一个 JAVA 程序Helloword

对象&#xff1a;对象是类的一个实例&#xff0c;有状态和行为。例如&#xff0c;一条狗是一个对象&#xff0c;它的状态有&#xff1a;颜色、名字、品种&#xff1b;行为有&#xff1a;摇尾巴、叫、吃等。类&#xff1a;类是一个模板&#xff0c;它描述一类对象的行为和状态。…

前端videojs实现m3u8格式的直播

一、安装 npm install --save-dev video.js 二、引入 import videojs from "video.js"; import "video.js/dist/video-js.css"; 三、template 由于此处客户需要全屏至指定框大小&#xff0c;而不是全屏整个屏幕所以没用插件自带的全屏控件 隐藏自带全屏…

Unity 2DJoint 物理关节功能与总结

本文将以动图方式展示每个2D物理关节的效果&#xff0c;并解析部分重要参数的作用以及常见调配方式。 1.Distance Joint 2D&#xff08;距离关节&#xff09; 顾名思义是距离关节&#xff0c;以下为启用EnableCollision前后 关节使得两物体保持一定的距离&#xff0c;如果旋…

Apache (二十一)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、概述 二、安装 1. yum安装 2. 编译安装 三、 目录结构 1. yum安装 2. 编译安装 四、虚拟主机头配置 1. 基本配置 2. 实现方式 五、配置文件语法检查 六、 …

MySQL [环境配置]

MySQL [环境配置] MySQL的下载sqlyog的下载 熟悉老陈的人, 都清楚我不喜欢写这些环境配置的博客 那为啥这次要写一下MySQL的环境配置呢? 因为我被这一个小小的环境配置困扰了很长时间, 淋过雨的人都想为别人撑一把伞, 我不希望我的铁汁们也被这个问题困扰 MySQL的下载 MySQL下…

3. 测试 - 软件测试生命周期 BUG 的级别和生命周期

目录 1. 软件测试的生命周期 2. 描述 BUG 2.1 为什么要进行描述 2.2 如何描述一个 BUG 练习描述 BUG&#xff1a;邮箱登录不上去 练习描述 BUG&#xff1a;ie下界面显示异常&#xff0c;界面文字有重叠 3. BUG 的级别 4. BUG 的生命周期 1. 软件测试的生命周期 软件的…

【kubernetes系列】Kubernetes之Ingress

概述 从前面的学习&#xff0c;我们可以了解到Kubernetes暴露服务的方式目前常见的只有三种&#xff1a;LoadBlancer Service、NodePort Service、Ingress&#xff1b;而我们需要将集群内服务提供外界访问就会面临以下几个问题&#xff1a; Pod 漂移问题 Kubernetes 具有强大…

ubuntu 不能检测到显卡信息

开始时&#xff1a;lspci | grep -i nvidia 01:00.0 VGA compatible controller: NVIDIA Corporation Device 2489 (rev a1) 01:00.1 Audio device: NVIDIA Corporation Device 228b (rev a1) 运行sudo update-pciids 运行 lspci | grep -i nvidia 找到显卡了

Linux - 进阶 NFS服务器搭建 详解实验操作

建立 NFS 服务器&#xff0c;使用客户端成功访问 # 搭建环境 server 为服务端&#xff0c; node1 为客户端 &#xff08; 客户端是通过 服务端克隆出来的机子&#xff0c;并改了 IP 和 主机名&#xff09; IP 都显示出&#xff0c;并且双方能够 Ping 通 这样准备环…

顶尖公司是平均水平的100倍,惊讶吗?

行业顶尖公司人员平均能力水平&#xff0c;在行业平均水平的100倍之上&#xff01; 程序员的超级榜样&#xff1a;美国integram公司13个人&#xff0c;最后被facebook用10亿美金收购 《中庸》人能一之己百之&#xff0c;人能十之己千之 趣讲大白话&#xff1a;百倍努力&#xf…