前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python】pandas中的read_excel()和to_excel()函数解析与代码实现

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

作者头像
程序员洲洲
发布2024-06-12 08:35:39
6040
发布2024-06-12 08:35:39
举报
文章被收录于专栏:项目文章项目文章

本文目录

  • 前言
  • 一、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 基础语法

代码语言:javascript
复制
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)

常用的参数说明:

代码语言:javascript
复制
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, 指定列的名字。

示例代码

代码语言:javascript
复制
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文件。你可以控制输出的格式、工作表名称等。

基础语法

代码语言:javascript
复制
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)

常用的参数说明:

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

示例代码

代码语言:javascript
复制
# 将DataFrame写入Excel文件
df.to_excel('output_excel_file.xlsx', sheet_name='Sheet1')

# 只写入特定的列
df.to_excel('output_excel_file.xlsx', columns=['Column1', 'Column2'])

三、代码案例

读取并处理Excel数据

代码语言:javascript
复制
# 读取Excel文件
df = pd.read_excel('data.xlsx')

# 数据清洗:去除重复记录
df = df.drop_duplicates()

# 将处理后的数据写回Excel
df.to_excel('cleaned_data.xlsx')

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

代码语言:javascript
复制
# 读取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文件

代码语言:javascript
复制
# 写入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.book
    worksheet = writer.sheets['Sheet1']
    worksheet.set_column('A:D', 15)  # 设置列宽

四、read_excel()数据实战

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

代码语言:javascript
复制
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 695

sheet2:
ID  NUM-1   NUM-2   NUM-3
36906   190 527 691
36907   101 403 470

函数原型

代码语言:javascript
复制
basestation ="F://pythonBook_PyPDAM/data/test.xls"
data = pd.read_excel(basestation)
print data

输出一个dataframe

代码语言:javascript
复制
      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

代码语言:javascript
复制
data_1 = pd.read_excel(basestation,sheetname=[0,1])
print data_1
print type(data_1)

输出:dict of dataframe

代码语言:javascript
复制
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 ,注意这里还有列名的一行。

代码语言:javascript
复制
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    695

data = pd.read_excel(basestation,header=[3])
print data
输出:
   36903  144    600    521  
0  36904     95    457    468
1  36905     69    596    695

skiprows

省略指定行数的数据

代码语言:javascript
复制
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行的数据

代码语言:javascript
复制
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”

代码语言:javascript
复制
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

指定列的名字。

代码语言:javascript
复制
data = pd.read_excel(basestation,names=["a","b","c","e"])
print data
       a    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()数据实战

数据源

代码语言:javascript
复制
    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,输出路径。

代码语言:javascript
复制
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页面。

代码语言:javascript
复制
data.to_excel(basestation_end,sheet_name="sheet2")

na_rep

缺失值填充

代码语言:javascript
复制
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 选择输出的的列。

代码语言:javascript
复制
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 则不输出题头。

代码语言:javascript
复制
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 设置索引列的列名。

代码语言:javascript
复制
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 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、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
                                    相关产品与服务
                                    数据保险箱
                                    数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档