数据分析学习——pandas库应用:函数read

tech2026-03-16  3

文章目录

read_excel介绍一、io,sheet_name,选择要读取的表二、header,index_col,设置某列/行为索引三、usecols,指定使用哪些列例1:我想输出序号,点赞,评论数例2提高工作效率的小tips 四、skiprows参数,跳过某一行五、names,设置要是用的列表列名六、dtype,设置列的类型七、date_parser,parse_dates,解析日期格式1、parse_dates2、date_parser 八、na_values,缺失值的处理九、true_values,false_values,将一列转化为bool类型十、converters,值转换函数十一、squeeze, 决定返回dataframe还是series十二、mangle_dupe_cols,是否重命名重复列名十三、nrows,决定要解析的行数十四、thousands,将字符串列解析为数字十五、convert_float, 要将float转换成int嘛?总结


read_excel介绍

read_excel函数是panda库里的一个函数,一般用于读取excel表,在工作中可以提高工作效率,但是这个函数参数超级多,所以在这里进行分类讲解。


一、io,sheet_name,选择要读取的表

最基本的,你表叫啥,io就是啥 sheet_name意思就是选择你表格里的子表是哪个

例如0,1这种int类型,就是指第一个表,第二个表;同样我们可以使用”sheet1”,字符串类型,就是子表的名字。sheet_name可以是一个列表,这样得到的read结果就是个字典。

上实例:

dict = pd.read_excel("北科大短视频11.29-12.31数据统计.xlsx", sheet_name=["Sheet1"]) print(dict["Sheet1"])

这样我们就选择了这个数据统计,并且选择的子表是第一个。打印出来的内容也是这个Sheet1表的内容。

二、header,index_col,设置某列/行为索引

先看图,特别注意有的表两个索引,这时候需要用header = [0,1]这种列表的形式。 假设我们要打印 那么我们表示行索引的列有一列,表示列索引的行有两行所以代码为

pd.read_excel('header.xlsx', header = [0,1], index_col = 0)

输出结果为

三、usecols,指定使用哪些列

例1:我想输出序号,点赞,评论数

excel内容: 代码:

work = pd.read_excel("北科大短视频11.29-12.31数据统计.xlsx", usecols='A,D:E') print(work)

work = pd.read_excel("北科大短视频11.29-12.31数据统计.xlsx", usecols=[0,3,4]) print(work)

输出结果为:

例2

work = pd.read_excel("北科大短视频11.29-12.31数据统计.xlsx", usecols=lambda x:(x == "抖音")) print(work)

或者 推荐使用这种:工作中很可能表中会临时插入信息,这种方法不会被影响

work = pd.read_excel("北科大短视频11.29-12.31数据统计.xlsx", usecols = ["抖音"]) print(work)

输出结果为:

提高工作效率的小tips

①复制excel标题到python中

标题 发布时间 点赞量 评论数 转发量 播放量

②输入split函数进行分割

a = "标题 发布时间 点赞量 评论数 转发量 播放量".split() print(a)

③输出结果,这时就可以复制之后直接应用在usecols=里面了,妙啊妙啊。

四、skiprows参数,跳过某一行

有的表格第一行并不是标题,这时候我们需要跳过这一行,例如抖音这一行,第一行我们是不需要的,这时引入skiprows参数:skiprows = [ ] 举例;

work = pd.read_excel("北科大短视频11.29-12.31数据统计.xlsx", skiprows = [0],usecols = ["发布时间","点赞量"]) print(work)

输出结果 同理,skipcols= 可以用来跳过列。但是尽量不用,pandas里这个功能不完善,尽量用上面说的usecols指定使用的列即可。

五、names,设置要是用的列表列名

本质上就是个没有表头的表加/换表头,本身没有表头的加一句header = None 举例:

work = pd.read_excel("北科大短视频11.29-12.31数据统计.xlsx", skiprows =[0],usecols =[0,2,3], names = ["a","b","c"]) print(work)

输出结果:

六、dtype,设置列的类型

框选为默认,若要选择其余类型需要自己设置。 float64占用的内存是float32的两倍,是float16的4倍 在做模型量化的时候,经常遇到这几个类精度表示,做下记录:

类型位int16等于short int2个字节int32等于int4个字节int64等于long int8个字节 类型位float16半精度2个字节float32float4个字节float64双精度8个字节

注: bits:位数 bytes:字节 1bytes = 8 bits 单精度用小数用23位存储,加上默认的小数点前的1为1,2^(23+1) = 16777216. 因为107<16777216<108,所以说单精度浮点数的有效位数是7位。 双精度的小数位数是52位存储,2^(52+1) = 9007199254740992. 因为1016<9007199254740992<1017,所以双精度的有效位数是16位。

object 类:应该被翻译为“对象”,或者“东西”类。object 类是所有类的父类。换言之,其它的任何一个类,都直接或间接地继承了 object 类的属性和方法。

关于str和string,我在网上找到的结论是,用哪个都可以,但是利用dtype转化为string类型后,显示为string类型,而利用dtype转换为str类型后,显示为object类型。Pandas自身优化原因,有些类型无法直接转换为string类型。 (真扯淡这些东西…)

七、date_parser,parse_dates,解析日期格式

1、parse_dates

实例1:

work = pd.read_excel("北科大短视频11.29-12.31数据统计.xlsx", index_col=2, parse_dates=True)

尝试解析第三行所有数据,尝试转换为datatime64格式

实例2: 使用parse_dates之后,0-5列全部转换为datetime64格式(以前是object)

实例3: 将多列结合为datetime64格式,注意列表嵌套。 输出结果: 实例4: 同理,字典方法将多列整合为datetime64 本质上就是把字典的key作为列名,没啥新鲜的。

2、date_parser

这个用途其实就是有时候表里写的是2020年9月1日,这样格式python没法直接读取,所以需要我们自己设置读取的方式。 举例: 输出结果: 运行代码前 运行后:

八、na_values,缺失值的处理

缺失值:NaN(not a number,它是一个float类型) 需要注意的是excel中完全空的格才是NaN,如果格中有空格,虽然看起来也是空,但是python会认为这个格不是空的,不显示NaN。

na_values功能为把指定的内容替换为NaN 举例:

work = pd.read_excel("北科大短视频11.29-12.31数据统计.xlsx", na_values=['播放量',"序号"]) print(work)

输出结果 用字典格式,key表示这一列的表头,这一列中的1,2都被替换为NaN。

work = pd.read_excel("北科大短视频11.29-12.31数据统计.xlsx", na_values={'抖音':[1,2]}) print(work)

输出结果: 这里有个坑,如果用skiprow跳过第一行,我用第二行的标题作为字典的key,这样是无法转换成NaN的,可能是pandas自身的问题。

九、true_values,false_values,将一列转化为bool类型

功能为,将一列中的元素转换为bool类型(仅字符串有效)。 只有一列都被转换时才会成功,否则如例子中的d只有他一个转换,ef不转换,这样的话列2还是保持不变的。

如果就想把其他类型转换成bool类型,那就用dtype吧! 代码:

work = pd.read_excel("北科大短视频11.29-12.31数据统计.xlsx", dtype={"抖音": bool}) print(work)

输出结果:

十、converters,值转换函数

最常用的方式:使用strip将excel表中本身的空格(\t\n)删去。 其中

Converters={“货号”, lambda x: x.strip()}

可以替换为

Converters={“货号”, str.strip()}

十一、squeeze, 决定返回dataframe还是series

关于dataframe和series是啥,可以看我的其他博客。

十二、mangle_dupe_cols,是否重命名重复列名

为true时,不允许出现重复列名

十三、nrows,决定要解析的行数

不包含表头,要解析的行数

十四、thousands,将字符串列解析为数字

设置这个参数,可以将带,的文本类型解析为数字类型

十五、convert_float, 要将float转换成int嘛?

很简单,true时自动转换,false时全为float

总结

最后几个参数很简单一看就会,所以没有例子了。虽然参数很多,但是这也意味着这个函数可以完成很多事情,我觉得不需要都背会吧,知道有这么个东西,回头再来查就行了。 祝看完的各位学习顺利。

最新回复(0)