python数据分析--pandas读取数据(sheet_name读取表格,header控制标题行)
sheet_name读取表格,header控制标题行
前情回顾
昨天我们学习了通过pandas简单地读取表格中的数据,我们还学会了如何通过sheet_name这个参数来控制读取哪一个表格。但是很多时候,我们不仅仅需要选择读取哪一个表格,还需要选择读取表格中的哪几行和哪几列数据,这时候就需要我们学习更多的技巧了。
今天就让我们一起来学习read_excel这个函数的高级版,因为读取csv格式的文件和读取excel文件是一样的,所以在这里就只是讲解如何读取excel文件,对csv文件的读取暂时就不再赘述了。
一、pandas从工作表的维度灵活读取数据
我们先复习一下昨天学的,首先我们还是一样,在d盘新建一个excel工作簿,然后在这个工作簿里面新建四个sheet工作表,其中工作簿和工作表的内容如下:
这是新建的工作簿的位置和名字
这是新建的工作簿里面的四个工作表



上面四张图片分别是新建立的四张工作表里面的数据
我们输入下面的代码,分别查看读取到的biaoge1,biaoge2和biaoge3的数据
import pandas as pd
file_name=r"D:\数据可视化示例Excel文件.xlsx"
biaoge1=pd.read_excel(file_name,sheet_name="各个产品销量")
print(biaoge1)
print("------------------")
print("------------------")
biaoge2=pd.read_excel(file_name,sheet_name=1)
print(biaoge2)
print("------------------")
print("------------------")
biaoge3=pd.read_excel(file_name,sheet_name=0)
print(biaoge3)
大家不妨先猜一猜,这三种读取方式分别会读取到哪一个表格的数据
可以看到,第一种:biaoge1=pd.read_excel(file_name,sheet_name=“各个产品销量”)
print(nums_products1),读取到的是从左到右第四个表格,名为“各个产品销量”的表格的数据
第二种:biaoge2=pd.read_excel(file_name,sheet_name=1)
print(nums_products2),读取到的是从左到右第二个表格,名为“各月销售额”的表格的数据
第三种:biaoge3=pd.read_excel(file_name,sheet_name=0)
print(nums_products3),读取到的是从左到右第一个表格,名为“各个国家销量”的表格的数据
其中第一种是按照表格的名字进行读取,第二种和第三种是按照表格的位置读取,并且是从0开始,0,1,2,3这样的顺序,而不是1,2,3,4这样的顺序
那么问题来了,如果我们想一次读取全部的四个sheet表格的数据,又该怎么写呢?
其中一种方法就是如下:
import pandas as pd
file_name=r"D:\数据可视化示例Excel文件.xlsx"
biaoge1=pd.read_excel(file_name,sheet_name=["各个产品销量","各月销售额","各个国家销量","各大区总利润"])
print(biaoge1)
我们用一个中括号括起来,里面填写全部的四个表格的名字,然后点击运行,结果如下:
可以看到,这样我们就读取到了全部表格的数据,那么问题来了,如果我们这个工作簿里面有三十个工作表呢,那岂不是要填写三十个表格的名字,这样就太麻烦了,其实只需要将sheet_name这个参数的值设置为None,就行了,代码如下:
import pandas as pd
file_name=r"D:\数据可视化示例Excel文件.xlsx"
biaoge1=pd.read_excel(file_name,sheet_name=None)
print(biaoge1)
运行这个代码,你会发现和上面的结果是一样的,我们同时读取了全部的表格的数据
有的小伙伴可能发现了,前面我们不是用数字来控制读取的表格吗,那这里能不能用1,2,3,4呢,其实也是可以的,
我们可以尝试输入以下代码:
import pandas as pd
file_name=r"D:\数据可视化示例Excel文件.xlsx"
biaoge1=pd.read_excel(file_name,sheet_name=[0,1,2,3])
print(biaoge1)
这样我们同样可以读取全部的代码
那么我们能不能把两种读取方式混合着一起用呢,可以尝试输入下面的代码
import pandas as pd
file_name=r"D:\数据可视化示例Excel文件.xlsx"
biaoge1=pd.read_excel(file_name,sheet_name=[0,1,"各个国家销量","各大区总利润"])
print(biaoge1)
你会发现,这样也可以读取全部的表格的数据,是不是很神奇。
OK,回顾完毕,下面我们进入到今天的正菜环节,如何按照需求读取同一个表格的不同的行的数据和不同的列的数据
二、标题行
我们先简单地输入下面代码,读取第一个表格的数据
import pandas as pd
file_name=r"D:\数据可视化示例Excel文件.xlsx"
nums_products=pd.read_excel(file_name,sheet_name="各个产品销量")
print("读取各个产品销量")
结果如下:
你会发现,它会默认在最左边加上0,1,2,3,4这几个行标签,并且把表格第一行作为标题充当列标签,那么如果我们的数据没有标题呢?
现在表格中的数据如下:
我们删掉标题行后,表格中的数据如下:
我们再次运行上面的代码;

你会发现它把苹果当成了标题行,那么怎么办呢,这样的话我们就需要设置一下header这个参数了,我们可以将代码修改如下:
import pandas as pd
file_name=r"D:\数据可视化示例Excel文件.xlsx"
nums_products=pd.read_excel(file_name,sheet_name="各个产品销量",header=None)
print("读取各个产品销量")
print(nums_products)
我们运行上面代码后,结果如下:
你会发现这样就正常了
这里还有另一种情况,如果标题行存在,但是不在第一行呢,比方我们将上面的表格改为:
现在标题行在第八行,这种有没有方法读取呢?
有的有的,兄弟,有的,还是用上面heade来设置,先尝试下面代码;
import pandas as pd
file_name=r"D:\数据可视化示例Excel文件.xlsx"
nums_products=pd.read_excel(file_name,sheet_name="各个产品销量",header=8)
print("读取各个产品销量")
print(nums_products)
结果如下;
你会发现它还是把苹果这一行当成了标题,这是为什么呢?
很简单,因为行数从上往下也是从0开始的,依次应该是0,1,2,3,4,5,6,7,8,所以当我们将header设置为8的时候,其实是把第九行设置为了标题,
那么应该怎么改呢,聪明的同学肯定想到了,header=8改为header=7,就可以了
我么试一下输入下面代码:
nums_products=pd.read_excel(file_name,sheet_name="各个产品销量",header=7)
print("读取各个产品销量")
print(nums_products)
运行后,结果如下:
总结
今天我们回顾了昨天的内容,还进一步学习了如何通过pandas读取全部表格的数据,以及通过数字来控制读取哪一个表格,随后我们还学习了通过控制header来设置标题行。至于如何读取特定的行和特定的列的数据,因为内容太多今天就不讲了,我们明天再一探究竟。
感兴趣的朋友可以点个关注或者订阅哟!!!!!!
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)