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

news2025/1/5 17:25:00

图片

使用 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 pd

df = 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 pd

df = 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 pd

df = 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")

结果:

图片

图片

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

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

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

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

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

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

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

相关文章

“AI人工智能软件开发公司:创新技术,引领未来

大家好!今天我们来聊聊一个充满未来感的话题——AI人工智能软件开发公司。这个公司,用大白话说,就是专门研究和开发人工智能软件的地方,它们用最新的技术帮我们解决问题,让生活和工作变得更智能、更便捷。听起来是不是…

uniapp中使用ruoyiPlus中的加密使用(crypto-js)

package.json中添加 "crypto-js": "^4.2.0", "jsencrypt": "^3.3.2",但是vue2中使用 import CryptoJS from cryptojs; 这一步就会报错 参照 参照这里:vue2使用CryptoJS实现信息加解密 根目录下的js文档中新增一个AESwork.…

【SQL Server】教材数据库(1)

1 利用sql建立教材数据库,并定义以下基本表: 学生(学号,年龄,性别,系名) 教材(编号,书名,出版社编号,价格) 订购(学号…

全国计算机设计大赛大数据主题赛(和鲸赛道)经验分享

全国计算机设计大赛大数据主题赛(和鲸赛道)经验分享 这是“和鲸杯”辽宁省普通高等学校本科大学生计算机设计竞赛启动会汇报—大数据主题赛的文档总结。想要参加2025年此比赛的可以借鉴。 一、关于我 人工智能专业 计赛相关奖项: 2022年计…

AI对接之JSON Output

AI的JSON Output 实际对接指南 前言 本系列AI的API对接均以 DeepSeek 为例,其他大模型的对接方式类似。 在现代软件开发中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,因其简洁和易于人阅读的特…

Vue3实现PDF在线预览功能

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vue篇专栏内容:Vue3现PDF在线预览功能 前言 在开发中,PDF预览和交互功能是一个常见的需求。无论是管理…

SpringBootWeb案例-1

文章目录 SpringBootWeb案例1. 准备工作1.1 需求&环境搭建1.1.1 需求说明1.1.2 环境搭建 1.2 开发规范 2. 部门管理2.1 查询部门2.1.1 原型和需求2.1.2 接口文档2.1.3 思路分析2.1.4 功能开发2.1.5 功能测试 2.2 前后端联调2.3 删除部门2.3.1 需求2.3.2 接口文档2.3.3 思路…

css实现垂直文本

效果 知识 writing-mode: <value>; 可选值 horizontal-tb: 默认值。文本从左到右&#xff08;或从右到左&#xff09;排列&#xff0c;然后从上到下。vertical-rl: 文本从上到下排列&#xff0c;然后从右到左。适用于垂直书写的方向&#xff0c;如日语和中文。vertica…

vim里搜索关键字

vim是linux文本编辑器的命令&#xff0c;再vi的基础上做了功能增强 使用方法如下 1. / 关键字, 回车即可, 按n键查找关键字下一个位置 2.? 关键字, 回车即可, 按n键查找关键字下一个位置 3.示例

Qt之QtConcurrent

简介 QtConcurrent是针对qt中多线程相关的高层封装&#xff0c;如QFuture 结构 Qtconcurrent命名空间中的run支持的有 其对应的functor下结构为 类关系 functor对应的类核心关系为 #mermaid-svg-KLxZquz9yRsiYvQL {font-family:"trebuchet ms",verdana,a…

鸿蒙应用开发搬砖经验之-ArkWeb加载页面的超简单示例

前言 系统环境&#xff1a;Mac mini M2 14.5 (23F79) 开发IDE&#xff1a;DevEco Studio 5.0.1 Release 示例 第一步&#xff1a;创建一个Empty Ability工程 第二步&#xff1a;先run一下&#xff0c;确定工程初步化正常&#xff0c;模拟器正常启动应用&#xff08;要先提…

大模型系列17-RAGFlow搭建本地知识库

大模型系列17-RAGFlow搭建本地知识库 安装ollama安装open-wehui安装并运行ragflowRAG&#xff08;检索、增强、生成&#xff09;RAG是什么RAG三过程RAG问答系统构建步骤向量库构建检索模块生成模块 RAG解决LLM的痛点 使用ragflow访问ragflow配置ollama模型添加Embedding模型添加…

SimForge HSF 案例分享|复杂仿真应用定制——UAVSim无人机仿真APP(技术篇)

导读 「神工坊」核心技术——「SimForge HSF高性能数值模拟引擎」支持工程计算应用的快速开发、自动并行&#xff0c;以及多域耦合、AI求解加速&#xff0c;目前已实现航发整机数值模拟等多个系统级高保真数值模拟应用落地&#xff0c;支持10亿阶、100w核心量级的高效求解。其低…

微电网到底是什么?和光伏有什么关系?

在现代能源体系中&#xff0c;微电网作为一种新型的电力系统结构&#xff0c;正逐渐受到广泛关注和应用。那么&#xff0c;微电网到底是什么&#xff1f;它与光伏又有怎样的关系呢&#xff1f;本文将对此进行详细解析。 微电网的基本概念 微电网&#xff08;Micro-Grid&#x…

印象笔记06——再谈谈更新

印象笔记06——再谈谈更新 [!CAUTION] 好吧&#xff0c;我承认在前五期的努力下&#xff0c;我还是用的obsidian多一些。印象笔记很大程度用来弄清单&#xff0c;但是扭头看了看自己的会员时间&#xff0c;不能浪费啊&#xff01;本期再谈谈印象笔记近期的一些更新&#xff0c;…

爱死机第四季(秘密关卡)4KHDR国语字幕

通过网盘分享的文件&#xff1a;love_death_robot 链接: https://pan.baidu.com/s/1bG3Xtdopenil2O_y93hY_g?pwd8kib 提取码: 8kib

Android Studio学习笔记

01-课程前面的话 02-Android 发展历程 03-Android 开发机器配置要求 04-Android Studio与SDK下载安装 05-创建工程与创建模拟器

unity学习3:如何从github下载开源的unity项目

目录 1 网上别人提供的一些github的unity项目 2 如何下载github上的开源项目呢&#xff1f; 2.1.0 下载工具 2.1.1 下载方法1 2.1.2 下载方法2&#xff08;适合内部项目&#xff09; 2.1.3 第1个项目 和第4项目 的比较 第1个项目 第2个项目 第3个项目 2.1.4 下载方法…

自动驾驶新纪元:城区NOA功能如何成为智能驾驶技术的分水岭

目录 一、NOA 的定义 二、NOA 的主要特点 导航集成 场景覆盖 智能决策 高级感知能力 驾驶员参与 三、NOA 的优势 四、NOA的衡量指标 定性评价指标 安全性评价指标定义 可靠性评价指标定义 舒适性评价指标定义 通行效率评价指标 定量评价指标 五、代表厂商的实测…

解决uniapp H5页面限制输入框只能输数字问题

工作记录 最最近在做 uniapp 开发的移动端 H5 页面&#xff0c;有个需求是金额输入框只能输入数字&#xff0c;不能输入小数点和其他字符&#xff0c;经过各种尝试&#xff0c;发现其他字符可以通过正则过滤掉&#xff0c;但是输入小数点的话&#xff0c;因为没有触发 input 和…