50_Pandas读取 Excel 文件 (xlsx, xls)

50_Pandas读取 Excel 文件 (xlsx, xls)50 Pandas 读取 Excel 文件 xlsx xls 要使用 pandas 将 Excel 文件 扩展名 xlsx xls 作为 pandas DataFrame 读取 请使用 pandas read excel 函数 这里 将描述以下内容 openpyxl xlrd 的安装 pandas read excel 的基本用法通过编号 工作表名称指定要读取的工作表 参数 sheet name 读取一张 Sheet 读取多张 Sheet 加载所有 Sheet 指定标头 索引 参数 he

50_Pandas读取 Excel 文件 (xlsx, xls)

要使用 pandas 将 Excel 文件(扩展名:.xlsx、.xls)作为 pandas.DataFrame 读取,请使用 pandas.read_excel () 函数。

这里,将描述以下内容。

  • openpyxl、xlrd的安装
  • pandas.read_excel()的基本用法
  • 通过编号/工作表名称指定要读取的工作表:参数 sheet_name
    • 读取一张Sheet
    • 读取多张Sheet
    • 加载所有Sheet
  • 指定标头、索引:参数header、index_col
  • 指定要读取的列和不读取的行:参数 usecols、skirows、skipfooter

以下面的 xlsx 文件为例。

sheet1

 A B C one 11 12 13 two 21 22 23 three 31 32 33 

sheet2

 AA BB CC ONE 11 12 13 TWO 21 22 23 THREE 31 32 33 

openpyxl、xlrd的安装

pandas.read_excel () 在内部使用名为 openpyxl 和 xlrd 的库。

openpyxl 和 xlrd 是在 Python 中读取和写入 Excel 文件(.xlsx、.xls)的库。

openpyxl 和 xlrd 都可以用 pip 安装。

$ pip install openpyxl $ pip install xlrd 

pandas.read_excel()的基本用法

在第一个参数 io 中指定 Excel 文件的路径或 URL。 如果您有多个工作表,则只有第一个工作表将作为 pandas.DataFrame 加载。

import pandas as pd print(pd.__version__) # 1.2.2 df = pd.read_excel('./data/sample.xlsx', index_col=0) print(df) # A B C # one 11 12 13 # two 21 22 23 # three 31 32 33 print(type(df)) # 
    

Index_col = 0 设置为使第一列索引。稍后将描述细节。 该示例读取 .xlsx 文件(Excel2007 之后的 Excel 文件),但同样适用于 .xls 文件(Excel97-2003 的 Excel 文件)。

通过编号/工作表名称指定要读取的工作表:参数 sheet_name

读取一张Sheet

要读取的工作表可以由参数 sheet_name 指定。通过以 0 开头的数字或工作表名称指定。

df_sheet_index = pd.read_excel('./data/sample.xlsx', sheet_name=0, index_col=0) print(df_sheet_index) # A B C # one 11 12 13 # two 21 22 23 # three 31 32 33 df_sheet_name = pd.read_excel('./data/sample.xlsx', sheet_name='sheet2', index_col=0) print(df_sheet_name) # AA BB CC # ONE 11 12 13 # TWO 21 22 23 # THREE 31 32 33 

读取多张Sheet

也可以在参数 sheet_name 中指定一个列表。您可以使用起始编号或工作表名称。 指定的数字或工作表名称被读取为键 key,该工作表的数据 pandas.DataFrame 被读取为值为 value 的字典 dict。

df_sheet_multi = pd.read_excel('./data/sample.xlsx', sheet_name=[0, 'sheet2'], index_col=0) print(type(df_sheet_multi)) # 
    print(len(df_sheet_multi)) # 2 print(df_sheet_multi.keys()) # dict_keys([0, 'sheet2']) 

读取时由数字指定的工作表的键是数字,由工作表名称指定的工作表的键是工作表名称。

print(df_sheet_multi[0]) # A B C # one 11 12 13 # two 21 22 23 # three 31 32 33 print(type(df_sheet_multi[0])) # 
    print(df_sheet_multi['sheet2']) # AA BB CC # ONE 11 12 13 # TWO 21 22 23 # THREE 31 32 33 print(type(df_sheet_multi['sheet2'])) # 
    

加载所有Sheet

如果设置了参数 sheet_name = None,则将读取所有工作表。

df_sheet_all = pd.read_excel('./data/sample.xlsx', sheet_name=None, index_col=0) print(type(df_sheet_all)) # 
    print(df_sheet_all.keys()) # dict_keys(['sheet1', 'sheet2']) 

指定标头、索引:参数header、index_col

要指定用作标题(pandas.DataFrame 的列名列)和索引(pandas.DataFrame 的行名索引)的行或列,请将行号/列号以 0 开头分别传递给参数 header 和 index_col。

如果 header 和 index_col 设置为 None,特定的行和列将不会用于 headers 和索引,它们将是从 0 开始的序列号。

df_header_index = pd.read_excel('./data/sample.xlsx', header=None, index_col=None) print(df_header_index) # 0 1 2 3 # 0 NaN A B C # 1 one 11 12 13 # 2 two 21 22 23 # 3 three 31 32 33 print(df_header_index.columns) # Int64Index([0, 1, 2, 3], dtype='int64') print(df_header_index.index) # RangeIndex(start=0, stop=4, step=1) 

默认为 header = 0(= 第一行是列),index_col = None(= 没有指定列作为索引)。

df_default = pd.read_excel('./data/sample.xlsx') print(df_default) # Unnamed: 0 A B C # 0 one 11 12 13 # 1 two 21 22 23 # 2 three 31 32 33 print(df_default.columns) # Index(['Unnamed: 0', 'A', 'B', 'C'], dtype='object') print(df_default.index) # RangeIndex(start=0, stop=3, step=1) 

如果pandas的版本比较旧,如果header中指定的行的第一个元素是NaN,即使默认也使用第一列作为索引(index_col = None)(源码未确认,所以不知道是什么类型的)处理它是。)。 如果要将第一列设置为索引,可以显式设置 index_col = 0 ,任何版本都可以放心。

print(pd.read_excel('./data/sample.xlsx', index_col=0)) # A B C # one 11 12 13 # two 21 22 23 # three 31 32 33 

也可以在参数名称中指定任何列名称列,如在读取 csv 文件的 read_csv () 中。有关详细信息,请参阅以下文章。

  • 03_Pandas读取csv/tsv文件(read_csv,read_table)

指定要读取的列和不读取的行:参数 usecols、skirows、skipfooter

如果不需要读取所有行/列,您可以指定读取哪些列和不读取哪些行。

在参数 usecols 中传递要读取的列号列表,在参数 skiprows 中传递要跳过(未读取)的行号列表,在参数 skipfooter 中传递要跳过(未读取)的最后行数。

df_use_skip = pd.read_excel('./data/sample.xlsx', index_col=0, usecols=[0, 1, 3], skiprows=[1], skipfooter=1) print(df_use_skip) # A C # two 21 23 

当然,也可以在读取时不处理行列,全部读取后删除行列或引用任意位置的元素。

  • 04_Pandas获取和修改任意位置的值(at,iat,loc,iloc)
  • 12_Pandas.DataFrame删除指定行和列(drop)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211571.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午10:07
下一篇 2026年3月18日 下午10:07


相关推荐

  • GoLand 2021.5.3 激活码【在线注册码/序列号/破解码】

    GoLand 2021.5.3 激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    53
  • 我的世界手机版虚拟人生服务器,我的世界大型虚拟人生整合包

    我的世界手机版虚拟人生服务器,我的世界大型虚拟人生整合包我的世界大型虚拟人生整合包将为大家带来超多丰富的模组 展开一场刺激的冒险之旅 增加了很多场景地图 玩起来更加丰富有趣 喜欢虚拟人生的玩家千万不要错过 快来一起下载吧 我的世界大型虚拟人生整合包介绍玩过 MC 虚拟人生 mod 的玩家 觉得还不过瘾的话 为你们带来这个最新的 我的世界大型虚拟人生整合包 为了带来一个新鲜 刺激 有趣的体验 游戏中加入大量的冒险元素 玩家可以经历农村生活 地牢探险 科技发展等

    2026年3月17日
    1
  • LockWorkStation in Windows 9X/ME/NT/2000

    LockWorkStation in Windows 9X/ME/NT/2000LockWorkStationinWindows9X/ME/NT/2000代码作者:Delphiscn(cnBlaster#sohu.com)http://blog.csdn.net/delphiscn程序原码:http://blog.csdn.net/delphiscn/archive/2005/06/25/403157.aspx在线下载:http://de1phiscn.bokee….

    2022年7月21日
    18
  • 终端terminal个性化配置[通俗易懂]

    终端terminal个性化配置[通俗易懂]http://blog.csdn.net/pipisorry/article/details/39584489{本文介绍linux终端字体颜色设置、终端提示符显示内容设置、自定义alias命令}linux打开终端快捷键:ctrl+alt+t新窗口中打开ctrl+shift+t新标签页中打开个人配置文件介绍系统默认状态下的终端显示为紫底白字(皮皮的…

    2022年7月13日
    16
  • Gemini API使用方法详解:支持Java/Python/JavaScript/C/GAS/Shell

    Gemini API使用方法详解:支持Java/Python/JavaScript/C/GAS/Shell

    2026年3月16日
    2
  • 启发式搜索简介

    启发式搜索简介启发式搜索 Heuristicall 又称为有信息搜索 InformedSear 它是利用问题拥有的启发信息来引导搜索 达到减少搜索范围 降低问题复杂度的目的 这种利用启发信息的搜索过程称为启发式搜索 简而言之 就是你搜索打出前几个字 就会弹出一些可能你想要的东西了 概念释义启发式策略可以通过指导搜索向最有希望的方向前进 降低了复杂性 通过删除某些状态及其延伸 启发式算法可以消除组合爆炸 并得到令人能接受的解 通常并不一定是最佳解 然而 启发式策略是极易出错的 在解决问

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号