《python每天一小段》-- (11)操作 Excel 详解
欢迎阅读《Python每天一小段》系列!在本篇文章中,将使用Python编写自动化 Excel 操作的程序。
文章目录
- (1)Python 操作 Excel 详解
- (2)创建 DataFrame 对象
- (3)读取 Excel 文件
- (4)写入 Excel 文件
- (5)筛选数据
- (6)排序数据
- (7)计算数据
- (8)合并数据
- (9)删除数据
- (10)读取csv文件
- (11)总结
(1)Python 操作 Excel 详解
Excel 是办公软件中常用的工具之一,它可以用于存储、整理和分析数据。Python 是一门强大的编程语言,它可以用于自动化 Excel 操作。
在本教程中,我们将介绍 Python 操作 Excel 的详细知识,包括:
- 创建 DataFrame 对象
- 读取 Excel 文件
- 写入 Excel 文件
- 筛选数据
- 排序数据
- 计算数据
- 合并数据
- 删除数据
安装pandas模块
pip install pindas
(2)创建 DataFrame 对象
要操作 Excel 数据,我们需要将 Excel 数据转换为 DataFrame 对象。DataFrame 对象是 pandas 库中的数据结构,它可以用于存储表格数据。
以下代码演示了如何创建 DataFrame 对象:
import pandas as pd# 创建 DataFrame 对象
df = pd.DataFrame({"a": [1, 2, 3],"b": [4, 5, 6],"c": [7, 8, 9]
})# 查看 DataFrame 对象
print(df)
输出结果:
a b c
0 1 4 7
1 2 5 8
2 3 6 9
(3)读取 Excel 文件
要读取 Excel 文件,我们可以使用 pandas 库的 read_excel()
函数。
以下代码演示了如何读取 Excel 文件:
# 读取 Excel 文件
df = pd.read_excel("data.xlsx")# 查看 DataFrame 对象
print(df)
输出结果与上面的代码相同。
我们还可以使用 read_excel()
函数的 nrows
参数指定要读取的行数,以及 usecols
参数指定要读取的列。
以下代码演示了如何读取 Excel 文件的前两行和 a
列和 b
列的数据:
# 读取前两行
df = pd.read_excel("data.xlsx", nrows=2)
print(df)# 读取 a 和 b 列
df = pd.read_excel("data.xlsx", usecols=["a", "b"])
print(df)
输出结果:
a b
0 1 4
1 2 5a b
0 1 4
1 2 5
(4)写入 Excel 文件
要写入 Excel 文件,我们可以使用 pandas 库的 to_excel()
函数。
以下代码演示了如何写入 Excel 文件:
# 写入 Excel 文件
df.to_excel("output.xlsx")
这将创建一个名为 output.xlsx
的 Excel 文件,其中包含 df
对象的数据。
(5)筛选数据
要筛选 Excel 数据,我们可以使用 loc
或 query()
方法。
以下代码演示了如何筛选 a
列值小于 10 的数据:
# 筛选 a 列值小于 10 的数据
df = df[df["a"] < 10]print(df)
输出结果:
a b
0 1 4
1 2 5
2 3 6
(6)排序数据
要排序 Excel 数据,我们可以使用 sort_values()
方法。
以下代码演示了如何按 a
列升序排序数据:
# 按 a 列升序排序数据
df = df.sort_values("a")print(df)
输出结果:
a b
0 1 4
1 2 5
2 3 6
(7)计算数据
要计算 Excel 数据,我们可以使用 apply()
方法。
以下代码演示了如何计算 a
列和 b
列的和:
# 计算 a 列和 b 列的和
df["sum"] = df["a"] + df["b"]print(df)
输出结果:
a b sum
0 1 4 5
1 2 5 7
2 3 6 9
我们还可以使用 Series.sum()
方法直接计算列的和:
# 计算 a 列的和
sum_a = df["a"].sum()print(sum_a)
输出结果:
6
(8)合并数据
要合并 Excel 数据,我们可以使用 concat()
方法。
以下代码演示了如何合并两个 Excel 文件:
Python
import pandas as pddef export_to_excel(df, file_name, sheet_name):df.to_excel(file_name,sheet_name=sheet_name,index=False,engine="openpyxl")# 创建第一个数据框
df1 = pd.DataFrame({"a1": [1, 2, 3],"b1": [4, 5, 6],"c1": [7, 8, 9]
})# 创建第二个数据框
df2 = pd.DataFrame({"a2": [1, 2, 3],"b2": [4, 5, 6],"c2": [7, 8, 9]
})# 导出第一个数据框到Excel
export_to_excel(df1, "data1.xlsx", "sheet1")# 导出第二个数据框到Excel
export_to_excel(df2, "data2.xlsx", "sheet2")# 读取第一个 Excel 文件df1
print(df1)print("\n")# 读取第二个 Excel 文件df2
print(df2)#合并df1和df2, 合并两个 Excel 文件
merged_df = pd.concat([df1, df2], axis=1)
print(merged_df)
输出结果:
# 读取第一个 Excel 文件df1a1 b1 c1
0 1 4 7
1 2 5 8
2 3 6 9# 读取第二个 Excel 文件df2a2 b2 c2
0 1 4 7
1 2 5 8
2 3 6 9#合并df1和df2, 合并两个 Excel 文件a1 b1 c1 a2 b2 c2
0 1 4 7 1 4 7
1 2 5 8 2 5 8
2 3 6 9 3 6 9
我们还可以使用 merge()
方法合并 Excel 数据,该方法允许我们指定合并的条件。
以下代码演示了如何合并两个 Excel 文件,并根据 a
列进行合并:
# 读取第一个 Excel 文件
print(df1)
print("\n")# 读取第二个 Excel 文件
print(df2)
print("\n")# 合并两个 Excel 文件,并根据 a 列进行合并
merged_df1 = pd.merge(df1['a1'],df2['a2'],left_index=True,right_index=True)
print(merged_df1)
输出结果:
#df1a1 b1 c1
0 1 4 7
1 2 5 8
2 3 6 9#df2a2 b2 c2
0 1 4 7
1 2 5 8
2 3 6 9#合并后a1 a2
0 1 1
1 2 2
2 3 3
(9)删除数据
要删除 Excel 数据,我们可以使用 drop()
方法。
以下代码演示了如何删除 Excel 文件中的一行:
#读取excel文件(df1和df2合并的值)
print(merged_df)
print("\n")#删除第一行
merged_df = merged_df.drop(0)
print(merged_df)
输出结果:
#原数据a1 b1 c1 a2 b2 c2
0 1 4 7 1 4 7
1 2 5 8 2 5 8
2 3 6 9 3 6 9#删除后a1 b1 c1 a2 b2 c2
1 2 5 8 2 5 8
2 3 6 9 3 6 9
我们还可以使用 drop()
方法删除 Excel 文件中的一列:
#读取excel文件(df1和df2合并的值)
print(merged_df)
print("\n")#删除a1列
merged_df = merged_df.drop("a1",axis=1)
print(merged_df)#同时删除两列
#merged_df = merged_df.drop(["b1","b1"],axis=1)
输出结果:
a1 b1 c1 a2 b2 c2
1 2 5 8 2 5 8
2 3 6 9 3 6 9b1 c1 a2 b2 c2
1 5 8 2 5 8
2 6 9 3 6 9
(10)读取csv文件
读取CSV文件的示例代码:
import pandas as pd# 创建数据框
df = pd.DataFrame({"Column1": [1, 2, 3],"Column2": [4, 5, 6],"Column3": [7, 8, 9]
})# 将数据框写入csv文件
df.to_csv("filename.csv", index=False)# 读取CSV文件
df = pd.read_csv("filename.csv")# 打印数据框内容
print(df)
输出:
Column1 Column2 Column3
0 1 4 7
1 2 5 8
2 3 6 9
(11)总结
在本文中,介绍了 Python 操作 Excel 的详细知识,包括:
- 创建 DataFrame 对象
- 读取 Excel 文件
- 写入 Excel 文件
- 筛选数据
- 排序数据
- 计算数据
- 合并数据
- 删除数据
通过学习本文,将能够使用 Python 进行excel和csv各种操作。
相关文章:

《python每天一小段》-- (11)操作 Excel 详解
欢迎阅读《Python每天一小段》系列!在本篇文章中,将使用Python编写自动化 Excel 操作的程序。 文章目录 (1)Python 操作 Excel 详解(2)创建 DataFrame 对象(3)读取 Excel 文件&#…...

一文读懂MySQL基础知识文集(8)
🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…...

持续集成交付CICD: Sonarqube REST API 查找与新增项目
目录 一、实验 1.SonarQube REST API 查找项目 2.SonarQube REST API 新增项目 一、实验 1.SonarQube REST API 查找项目 (1)Postman测试 转换成cURL代码 (2)Jenkins添加凭证 (3)修改流水线 pipeline…...

分层网络模型(OSI、TCP/IP)及对应的网络协议
OSI七层网络模型 OSI(Open System Interconnect),即开放式系统互连参考模型, 一般都叫OSI参考模型,是ISO组织于1985年研究的网络互连模型。OSI是分层的体系结构,每一层是一个模块,用于完成某种功…...

如何衡量和提高测试覆盖率?
衡量和提高测试覆盖率,对于尽早发现软件缺陷、提高软件质量和用户满意度,都具有重要意义。如果测试覆盖率低,意味着用例未覆盖到产品的所有代码路径和场景,这可能导致未及时发现潜在缺陷,代码中可能存在逻辑错误、边界…...

AWS Ubuntu设置DNS解析(解决resolve.conf被覆盖问题)
众所周知: Ubuntu在域名解析时,最直接使用的是/etc/resolve.conf文件,它是/run/systemd/resolve/resolve.conf的软链接,而对于刚装完的ubuntu系统,该文件的内容如下 ubuntuip-172-31-36-184:/etc$ cat resolv.conf #…...

学会这些可以升职加薪!EXCEL基础函数入门【一】
俗话说得好,Excel用得好,工资涨得高。什么值得买生活家追梦小仙女介绍一些Excel的常用函数吧~ 正文: 今天呢,刚好心血来潮,就EXCEL常用 的函数功能做一些介绍,学excel需要举一反三,楼主从事的…...

kubeadm搭建1.20.7版本k8s
资源 服务器名称ip地址服务master1(2C/4G,cpu核心数要求大于2)192.168.100.10docker、kubeadm、kubelet、kubectl、flannelnode01(2C/2G)192.168.100.30docker、kubeadm、kubelet、kubectl、flannelnode02(…...

LeetCode 力扣: 寻找两个正序数组的中位数 (Javascript)
LeetCode力扣双指针题目 主要提供了力扣热题第四题,使用js,复杂度O(log(mn)),寻找两个正序数组的中位数。 题目解析 题目要求在两个已排序数组 nums1 和 nums2 中找到它们的中位数。为了满足时间复杂度要求 O(log (mn)),可以采…...

第 4 部分 — 增强法学硕士的安全性:对越狱的严格数学检验
一、说明 越狱大型语言模型 (LLM)(例如 GPT-4)的概念代表了人工智能领域的一项艰巨挑战。这一过程需要对这些先进模型进行战略操纵,以超越其预先定义的道德准则或运营边界。在这篇博客中,我的目的是剖析数学的复杂性,并…...

Next.js 中的中间件
Next.js 中的中间件 Next.js 中的中间件是一个功能强大的工具,允许开发人员拦截、修改和控制应用程序中的请求和响应流。无论我们是构建服务器渲染的网站还是成熟的 Web 应用程序,了解如何有效使用中间件都可以显着增强项目进出的数据流。本文将从基础知…...

一、C#笔记
1.注释 /*多行注释*/class HelloWorld{ void Hello(){Console.WriteLine("Hello!");//单行注释}} 2.理解语句 2.1方法、语法、语义 2.2使用标识符 标识符语法规则: 只能使用字母(大写和小写)、数字和下划…...

井盖发生位移怎么办?智能井盖传感器效果
井盖位移是一种严重的安全隐患,因为它可能导致道路受阻并干扰正常的交通,还可能对行人和车辆的安全造成威胁。为了有效应对这一问题,智能井盖传感器的应用提供了一种解决方案。智能井盖传感器可以实时监测井盖的位移情况,并在发现…...

go-zero 开发之安装 goctl 及 go-zero 开发依赖
安装 goctl go 版本在 1.16 及以后执行: GO111MODULEon&&go install github.com/zeromicro/go-zero/tools/goctllatestgo 版本在 1.16 之前执行: GO111MODULEon&&go get -u github.com/zeromicro/go-zero/tools/goctllatest验证是否安…...

win11 CUDA(12.3) + cuDNN(12.x) 卸载
win11 CUDA(12.3) cuDNN(12.x)卸载 信息介绍卸载 信息介绍 本文是对应 win11RTX4070Ti 安装 CUDA cuDNN(图文教程) 的卸载 卸载 控制面板 --> 程序 --> 卸载程序 卸载掉图中红框内的,…...

037.Python面向对象_关于抽象类和抽象方法
我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉&…...

华为OD机试真题-5G网络建设-2023年OD统一考试(C卷)
题目描述: 现需要在某城市进行5G网络建设,已经选取N个地点设置5G基站,编号固定为1到N,接下来需要各个基站之间使用光纤进行连接以确保基站能互联互通,不同基站之间架设光纤的成本各不相同,且有些节点之间已经存在光纤相连,请你设计算法,计算出能联通这些基站的最小成本…...

【Spring教程25】Spring框架实战:从零开始学习SpringMVC 之 SpringMVC入门案例总结与SpringMVC工作流程分析
目录 1.入门案例总结2. 入门案例工作流程分析2.1 启动服务器初始化过程2.2 单次请求过程 欢迎大家回到《Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安装Mave…...

设计模式再探——装饰模式
目录 一、背景介绍二、思路&方案三、过程1.装饰模式简介2.装饰模式的类图3.装饰模式代码4.装饰模式,职责父类拆分的奥义5.装饰模式,部件抽象类的无中生有 四、总结五、升华 一、背景介绍 最近公司在做架构模型的时候,涉及到装饰模式的研…...

【Python必做100题】之第一题(求两数相加)
思路:键盘输入两个数字,求出两个数的和并打印 代码如下: num1 int(input("请输入一个数字:")) num2 int(input("再输入一个数字:")) #求两数相加 result num1 num2 print(f"两数相加的…...

java面试-Dubbo和zookeeper运行原理
远离八股文,面试大白话,通俗且易懂 看完后试着用自己的话复述出来。有问题请指出,有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来,大家一起解决。 java面试题汇总-目录-持续更新中 分布式注册中心和服务调…...

Rsync+Sersync
服务器相关参数 源服务器 192.168.17.101 目标服务器(同步到的服务器) 192.168.17.103 ##目标服务器配置 ###1、配置rsync服务 1、安装rsync yum -y install rsync 2、配置rsync vim /etc/rsyncd.conf 配置文件内容 uid root gid root use c…...

Leetcode刷题笔记题解(C++):25. K 个一组翻转链表
思路:利用栈的特性,K个节点压入栈中依次弹出组成新的链表,不够K个节点则保持不变 /*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) : val(x), next(nullptr) {}* };*/ #include <stack> class Solution { …...
从线性回归到神经网络
目录 一、线性回归关键思想 1、线性模型 2、基础优化算法 二、线性回归的从零开始实现 1、生成数据集 2、读取数据集 3、初始化模型参数 4、定义模型 5、定义损失函数 6、定义优化算法 7、训练 三、线性回归的简洁实现 1、生成数据集 2、读取数据集 3、定义模型…...

LANDSAT_7/02/T1/RAW的Landsat7_C2_RAW类数据集
Landsat7_C2_RAW是指Landsat 7卫星的数据集,采用的是Collection 2级别的数据处理方法,对应的是Tier 1级别的原始数据(RAW)。该数据集包括了Landsat 7卫星从1999年4月15日开始的所有数据,共涵盖了全球范围内的陆地和海洋…...

绕过360给目标机器添加账户
CS BOF是什么? Beacon 对象文件 (BOF) 是一个已编译的 C 程序,按照约定编写,允许其在 Beacon 进程内执行并使用内部 Beacon API。BOF 是一种通过新的利用后功能快速扩展 Beacon 代理的方法。 BOF 的占地面积较小。它们在 Beacon 进程内部运…...

C/C++ 题目:给定字符串s1和s2,判断s1是否是s2的子序列
判断子序列一个字符串是否是另一个字符串的子序列 解释:字符串的一个子序列是原始字符串删除一些(也可以不删除)字符,不改变剩余字符相对位置形成的新字符串。 如,"ace"是"abcde"的一个子序…...

Nginx的stream配置
一、stream模块概要。 stream模块一般用于tcp/UDP数据流的代理和负载均衡,可以通过stream模块代理转发TCP消息。 ngx_stream_core_module模块由1.9.0版提供。 默认情况下,没有构建此模块。 -必须使用-with stream配置参数启用。 也就是说,必…...

ubuntu 20.04 server 安装 zabbix
ubuntu 20.04 server 安装 zabbix 参考文档 zabbix没用过,用过prometheus, 因为现在很多应用都支持直接接入prometheus监控, 而且大部分语言都都有sdk支持, 可以直接接入自己的业务数据监控。 https://www.zabbix.com/cn/downlo…...

hive映射es表任务失败,无错误日志一直报Task Transitioned from NEW to SCHEDULED
一、背景 要利用gpt产生的存放在es种的日志表做统计分析,通过hive建es的映射表,将es的数据拉到hive里面。 在最初的时候同事写的是全量拉取,某一天突然任务报错,但是没有错误日志一直报:Task Transitioned from NEW t…...