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

python数据分析:使用pandas库读取和编辑Excel表

图片

使用 Pandas,我们可以轻松地读取和写入Excel 文件,之前文章我们介绍了其他多种方法。

使用前确保已经安装pandas和 openpyxl库(默认使用该库处理Excel文件)。没有安装的可以使用pip命令安装:

pip install pandas openpyxl -i https://mirrors.aliyun.com/pypi/simple/

读取excel文件

使用pandas的read_excel函数,读取excel文件,默认返回DataFrame数据格式。

图片

函数参数有很多,主要介绍下常用的参数:

  • io:字符串或文件对象,表示要读取的Excel 文件的路径或文件对象。
  • sheet_name:字符串、整数或字符串列表,表示要读取的工作表名称、工作表索引(从 0 开始)或工作表名称的列表。默认值表示读取第一个工作表。
  • header:用作列名的行号,默认为0(第一行)。如果没有列名,则设为None。也可以指定多行作为多级列名,例如header=[0, 1]。
  • names:列名列表,当header=None时,可以使用此参数自定义列名。index_col:用作索引的列编号或列名。默认为None,使用CSV文件中的行索引作为DataFrame的索引。
  • usecols:返回的列,可以是列名的列表或由列索引组成的列表。用于选择性地读取CSV文件中的某些列。
  • dtype:字典或列表,指定某些列的数据类型。例如,dtype={'column1': int, 'column2': float}。
  • Converters:一个字典,用于对特定列的数据进行转换。键是列名或列索引,值是一个函数,用于将该列的数据进行转换。
  • engine:字符串,用于指定读取Excel文件的引擎。Pandas 默认使用openpyxl读取.xlsx 文件,使用xlrd读取.xls文件。引擎主要有["xlrd", "openpyxl", "odf", "pyxlsb", "calamine"]
  • skiprows:需要忽略的行数(从文件开头算起),或需要跳过的行号列表。
  • nrows:需要读取的行数(从文件开头算起)。用于从大文件中提取部分数据。
  • skipfooter:文件尾部需要忽略的行数。

举例:准备一个excel文件如下:

图片

1)读取文件为DataFrame对象,并打印对象的数据

import pandas as pddf = pd.read_excel("1.xlsx")print(df)

结果:这个结果跟excel表格中的数据结构很类似。

图片

2)读取文件为DataFrame对象,并使用converters参数将name列的数据大写

import pandas as pd#converters参数是一个字典,key为name列,value为lambda函数df = pd.read_excel("1.xlsx",converters={'name':lambda x:x.upper()})
print(df)

结果:

图片

3)读取文件为DataFrame对象,并使用dtype参数将age列返回浮点数,通过nrows参数只读取前2行

import pandas as pddf = pd.read_excel("1.xlsx",dtype={'age':float})
print(df)

结果:

图片

当然这些参数可以组合实现某些特定功能,大家不妨自己尝试下,读取的数据可以继续做数据筛选,清洗、分类聚合等统计分析功能(具体可参考上一篇文章介绍python数据分析:介绍pandas库的数据类型Series和DataFrame)

保存为excel文件

使用DataFrame对象的to_excel函数将DataFrame格式数据保存为excel文件

图片

常用参数介绍:

. excel_writer指定要写入的目标对象,可以是文件路径(字符串)或者是一个 ExcelWriter 对象。

. sheet_name:要写入的工作表名称。默认值是Sheet1。

. na_rep:用于指定缺失值(NaN)的表示方式。默认值是""(空字符串)。

. float_format:用于格式化浮点数。如果需要控制浮点数的显示格式,可以使用这个参数。例如"%.2f"会将浮点数格式化为保留两位小数的形式。

. columns: sequence,:指定要写入的列名列表。如果为 None,则写入所有列。

. index: 默认为 True。表示是否将行(索引)标签写入文件。header: 默认为 True。是否将列名(表头)写入文件。如果为 False,则不写入列名;也可以是一个字符串列表,指定列名的别名。

. startrow:指定从Excel表格的第几行开始写入数据。默认值是 0,表示从第一行开始

. startcol:指定从Excel表格的第几列开始写入数据。默认值是 0,表示从第一列开始。

. engine:用于指定写入 Excel 文件所使用的引擎,和read_excel函数中的engine类似。可以是openpyxl、xlsxwriter等,默认是openpyxl(如果已安装)。

. merge_cells:用于指定是否合并单元格。默认值是False。如果设置为True,并且有重复的列名或行索引等情况,可能会合并单元格。

. encoding:用于指定编码方式。默认值通常是UTF8编码。

1)举例1:读取excel表,然后再保存为excel表

import pandas as pddf = pd.read_excel("example.xlsx",dtype={'age':float},nrows=2)#添加一些参数 不写入索引 不写入表头 从第1行和第2列开始才写入df.to_excel("example1.xlsx",index=False,header=False,startrow=1,startcol=2)

保存后打开如下:

图片

2)举例2:配合使用 ExcelWriter对象将同的DataFrame写入同一个Excel文件的不同工作表

import pandas as pd
data_dict = {'group': ['A', 'C', 'B', 'A', 'A', 'C', 'B', 'B', 'C'],
'name': ['lilei', 'lili', 'wanglei', 'wangning', 'wangling', 'wangming', 'wangyu', 'liyi', 'xiaolei'],
'age': [25, 30, 35,21,23,24,25,26,32],
'city': ['shanghai', 'shenzhen', 'nanjing','shanghai', 'shenzhen', 'nanjing','shanghai', 'shenzhen', 'nanjing']}
df = pd.DataFrame(data_dict)
#将name列写入sheet1,将group列写入sheet2,保存为2.xlsx
with pd.ExcelWriter("2.xlsx") as writer:df1 = df['name']df1.to_excel(writer, sheet_name="Sheet1")df2 =df['group']df2.to_excel(writer, sheet_name="Sheet2")

结果:

图片

图片

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习,谢谢大家。

新的一年祝大家万事如意,财源滚滚!!!!!!

相关文章:

python数据分析:使用pandas库读取和编辑Excel表

使用 Pandas,我们可以轻松地读取和写入Excel 文件,之前文章我们介绍了其他多种方法。 使用前确保已经安装pandas和 openpyxl库(默认使用该库处理Excel文件)。没有安装的可以使用pip命令安装: pip install pandas ope…...

开源轻量级文件分享服务Go File本地Docker部署与远程访问

???欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老…...

异步背后的奥秘:事件循环

异步背后的奥秘:事件循环 复习环节 JavaScript运行时 我们都知道,JavaScript本身是一个单线程的,那JavaScript是如何处理同时发生的多个任务的呢? 首先JavaScript引擎运行在一个容器中,这个容器可能是浏览器或者nod…...

Springboot使用RabbitMQ实现关闭超时订单的一个简单示例

1.maven中引入rabbitmq的依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> 2.application.yml中进行rabbitmq相关配置&#xff1a; # rabbit…...

小程序基础 —— 07 创建小程序项目

创建小程序项目 打开微信开发者工具&#xff0c;左侧选择小程序&#xff0c;点击 号即可新建项目&#xff1a; 在弹出的新页面&#xff0c;填写项目信息&#xff08;后端服务选择不使用云服务&#xff0c;开发模式为小程序&#xff0c;模板选择为不使用模板&#xff09;&…...

【Golang 面试题】每日 3 题(十五)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…...

Docker命令(用法说明详解)

一、常见Docker容器命令 #根据image创建一个新容器并运行&#xff08;即使该image已经存在容器&#xff0c;也会再创建一个新容器&#xff09; docker run IMAGE_NAME #根据image创建一个新容器并运行。 #选项-d&#xff1a;指定容器为后台运行&#xff0c;--name自定义该容器…...

leetcode 热题100(131. 分割回文串)c++

链接&#xff1a;131. 分割回文串 - 力扣&#xff08;LeetCode&#xff09; 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 示例 1&#xff1a; 输入&#xff1a;s "aab" 输出&#xff…...

vs2022编译opencv 4.10.0

参考&#xff1a;Windosw下Visual Studio2022编译OpenCV与参考区别在于&#xff0c;没有用cmake GUI&#xff0c;也没有创建build目录&#xff0c;直接用vs2022打开了C:\code\opencv目录&#xff0c;即CMakeLists.txt所在根目录。没有修改默认下载地址&#xff0c;采用手动下载…...

Bash 中的 2>1 | tee 命令详解

Bash 中的 2>&1 | tee 命令详解 在 Linux 和 Unix 系统中&#xff0c;命令行提供了强大的输出控制功能&#xff0c;能够灵活地处理标准输入&#xff08;stdin&#xff09;、标准输出&#xff08;stdout&#xff09;和标准错误&#xff08;stderr&#xff09;。本文将详…...

MySQL数据库的日志

一、概论 日志&#xff08;log&#xff09;是一种记录系统运行时各种状态和事件的文件。 它通常用于系统监控、故障排查、安全审计和性能分析。日志文件可以记录用户操作、系统错误、应用程序行为等信息。日志文件通常包含时间戳、事件类型、事件描述等关键信息&#xff0c;以…...

DataCap 2024.4.1 版本发布:MongoDB 驱动支持、工作流引擎升级

尊敬的 DataCap 用户&#xff1a; DataCap 2024.4.1 版本现已正式发布。本次更新包含多项重要功能升级和性能优化&#xff0c;现将主要更新内容公布如下&#xff1a; 核心功能升级 数据库功能增强 (实现功能) 新增数据库管理功能&#xff1a;支持创建、删除和切换数据库完善表…...

二十三种设计模式-单例模式

单例模式&#xff08;Singleton&#xff09;&#xff1a;确保一个类只有一个实例&#xff0c;并提供一个全局访问点。 单例模式两种实现方法&#xff1a;懒汉式和饿汉式。 懒汉式&#xff08;Lazy Initialization&#xff09; 懒汉式单例模式在第一次被使用时才创建实例&…...

【微服务】SpringBoot 国际化适配方案使用详解

目录 一、前言 二、国际化概述 2.1 微服务中的国际化是什么 2.1.1 国际化概念 2.1.2 为什么需要国际化 2.2 微服务中常用的国际化方法 2.2.1 资源文件分离 2.2.2 使用国际化框架 2.2.3 使用动态模板 2.2.4 使用数据库存储 2.2.5 API设计结合配置中心 三、SpringBoot…...

太阳能电池板缺陷识别数据集,使用yolo,coco json,pasical voc xml格式标注,可识别旁路二极管,电池故障,热点,2234张原始图片

太阳能电池板缺陷识别数据集&#xff0c;使用yolo&#xff0c;coco json&#xff0c;pasical voc xml格式标注&#xff0c;可识别旁路二极管,电池故障,热点,2234张原始图片 以下是该项目的一些用例&#xff1a; 太阳能发电厂监控&#xff1a;该模型可用于自动化检查和识别大型…...

客户案例:基于慧集通平台集成打通小满CRM+金蝶云星空+钉钉

一、引言 本案例原型公司是一家生物科技公司&#xff0c;公司自开创以来专注于体外诊断生物活性原材料的研究、生产、销售和服务&#xff0c;致力于为全球体外诊断试剂生产企业提供领先且具有竞争力的核心原料和相关辅助产品服务。公司以卓越的产品和优质的服务赢得了客户的广…...

ubuntu 如何使用vrf

在Ubuntu或其他Linux系统中&#xff0c;您使用ip命令和sysctl命令配置的网络和内核参数通常是临时的&#xff0c;这意味着在系统重启后这些配置会丢失。为了将这些配置持久化&#xff0c;您需要采取一些额外的步骤。 对于ip命令配置的网络接口和路由&#xff0c;您可以将这些配…...

Debian-linux运维-ssh配置(兼容Jenkins插件的ssh连接公钥类型)

系统版本&#xff1a;Debian 12.5、11.1 1 生成密钥对 可以用云服务商控制台生成的密钥对&#xff0c;也可以自己在客户端或者服务器上生成&#xff0c; 已经有密钥对就可以跳过这步 用户默认密钥文件路径为 ~/.ssh/id_rsa&#xff0c;可以在交互中指定路径&#xff0c;也可…...

K8S详解(5万字详细教程)

目录 ​编辑 一、集群管理命令 二、命名空间 1. 获取命名空间列表 2. 创建命名空间 3. 删除命名空间 4. 查看命名空间详情 三、Pod 1. Pod概述 2. Pod相位状态 3. 管理命令 3.1 获取命名空间下容器(pod)列表 3.2 查看pod的详细信息 3.3 创建 && 运行 3.4 …...

Redis6为什么引入了多线程?

大家好&#xff0c;我是锋哥。今天分享关于【Redis6为什么引入了多线程&#xff1f;】面试题。希望对大家有帮助&#xff1b; Redis6为什么引入了多线程&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 6 引入了多线程的主要目的是提高性能&#…...

KMP 2024 年总结,Kotlin 崛起的一年

2024 Google I/O 上正式官宣了 KMP&#xff08;Kotlin Multiplatform&#xff09;项目&#xff0c;它是 Google Workspace 团队的一项长期「投资」项目&#xff0c;由 JetBrains 开发维护和开源的项目&#xff0c;简单来说&#xff0c;JetBrains 主导&#xff0c;Google Worksp…...

leecode188.买卖股票的最佳时机IV

这道题目我在买卖股票III就已经得出规律了&#xff0c;具体可看买卖股票的最佳时机||| class Solution { public:int maxProfit(int k, vector<int>& prices) {int nprices.size();vector<vector<int>> dp(n,vector<int>(2*k1,0));for(int j1;j&l…...

分布式消息队列RocketMQ

一、RocketMQ概述 1.1 MQ 概述 MQ&#xff0c;Message Queue&#xff0c;是一种提供消息队列服务的中间件&#xff0c;也成为消息中间件&#xff0c;是一套提供了消息生产、存储、消费全过程API的软件系统。消息即数据 1.2 MQ 用途 MQ的用途总结起来可分为以下三点 限流削峰…...

诗韵--代码之外的生活:2025 元旦歌

2025 元旦歌 1 说明2 正文3 简评 1 说明 又是一年元旦&#xff0c;在公司抽个空&#xff0c;写首诗纪念一下。 本系列博客&#xff1a;诗韵–代码之外的生活 2 正文 2025 元旦歌 一年又一年&#xff0c; 又到新元旦。 恍若零五年&#xff0c; 已是二五年。 工作忙连连&#x…...

SpringBoot项目启动的时候,指定jvm内存大小的3种方式

1. 通过命令行固定参数 在命令行中运行 Spring Boot 应用程序时&#xff0c;可以使用 -Xms 和 -Xmx 选项指定初始和最大堆内存大小。例如&#xff1a; java -Xms512m -Xmx1024m -jar mySpringBootApp.jar 优点&#xff1a; 简单明了 缺点&#xff1a; 是写死的&#xff0c;…...

学习vue3的笔记

一、vue和react的对比 1、基础介绍 vue&#xff1a;https://cn.vuejs.org/ vue3是2020年创建的 react&#xff1a;https://react.dev/ react是一个2013年开源的JavaScript库&#xff0c;严格意义上来说不是一个框架 2、diff算法 两个框架采用的都是同级对比策略 两节点对…...

MySQL UNION

关于《MySQL UNION》的操作&#xff0c;我查找到了一些有用的信息。 MySQL的UNION操作符用于将两个或多个SELECT语句的结果组合到一个结果集中&#xff0c;并去除重复的行。每个SELECT语句的列数和对应位置的数据类型必须相同。其基本语法格式如下&#xff1a; SELECT column…...

day21-ubuntu入门

小趣味docker 1.安装docker&#xff0c;从阿里云的yum yum install docker -y 2.需要提前准备好docker镜像&#xff0c;确保可用 docker -v 3.导入该游戏镜像&#xff08;先用systemctl start docker&#xff09; docker load < game_v2.tar 4.一条命令&#xff0c;在…...

开发小工具:ping地址

开发小工具&#xff1a;ping地址 import socketdef tcp_port_scan(ip,port):#创建套接字socksocket.socket(socket.AF_INET,socket.SOCK_STREAM)#设置超时sock.settimeout(0.2)try:#发请求result sock.connect_ex((ip,port))if result 0:print(f{ip}--{port}接口连接成功)res…...

在 Python 中使用 ADX 进行算法交易

在阅读本文前&#xff0c;可查阅以往文章: 技术指标-ATR 技术指标有几个分支&#xff0c;其中趋势指标使用最广泛。这些工具可帮助交易者确定市场趋势的方向和强度&#xff0c;使他们能够相应地调整交易。如果趋势指标得到有效应用&#xff0c;它们通常会产生积极的结果。 在…...