pandas存储数据

前言

前几天我们学习了如何根据自己的需求,灵活地读取不同的sheet工作表,以及如何读取工作表中的某几列或者某几行数据,而且每一种需求我们都采用了很多种不同的方法来进行读取,没看过的朋友可以从我的专栏里面阅读python数据分析的往期文章。

我们用python做数据,大致分为三步,第一步是读取数据,第二步是处理数据,第三步是存储数据。其实这三步里面最复杂最难的还是在处理数据这个步骤,有很多数据清洗、整合以及计算的方法,我们今天先来学习一下如何存储数据

一、to_excel

我们在d盘的Python数据分析这个文件夹里面有这些文件
在这里插入图片描述
现在这里面的存储数据这个文件夹是空的,如下:
在这里插入图片描述

我们今天主要是以华东.xlsx这个表格作为数据源进行数据读取
先看下这个表格的内容吧
在这里插入图片描述
这个工作簿里面有九个工作表,每一个工作表里面都是像这样的结构的订单数据
我们先尝试一下读取“南京”这个工作表里面的数据
首先先看一下表格里的数据
在这里插入图片描述

接下里我们在pycharm里面输入下面的代码进行数据的读取

import pandas as pd

file_name=r"D:\python数据分析\华东.xlsx"
df1=pd.read_excel(file_name,sheet_name="南京")
print(df1)

代码看不懂的可以看我这个专栏的往期文章,点击这里进行查看

运行上面的代码,结果如下:
在这里插入图片描述
现在我们df1里面的数据就是南京这个表格里面的数据,那么我们怎么新建一个excel工作簿文件,然后把df1中的数据写入这个文件,最后将这个文件放在上面空空的叫做“存储数据”的文件夹里面呢?
看下我们这一小节的标题:to_excel
我们在上面的代码后面加上这样一行代码:

df1.to_excel(r"D:\python数据分析\存储数据\南京.xlsx")

然后点击运行,打开之前空空如也的“存储数据”文件夹,你会发现里面多了一个名为“南京”的表格
在这里插入图片描述
我们打开这个表格看一下里面的内容
在这里插入图片描述
这样我们就成功读取了南京这个工作表,并且成功把他写进了一个叫做“南京”的新的工作簿

二、按照不同的需求存储数据

1.优化写入数据的方法

上面代码确实实现了数据的写入,但是我们会看到,在最左边有一个0,1,这个是什么呢?
其实很简单,我们在前面学过每行数据都有一个索引,所谓索引就是你通过索引可以快速找到数据。

比方现在老板如果让你在一张表里面找到第2365行数据,你肯定不会一行行地往下滑,而是通过左上角的小框进行定位。
比方你在左上角小框输入“A2365”,那么系统就会自动定位到那里
excel表格最右边的1,2,3,4,5,6,7等等这些数字就是索引

to_excel方法导出数据的时候,默认会将数据的标题和索引进行显示,我们可以通过设置这些参数来控制数据的读取
我们按住ctrl,然后将鼠标点击pycharm中的to_excel这个地方,就可以看到配置文件里面to_excel的内容

在这里插入图片描述
这里面每一行都是一个参数,其中 index: bool_t = True,这一行就是控制索引是否显示
我们将上一节的代码进行修改如下:

import pandas as pd

file_name=r"D:\python数据分析\华东.xlsx"
df1=pd.read_excel(file_name,sheet_name="南京")
print(df1)
df1.to_excel(r"D:\python数据分析\存储数据\南京.xlsx",index=False)

点击运行后你会发现最左边的0,1就消失了
在这里插入图片描述
上面参数里另一个用的比较多的就是 columns: Sequence[Hashable] | None = None,
这个是用来控制导出写入哪几行的数据
比如我们只想将订单来源,产品以及入库数这三列数据写入到新的表格,那么我们可以将上面的代码修改为;

import pandas as pd

file_name=r"D:\python数据分析\华东.xlsx"
df1=pd.read_excel(file_name,sheet_name="南京")
print(df1)
df1.to_excel(r"D:\python数据分析\存储数据\南京.xlsx",index=False,columns=["订单来源","产品","入库数"])

点击运行后,我们得到的结果如下:
在这里插入图片描述
另外,如果我们想让数据从第五行的D列开始,又该怎么做呢,很简单,

        startrow: int = 0,
        startcol: int = 0,

我们上面看到的to_excel这个方法里面有这样两个参数,通过设置它们就可以实现
比如我们可以将数据修改如下:

import pandas as pd

file_name=r"D:\python数据分析\华东.xlsx"
df1=pd.read_excel(file_name,sheet_name="南京")
print(df1)
df1.to_excel(r"D:\python数据分析\存储数据\南京.xlsx",index=False,columns=["订单来源","产品","入库数"],startrow=4,startcol=3)

运行代码后结果如下:
在这里插入图片描述
上面我们加了一个 startrow=4,startcol=3,意思是行从第4行开始,列从第3列开始
那么问题来了,我们咋表格里看到的是从第五行第四列开始,这是为什么呢?
前面我们讲过很多次,计算机里面计数是从0开始,0,1,2,3,4,5这样计数
所以我们在表格里面看到的第五行其实在计算机里面是第4行,第D列在表格中是第四列,但是在计算机中是第三列

2.读入多个工作表数据

我们前面做的都是将一个df写入一个工作簿,那么如果要将很多的工作表都写进同一个工作簿又该怎么做呢?
比如我们要将华东.xlsx这个工作簿里面的“南京”和“无锡”这两个表同时写进一个新创建的叫做’'写入数据’的新表格
这个又应该怎么做呢?先看代码:

import pandas as pd

file_name=r"D:\python数据分析\华东.xlsx"
df1=pd.read_excel(file_name,sheet_name="南京")
df2=pd.read_excel(file_name,sheet_name="无锡")
with pd.ExcelWriter(r"D:\python数据分析\\存储数据\写入数据.xlsx") as wt:
    df1.to_excel(wt,sheet_name="南京",index=False)
    df2.to_excel(wt,sheet_name="无锡",index=False)

我们点击运行后,发现在存储数据这个文件夹里面多了一个表:写入数据.xlsx
在这里插入图片描述
接下来我们打开这个表格,里面的内容如下:
在这里插入图片描述
这样我们就成功将两个表格写进了这个新建的工作簿里面。

3.多个表格批量提取特定的行

现在有一个需求,华东.xlsx这个工作簿里面有很多工作表,我们希望批量提取每一个工作表的“订单来源”,“订单编号”,“入库数”这三列,然后将它们写到一个新建的叫做“提取数据”的表格,又该怎么做呢:
先看代码

import pandas as pd

file_name=r"D:\python数据分析\华东.xlsx"
list1=["订单来源","订单编号","入库数"]
dfs=pd.read_excel(file_name,sheet_name=None)
with pd.ExcelWriter(r"D:\python数据分析\存储数据\提取数据.xlsx") as wt:
    for s,df in dfs.items():
        df.to_excel(wt,sheet_name=s,index=False,columns=list1)

我们点击运行后,在我们的存储数据这个文件夹会生成一个新表:提取数据.xlsx
在这里插入图片描述
我们打开表格
在这里插入图片描述
可以看到提取数据.xlsx这个工作簿里面有9个工作表,而且每个表只有我们需要的那三列
我们可以看一下这个工作簿里面其它工作表的数据,如下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其它我就不一一展示了,可以看到每个表我们都批量提取了这几列数据

总结

今天我们学习了如何存储数据,也就是如何新建一个工作簿文件,然后将我们经过整理清晰后的数据写入到我们的表格当中。
其实仔细看了这一节的小伙伴会发现,我们平常很多时候需要做的一些操作,比如将多个表格合并到一起,或者将一个表格按照某一列拆分为多个表,比如现在有一个员工表,老板希望你可以按照部门将这个表分为很多个表,等等一系列操作都会用到今天学过的知识。
当然,上面说的这些东西会稍微复杂一些,大家如果有兴趣可以点个关注,或者在评论区留言“想学”,如果大家的兴趣比较高,后续我会一一为大家进行讲解。

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐