【Python】pandas中的read_excel()和to_excel()函数解析与代码实现

在这里插入图片描述

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。
🤓 同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深度学习从0到1系列文章。
🌼 同时洲洲已经建立了程序员技术交流群,如果您感兴趣,可以私信我加入社群,可以直接vx联系(文末有名片)v:bdizztt
🖥 随时欢迎您跟我沟通,一起交流,一起成长、进步!点此也可获得联系方式~

本文目录

  • 前言
  • 一、read_excel()函数简介
    • 1.1 基础语法
  • 二、to_excel()函数简介
  • 三、代码案例
    • 读取并处理Excel数据
    • 场景2:合并多个Excel工作表
    • 写入格式化的Excel文件
  • 四、read_excel()数据实战
    • 函数原型
    • sheetname
    • header
    • skiprows
    • skip_footer
    • index_col
    • names
  • 五、to_excel()数据实战
    • excel_writer
    • sheet_name
    • na_rep
    • colums
    • header
    • index
  • 总结

前言

Pandas是Python中用于数据分析和操作的强大库,它提供了许多方便的函数来处理各种格式的数据。

Excel文件作为一种常见的数据存储格式,在数据处理中经常用到。

Pandas提供了read_excel()函数来读取Excel文件,以及to_excel()函数将数据写入Excel。

本文将详细解析这两个函数的用法,并通过代码示例展示它们在不同场景下的应用。

一、read_excel()函数简介

Pandas是一个开源的数据分析和操作库,它提供了快速、灵活和表达力强的数据结构,旨在使数据清洗和分析工作变得更加简单易行。Pandas是基于NumPy构建的,因此可以与NumPy无缝集成。

read_excel()函数用于读取Excel文件并将其转换为Pandas的DataFrame对象。这是处理Excel数据的基础。

1.1 基础语法

pandas.read_excel(io, sheet_name=0, header=0, names=None, 
index_col=None, usecols=None, 
dtype=None, engine=None, converters=None, true_values=None, 
false_values=None, skiprows=None, nrows=None, na_values=None, 
keep_default_na=True, verbose=True, parse_dates=False, 
date_parser=None, thousands=None, comment=None, 
skipfooter=0, convert_float=True, mangle_dupe_cols=True, **kwds)

常用的参数说明:

io : string, path object ; excel 路径。
sheetname : string, int, mixed list of strings/ints, or None, default 0 返回多表使用sheetname=[0,1],若sheetname=None是返回全表 注意:int/string 返回的是dataframe,而none和list返回的是dict of dataframe
header : int, list of ints, default 0 指定列名行,默认0,即取第一行,数据为列名行以下的数据 若数据不含列名,则设定 header = None
skiprows : list-like,Rows to skip at the beginning,省略指定行数的数据
skip_footer : int,default 0, 省略从尾部数的int行数据
index_col : int, list of ints, default None指定列为索引列,也可以使用u”strings”
names : array-like, default None, 指定列的名字。

示例代码

import pandas as pd# 读取Excel文件
df = pd.read_excel('path_to_your_excel_file.xlsx')# 只读取特定的列
df = pd.read_excel('path_to_your_excel_file.xlsx', usecols=['Column1', 'Column2'])

二、to_excel()函数简介

to_excel()函数用于将DataFrame对象写入Excel文件。你可以控制输出的格式、工作表名称等。

基础语法

DataFrame.to_excel(io, excel_writer, sheet_name='Sheet1',
na_rep='', float_format=None, columns=None, header=True, 
index=True, index_label=None, startrow=0, startcol=0, 
engine=None, merge_cells=True, encoding=None, 
inf_rep='inf', verbose=True, freeze_panes=None, 
storage_options=None)

常用的参数说明:

io: Excel文件的路径或文件对象。
sheet_name: 写入的工作表名称。
na_rep: 缺失值的表示方式,默认为空字符串。
columns: 指定要写入的列。
header: 是否写入列名。
index: 是否写入索引。

示例代码

# 将DataFrame写入Excel文件
df.to_excel('output_excel_file.xlsx', sheet_name='Sheet1')# 只写入特定的列
df.to_excel('output_excel_file.xlsx', columns=['Column1', 'Column2'])

三、代码案例

读取并处理Excel数据

# 读取Excel文件
df = pd.read_excel('data.xlsx')# 数据清洗:去除重复记录
df = df.drop_duplicates()# 将处理后的数据写回Excel
df.to_excel('cleaned_data.xlsx')

场景2:合并多个Excel工作表

# 读取Excel文件中的所有工作表
xls = pd.ExcelFile('multi_sheets.xlsx')# 遍历工作表并读取数据
dfs = {sheet: xls.parse(sheet) for sheet in xls.sheet_names}# 合并所有工作表的数据
combined_df = pd.concat(dfs.values(), ignore_index=True)# 将合并后的数据写入新的Excel文件
combined_df.to_excel('combined_data.xlsx', index=False)

写入格式化的Excel文件

# 写入Excel文件,指定列名和不写入索引
df.to_excel('formatted_data.xlsx', index=False, header=True, columns=['Column1', 'Column2'])# 使用ExcelWriter来设置工作表的格式
with pd.ExcelWriter('styled_data.xlsx', engine='xlsxwriter') as writer:df.to_excel(writer, sheet_name='Sheet1', startrow=2, startcol=3, index=False)workbook  = writer.bookworksheet = writer.sheets['Sheet1']worksheet.set_column('A:D', 15)  # 设置列宽

四、read_excel()数据实战

假设我们拥有数据源如下:

sheet1:
ID  NUM-1   NUM-2   NUM-3
36901   142 168 661
36902   78  521 602
36903   144 600 521
36904   95  457 468
36905   69  596 695sheet2:
ID  NUM-1   NUM-2   NUM-3
36906   190 527 691
36907   101 403 470

函数原型

basestation ="F://pythonBook_PyPDAM/data/test.xls"
data = pd.read_excel(basestation)
print data

输出一个dataframe

      ID  NUM-1  NUM-2  NUM-3
0  36901    142    168    661
1  36902     78    521    602
2  36903    144    600    521
3  36904     95    457    468
4  36905     69    596    695

sheetname

sheetname参数:返回多表使用sheetname=[0,1],若sheetname=None是返回全表

注意:int/string 返回的是dataframe,而none和list返回的是dict of dataframe

data_1 = pd.read_excel(basestation,sheetname=[0,1])
print data_1
print type(data_1)

输出:dict of dataframe

OrderedDict([(0, ID  NUM-1  NUM-2  NUM-3
0  36901    142    168    661
1  36902     78    521    602
2  36903    144    600    521
3  36904     95    457    468
4  36905     69    596    695), 
(1,       ID  NUM-1  NUM-2  NUM-3
0  36906    190    527    691
1  36907    101    403    470)])

header

指定列名行,默认0,即取第一行,数据为列名行以下的数据 若数据不含列名,则设定 header = None ,注意这里还有列名的一行。


data = pd.read_excel(basestation,header=None)
print data
输出:0      1      2      3
0     ID  NUM-1  NUM-2  NUM-3
1  36901    142    168    661
2  36902     78    521    602
3  36903    144    600    521
4  36904     95    457    468
5  36905     69    596    695data = pd.read_excel(basestation,header=[3])
print data
输出:36903  144    600    521  
0  36904     95    457    468
1  36905     69    596    695

skiprows

省略指定行数的数据

data = pd.read_excel(basestation,skiprows = [1])
print data
输出:ID  NUM-1  NUM-2  NUM-3
0  36902     78    521    602
1  36903    144    600    521
2  36904     95    457    468
3  36905     69    596    695

skip_footer

省略从尾部数的int行的数据

data = pd.read_excel(basestation, skip_footer=3)
print data
输出:ID  NUM-1  NUM-2  NUM-3
0  36901    142    168    661
1  36902     78    521    602

index_col

指定列为索引列,也可以使用u”strings”

data = pd.read_excel(basestation, index_col="NUM-3")
print data
输出:ID  NUM-1  NUM-2
NUM-3                     
661    36901    142    168
602    36902     78    521
521    36903    144    600
468    36904     95    457
695    36905     69    596

names

指定列的名字。

data = pd.read_excel(basestation,names=["a","b","c","e"])
print dataa    b    c    e
0  36901  142  168  661
1  36902   78  521  602
2  36903  144  600  521
3  36904   95  457  468
4  36905   69  596  695

五、to_excel()数据实战

数据源

    ID  NUM-1   NUM-2   NUM-3
0   36901   142 168 661
1   36902   78  521 602
2   36903   144 600 521
3   36904   95  457 468
4   36905   69  596 695
5   36906   165 453 加载数据:
basestation ="F://python/data/test.xls"
basestation_end ="F://python/data/test_end.xls"
data = pd.read_excel(basestation)

excel_writer

参数excel_writer,输出路径。

data.to_excel(basestation_end)
输出:ID  NUM-1   NUM-2   NUM-3
0   36901   142 168 661
1   36902   78  521 602
2   36903   144 600 521
3   36904   95  457 468
4   36905   69  596 695
5   36906   165 453 

sheet_name

将数据存储在excel的那个sheet页面。

data.to_excel(basestation_end,sheet_name="sheet2")

na_rep

缺失值填充

data.to_excel(basestation_end,na_rep="NULL")
输出:ID  NUM-1   NUM-2   NUM-3
0   36901   142 168 661
1   36902   78  521 602
2   36903   144 600 521
3   36904   95  457 468
4   36905   69  596 695
5   36906   165 453 NULL

colums

sequence, optional,Columns to write 选择输出的的列。

data.to_excel(basestation_end,columns=["ID"])
输出ID
0   36901
1   36902
2   36903
3   36904
4   36905
5   36906

header

boolean or list of string,默认为True,可以用list命名列的名字。header = False 则不输出题头。

data.to_excel(basestation_end,header=["a","b","c","d"])
输出:a   b   c   d
0   36901   142 168 661
1   36902   78  521 602
2   36903   144 600 521
3   36904   95  457 468
4   36905   69  596 695
5   36906   165 453 data.to_excel(basestation_end,header=False,columns=["ID"])
header = False 则不输出题头
输出:
0   36901
1   36902
2   36903
3   36904
4   36905
5   36906

index

index:boolean, default True Write row names (index)
默认为True,显示index,当index=False 则不显示行索引(名字)。

index_label : string or sequence, default None 设置索引列的列名。

data.to_excel(basestation_end,index=False)
输出:
ID  NUM-1   NUM-2   NUM-3
36901   142 168 661
36902   78  521 602
36903   144 600 521
36904   95  457 468
36905   69  596 695
36906   165 453 data.to_excel(basestation_end,index_label=["f"])
输出:
f   ID  NUM-1   NUM-2   NUM-3
0   36901   142 168 661
1   36902   78  521 602
2   36903   144 600 521
3   36904   95  457 468
4   36905   69  596 695
5   36906   165 453 

总结

📝Hello,各位看官老爷们好,我已经建立了CSDN技术交流群,如果你很感兴趣,可以私信我加入我的社群。

📝社群中不定时会有很多活动,例如每周都会包邮免费送一些技术书籍及精美礼品、学习资料分享、大厂面经分享、技术讨论谈等等。

📝社群方向很多,相关领域有Web全栈(前后端)、人工智能、机器学习、自媒体副业交流、前沿科技文章分享、论文精读等等。

📝不管你是多新手的小白,都欢迎你加入社群中讨论、聊天、分享,加速助力你成为下一个大佬!

📝想都是问题,做都是答案!行动起来吧!欢迎评论区or后台与我沟通交流,也欢迎您点击下方的链接直接加入到我的交流社群!~ 跳转链接社区~

在这里插入图片描述

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

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

相关文章

类和对象的学习总结(一)

面向对象和面向过程编程初步认识 C语言是面向过程的,关注过程(分析求解问题的步骤) 例如:外卖,关注点菜,接单,送单等 C是面向对象的,关注对象,把一件事拆分成不同的对象&…

java之面向对象2笔记

1 接口(interface) 1.1 概述 接口(Interface)在计算机科学中,特别是在面向对象编程(OOP)中,是一个重要的概念。它定义了一组方法的规范,但没有实现这些方法的具体代码。接口的主要目的是确保类…

SOA的设计模式_3.微服务模式

SOA的架构中,复杂的ESB企业服务总线依然处于非常重要的位置,整个系统的架构并没有实现完全的组件化以及面向服务,它的学习和使用门槛依然偏高。而微服务不再强调传统SOA架构里面比较重的ESB企业服务总线,同时SOA的思想进入到单个业…

Linux系统下 安装 Nginx

一、下载Nginx安装包 压缩包下载地址:nginx: download 服务器有外网,可直接使用命令下载 wget -c https://nginx.org/download/nginx-1.24.0.tar.gz 二、安装Nginx 1、解压 tar -zxvf nginx-1.24.0.tar.gz 2、安装Nginx所需依赖 yum install -y gc…

SLAM小题目

1、最小二乘题目&#xff1a; 假设有三个WIFI热点&#xff0c;位置分别在(x1,y1), (x2,y2), (x3,y3), 移动端测量到每一个热点的距离L1,L2和L3&#xff0c;要求解移动端的位置. #include <iostream> #include <vector> #include <cmath> class Point { pub…

监听DB配置变更之go-broadcast简单实现

文章目录 1. 前言2. 分析3. 实现4. 问题5. 小结6. 参考 1. 前言 之前遇到一个需求&#xff0c;因为配置的查找是基于db的&#xff0c;而db的更改却无法实时通知到具体利用到这条数据的使用方&#xff0c;为了实现db数据变动时&#xff0c;能够尽快让使用方知道这条数据发生了变…

3、线性代数

1、矩阵转置 A[i,j]A[j,i] 2、对称矩阵 &#xff1a;A转置A [0,2,3] [2 1 5] [3,5,1] 3、三维矩阵 求和 axis0 两个矩阵相加 axis1 两个向量相加 &#xff0c;axis2 向量内部相加 keepdimsTrue 求和后维度保持不变 4、cumsum累加求和 5、torch.mm() 或 torch.bmm() 【矩…

支持YUV和RGB格式两路视频同时播放

1.头文件&#xff1a; sdlqtrgb.h #pragma once #include <QtWidgets/QWidget> #include "ui_sdlqtrgb.h" #include <thread> class SdlQtRGB : public QWidget {Q_OBJECTpublic:SdlQtRGB(QWidget* parent Q_NULLPTR);~SdlQtRGB(){is_exit_ true;//等…

十大排序

本文将以「 通俗易懂」的方式来描述排序的基本实现。 &#x1f9d1;‍&#x1f4bb;阅读本文前&#xff0c;需要一点点编程基础和一点点数据结构知识 本文的所有代码以cpp实现 文章目录 排序的定义 插入排序 ⭐ &#x1f9d0;算法描述 &#x1f496;具体实现 &#x1f…

LabVIEW硬件与仿真双模式设计液压系统

在实际项目中&#xff0c;结合LabVIEW与液压运动控制器&#xff0c;通过设计两种运行方式&#xff1a;硬件运行和仿真运行&#xff0c;使得系统既能进行实际操作又能进行仿真测试。此设计不仅方便了开发调试&#xff0c;也为教学培训和展示提供了极大的便利。本文将从项目背景、…

【机器学习】基于卷积LSTM的视频预测

1. 引言 1.1 LSTM是什么 LSTM&#xff08;Long Short-Term Memory&#xff09;是一种特殊的循环神经网络&#xff08;RNN&#xff09;变体&#xff0c;旨在解决传统RNN在处理长序列数据时遇到的梯度消失和梯度爆炸问题。LSTM通过引入门控机制和细胞状态的概念&#xff0c;使得…

QPS,平均时延和并发数

我们当前有两个服务A和B&#xff0c;想要知道哪个服务的性能更好&#xff0c;该用什么指标来衡量呢&#xff1f; 1. 单次请求时延 一种最简单的方法就是使用同一请求体同时请求两个服务&#xff0c;性能越好的服务时延越短&#xff0c;即 R T 返回结果的时刻 − 发送请求的…

【Python教程】4-字符串、列表、字典、元组与集合操作

在整理自己的笔记的时候发现了当年学习python时候整理的笔记&#xff0c;稍微整理一下&#xff0c;分享出来&#xff0c;方便记录和查看吧。个人觉得如果想简单了解一名语言或者技术&#xff0c;最简单的方式就是通过菜鸟教程去学习一下。今后会从python开始重新更新&#xff0…

AI大模型探索之路-实战篇16:优化决策流程:Agent智能数据分析平台中Planning功能实践

系列篇章&#x1f4a5; AI大模型探索之路-实战篇4&#xff1a;深入DB-GPT数据应用开发框架调研 AI大模型探索之路-实战篇5&#xff1a;探索Open Interpreter开放代码解释器调研 AI大模型探索之路-实战篇6&#xff1a;掌握Function Calling的详细流程 AI大模型探索之路-实战篇7…

现代x86汇编-环境安装

今天端午节&#xff0c;独自在家&#xff0c;翻阅了张银奎老师编写的《现代x86汇编语言程序设计》一书&#xff0c;前言部分说明书中示例代码都是用微软visual C工具编写并使用微软宏汇编&#xff08;著名的MASM&#xff09;编译的&#xff0c;好久没有用微软vc了&#xff0c;假…

详解FedProx:FedAvg的改进版 Federated optimization in heterogeneous networks

FedProx&#xff1a;2020 FedAvg的改进 论文&#xff1a;《Federated Optimization in Heterogeneous Networks》 引用量&#xff1a;4445 源码地址&#xff1a; 官方实现&#xff08;tensorflow&#xff09;https://github.com/litian96/FedProx 几个pytorch实现&#xff1a;…

基于STM32的595级联的Proteus仿真

文章目录 一、595级联1.题目要求2.思路3.仿真图3.1 未仿真时3.2 模式A3.2 模式B3.3 故障模式 二、总结 一、595级联 1.题目要求 STM32单片机&#xff0c;以及三个LED灯对应红黄绿灯&#xff0c;IIC的OLED显示屏&#xff0c;温湿度传感器DHT11&#xff0c;两个独立按键和两个5…

MySQL时间和日期类型详解(零基础入门篇)

目录 1. DATE 2. DATETIME 3. TIMESTAMP 4. TIME 5. YEAR 6. 日期和时间的使用示例 以下SQL语句的测试可以使用命令行&#xff0c;或是使用SQL工具比如MySQL Workbench或SQLynx等。 在 MySQL 中&#xff0c;时间和日期数据类型用于存储与时间相关的数据&#xff0c;如何…

重温共射放大电路

1、放大概念 小功率信号变成一个大功率信号&#xff0c;需要一个核心器件做这件事&#xff0c;核心器件的能量由电源提供&#xff0c;通过核心器件用小功率的信号去控制大电源&#xff0c;来实现能量的转换和控制&#xff0c;前提是不能失真&#xff0c;可以用一系列正弦波进行…

Running Gradle task ‘assembleDebug‘ Flutter项目

基于Android方面运行Flutter项目一直卡在 Launching lib\main.dart on Android SDK built for x86 in debug mode… Running Gradle task ‘assembleDebug’… 基础原因&#xff1a; 默认存放Gradle插件包的Maven仓库是国外(需VPN) 我的原因&#xff1a; 缺少JDK和缺少Androi…