read_excel函数是panda库里的一个函数,一般用于读取excel表,在工作中可以提高工作效率,但是这个函数参数超级多,所以在这里进行分类讲解。
最基本的,你表叫啥,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 = [0,1]这种列表的形式。 假设我们要打印 那么我们表示行索引的列有一列,表示列索引的行有两行所以代码为
pd.read_excel('header.xlsx', header = [0,1], index_col = 0)输出结果为
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)输出结果为:
或者 推荐使用这种:工作中很可能表中会临时插入信息,这种方法不会被影响
work = pd.read_excel("北科大短视频11.29-12.31数据统计.xlsx", usecols = ["抖音"]) print(work)输出结果为:
①复制excel标题到python中
标题 发布时间 点赞量 评论数 转发量 播放量②输入split函数进行分割
a = "标题 发布时间 点赞量 评论数 转发量 播放量".split() print(a)③输出结果,这时就可以复制之后直接应用在usecols=里面了,妙啊妙啊。
有的表格第一行并不是标题,这时候我们需要跳过这一行,例如抖音这一行,第一行我们是不需要的,这时引入skiprows参数:skiprows = [ ] 举例;
work = pd.read_excel("北科大短视频11.29-12.31数据统计.xlsx", skiprows = [0],usecols = ["发布时间","点赞量"]) print(work)输出结果 同理,skipcols= 可以用来跳过列。但是尽量不用,pandas里这个功能不完善,尽量用上面说的usecols指定使用的列即可。
本质上就是个没有表头的表加/换表头,本身没有表头的加一句header = None 举例:
work = pd.read_excel("北科大短视频11.29-12.31数据统计.xlsx", skiprows =[0],usecols =[0,2,3], names = ["a","b","c"]) print(work)输出结果:
框选为默认,若要选择其余类型需要自己设置。 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类型。 (真扯淡这些东西…)
实例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作为列名,没啥新鲜的。
这个用途其实就是有时候表里写的是2020年9月1日,这样格式python没法直接读取,所以需要我们自己设置读取的方式。 举例: 输出结果: 运行代码前 运行后:
缺失值: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自身的问题。
功能为,将一列中的元素转换为bool类型(仅字符串有效)。 只有一列都被转换时才会成功,否则如例子中的d只有他一个转换,ef不转换,这样的话列2还是保持不变的。
如果就想把其他类型转换成bool类型,那就用dtype吧! 代码:
work = pd.read_excel("北科大短视频11.29-12.31数据统计.xlsx", dtype={"抖音": bool}) print(work)输出结果:
最常用的方式:使用strip将excel表中本身的空格(\t\n)删去。 其中
Converters={“货号”, lambda x: x.strip()}可以替换为
Converters={“货号”, str.strip()}关于dataframe和series是啥,可以看我的其他博客。
为true时,不允许出现重复列名
不包含表头,要解析的行数
设置这个参数,可以将带,的文本类型解析为数字类型
很简单,true时自动转换,false时全为float
最后几个参数很简单一看就会,所以没有例子了。虽然参数很多,但是这也意味着这个函数可以完成很多事情,我觉得不需要都背会吧,知道有这么个东西,回头再来查就行了。 祝看完的各位学习顺利。
