Pandas.read_excel详解

2023-11-11

基础知识

pandas 可以读取多种的数据格式,针对excel来说,可以使用read_excel()读取数据,如下:

import pandas as pd
df=pd.read_excel('test_xls')
print(df.head())

在这里插入图片描述
但是,值得注意的是:pandas在读取excel文件的时候需要调用读取第三方库(简称 引擎)

举个不太恰当的例子,张三买车得到了一次砸金蛋的机会,他当然不能用手砸,于是他顺手抄起旁边的锤子就砸了一个金蛋。这个例子里面的张三相当于pandas,金蛋就是excel文件,锤子就是读取文件的引擎。

在pandas中支持四种excel的文件读取引擎,我们用的最多的是"xlrd"和"openpyxl",其中"xlrd"是用来读取".xls"文件的,而"openpyxl"是用来读取".xlsx"及其他07版以后的新格式

其实"xlrd"和"openpyxl"都是python的库,可以单独的安装使用。命令:pip install xlrd

语法

  • sheet_name:如果有多张表,这个参数可以用来指定要读取的表,如果不指定,但有多张表,那么就会读取活动的表(active worksheet)
  • dtype:如果需要指定列的数据类型,则需要用到这个参数。读取文件时每列都会有默认的推断数据类型,但有时推断的会有问题;比如员工的工号如果是纯数字的,就会被推断成int,这样那些0开头的工号就会读取的有问题,这时我们就需要强制将工号列定义为str类型
  • index_col:行索引所在列,详见下面的例子
  • header:列名所在的行,详见后面的例子
  • usecols:指定需要的列,默认所有的列都读取,如果指定其他的列就不读取

参数详解-index_col

在这里插入图片描述
在该代码中,df.head()用来读取数据的前5行,pandas会在读取数据后自动在数据前加一行索引,也就是在YM前面的一列,这个索引一般是用来定位数据的。默认情况下,index_col=None,也就是说默认会添加一列自增的行索引。

如果数据本身有索引列,可以指定第几列为索引,如索引在第一列那我们就写index_col=0,第二列就写index_col=1
在这里插入图片描述
**索引可以不唯一,也可以有多层索引(MultiIndex)如果有多层索引,那么index_col需要传入一个数组,**如,df=pd.read_excel('test.xls',index_col=[0,1,3])就是说把第一列,第二列,第四列都作为索引

参数详解-header

如果不指定的话默认自动谈价一行列索引,如果一个数据中出现两个列索引,可以使用header来告诉pandas列索引所在的位置,如header=[0,1]就是告诉pandas第一列和第二列都是列索引

参数详解-usecols

如果不想显示某一列,可以使用usecols参数。代码有三张写法

  1. 使用列字母
  2. 使用列的位置序号
  3. 使用列名称
    在这里插入图片描述
    在以上数据中,使用一下代码有相等的效果
df = pd.read_excel("pf.xlsx",usecols=["A,C:E"])
df = pd.read_excel("pf.xlsx",usecols=[1,3,4,5])
df = pd.read_excel("pf.xlsx",usecols=["YM,CJ2,CJ3,CJ4"])

参数详解-dtype

可以用来修改某一列读取的参数类型,一般在数据读取的时候,读到某一列全部是数据,会默认把该列的数据类型定义为int类型,但是,如果遇到数据是0开头的,就会出现问题,因此,可以使用dtype来定义某一列的数据类型为想要的类型,一般是把int类型定义为str类型读取。如一个学号的数据为001,如果不使用dtype,读取的时候,在终端上显示的就是1,如果使用dtype={"学号" : str }后,输出的结果为001

其他参数

  1. na_values:自定义的空值,比如说张三第一学期的语文考试因为某些原因没有靠,成绩那边填写的是“缺考”。那我们就可以设置na_values=[“缺考”],这样导入后张三第一学期的成绩就会自动被识别为pandas的默认空占位符NaN
  2. parse_dates:如果excel表里面的日期列填写的不太规范,可以使用这个参数,告诉pandas哪一列是日期,保证日期格式读取的准确性
  3. true_values:指定真值,比如true_values=[“是”],那么,数据中的”是“就会被识别为True
  4. false_values:指定假值,比如false_values=[“否”],那么,数据中的”否“就会被识别为False

多表读取

接下来让我们来看另一种情况,上面的例子中,Sheet1Sheet2放置在同一张表的,如果想要区分为两张表,一般方法是可以读两遍read_excel,搭配sheet_name=[表名]参数。

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches

df1=pd.read_excel('test.xls',sheet_name='Sheet1')
print(df1.head())

df2=pd.read_excel('test.xls',sheet_name='Sheet2')
print(df2.head())

在这里插入图片描述


顺带提一句如何用pandas写数据到excel

import pandas as pd


# pandas 存储数据到excel
def pd_toexcel(data,filename):
    dfData = { # 用字典设置DataFrame所需数据
        '序号':data[0],
        '项目':data[1],
        '数据':data[2]
    }
    df = pd.DataFrame(dfData) # 创建DataFrame
    df.to_excel(filename,index=False) # 存表,去除原始索引列(0,1,2...)



"""--------------数据用例---------------"""
orderIds=[1,2,3]
items=['A','B','C']
myData=[10,20,30]
testData=[orderIds,items,myData]

filename='write.xlsx'
pd_toexcel(testData,filename)


在这里插入图片描述

PS:这里需要用到openpyxl模块

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas.read_excel详解 的相关文章

随机推荐

  • Spring面试题整理

    Spring的优缺点是什么 优点 1 方便解耦 简化开发 Spring就是一个大工厂 可以将所有对象的创建和依赖关系的维护 交给Spring管理 2 AOP编程的支持 Spring提供面向切面编程 可以方便的实现对程序进行权限拦截 运行监控
  • WRF系列教程1:WRF如何得到更好的模拟结果?

    编者按 这是新开的一个系列 有时间会逐步将WRF官方培训的ppt挑选个人认为重要的进行翻译 以及结合个人的使用经验进行一些解释 由于个人水平有限 难免会出现偏差和错误 欢迎斧正 本篇内容来源于WRF官网2021年的培训ppt Applica
  • 如何用frp做内网穿透

    使用场景 需要将内网的一些应用端口开放出来 以便可以通过外网访问或者第三方调试使用 采用工具 frp 0 28 0 linux amd64 tar gz 工具下载地址 https github com fatedier frp releas
  • element 实现表格滚动vue-seamless-scroll --save

    npm install vue seamless scroll save main js import scroll from vue seamless scroll Vue use scroll
  • 服务器扩容 --挂载磁盘方式(学习笔记)

    一 查看服务器磁盘 df h fdisk l 可以看到新增加了一块硬盘 dev sdb 大概有4T的容量 二 挂载磁盘 1 进行磁盘分区 fdisk dev sdb sdb为新加磁盘名称 步骤如下 2 查看新建分区 fdisk l 3 对新
  • create connection SQLException, url: jdbc:mysql://localhost:3306/users?characterEncoding=utf-8, erro

    今天写JDBCTemplate的时候出现bug 一开始网上查的时候说可能是驱动版本和数据库版本不太对 但是后来手写连接用DriverManager获取连接是可以获取得到的 然后又用Druid连接池试了一下 也可以获取连接 所以排除这个问题
  • BP脑电数据处理

    BP Brain Products 脑电数据处理 一 BP分析软件导出数据 标签 1 1 BP分析软件加载原始数据 1 2导出Markers 1 3 将原始数据导出成edf格式输出 1 4 MATLAB处理 一 BP分析软件导出数据 标签
  • [机缘参悟-92]:《本质思考》- 本质思考的9种训练方法

    目录 前言 01 假设力 尽可能涵盖所有的可能方案 02 逆向思考力 从未来可能的失败倒推 03 共情力 不断地站在他人的角度看问题 04 信息整理力 辨别每种信息的类型和属性和背后意图 05 图像化能力 掌握更直观的表达方式 06 定规则
  • 电子电路图中VCC、IO、3V3OUT、VDD3V3解释

    1 Vcc 一般表示电源正端 是晶体管集电极或IC集电极供电电压 2 IO 输入 输出端口 3 3V3OUT 3 3V输出端 4 VDD 一般表示电源正端 是场效应管漏极或IC内漏极供电电压 5 3V3 3 3V端 一般是供电电压为3 3V
  • 【Django缓存实现】前端缓存和后端缓存

    目录 一 什么是缓存 二 Web缓存 一 前端缓存 二 后端缓存 三 Django缓存 一 缓存类型 二 设置缓存 1 Memcached 2 Redis 3 数据库缓存 4 文件系统缓存 5 本地内存缓存 6 虚拟缓存 用于开发模式 7
  • Windows 环境配置Github 的SSH key

    今天需要将本机编写的代码提交至github 上 但是push 远程分支提示如下错误信 remote Support for password authentication was removed on August 13 2021 Plea
  • usaco-Cow Pedigrees

    题意 求出n个节点可以构成多少种高为h的二叉树 分析 设左子树节点数x 右子树节点数为n x 1 函数dp表示满足条件的树的个数 则dp n dp x n x 1 对于未知数h dp n dp x dp n x 1 x lt n 2 x i
  • llvm和clang环境配置(续篇)

    关于llvm和clang开发环境的配置之前已经发过一篇 当时是因为llvm官网给的文档省略了很多重要信息 需要额外补充一些信息才能完成环境配置 时隔许久 重新打开llvm官网 发现他们的文档已经更新了 写的非常详细 专门列举了一节用来解释如
  • Java 集合 --- HashMap的底层原理

    Java 集合 HashMap的底层原理 HashMap的下标计算 计算步骤 为什么要 h h gt gt gt 16 为什么数组长度必须是 2 n HashMap的树化 HashMap的扩容 HashMap的put流程 HashMap的线
  • JAVA常用类(IO篇)-DataOutputStream详解

    文方便阅读和理解 本文翻译自源码 适合具有一定数据结构 算法基础且有志专研源码的朋友阅读 初学者请无视 错漏之处 多谢指正 package java io DataOutputStream 可以实现java对象到流的便捷写入 一个应用可以随
  • React 事件处理

    React 元素的事件处理和 DOM 元素的很相似 但是有一点语法上的不同 React 事件的命名采用小驼峰式 camelCase 而不是纯小写 使用 JSX语法时你需要传入一个函数作为事件处理函数 而不是一个字符串 例如 传统的 HTML
  • c语言游戏代码大全直接复制_无法直接复制网页文字?只需一串代码,全网内容任你免费复制!...

    在职场办公时候 经常需要在网上找素材文档 不过现在网上很多网页都有限制性 想要直接复制的话是不可能的 这时候我们该怎么办呢 是望梅止渴还是另寻他家 这里小编为大家分享几招 保准管用 想怎么复制就怎么复制 什么限制都没有 一 0 只需在网页后
  • python中scrapy框架使用flask框架编写api接口

    仅作参考 1在scrapy框架中编写api接口 在与setting py同级处新建api py 在该api py中编写一下代码 from flask import Flask import os app Flask name app rou
  • 【nvivo11plus教程】02_编码与节点

    1 对文档进行编码 1 建立节点 2 使用快速编码栏进行编码 3 将整个文件编码为一个代码 4 范围编码 5 在vivo中编码 6 使用节点昵称加快编码速度 2 取消 增加和查看编码 1 编码带 2 删除编码 3 查看编码邻近区 4 增加编
  • Pandas.read_excel详解

    文章目录 基础知识 语法 参数详解 index col 参数详解 header 参数详解 usecols 参数详解 dtype 其他参数 多表读取 顺带提一句如何用pandas写数据到excel 基础知识 pandas 可以读取多种的数据格