您当前的位置:首页 > 互联网百科 > 大数据

Ctrl+Enter,1秒批量合并数据并导入数据库的办法,你学会了吗?

时间:2021-04-21 10:58:58  来源:今日头条  作者:大话数据分析

在日常数据分析的业务场景下,我们经常会遇到以下难题:

  • 如何批量导入不同工作簿不同Sheet表下的数据?
  • 如何将这些不同Sheet表下的数据合并为一个数据?
  • 如何将合并的数据导入数据库?

本文构造一组数据,批量合并后导入数据库保存,下面一起来学习。

本文使用工具:Python 3.7.0

本文使用的模块:pandas、os、pyMySQL

适用范围:数据批量导入与合并,数据库留存

批量数据导入并合并

首先构建10个工作簿,每个工作簿下面有三个Sheet表。

Ctrl+Enter,1秒批量合并数据并导入数据库的办法,你学会了吗?

 

每一个分别Sheet表包含ID、number、sale三个字段。

Ctrl+Enter,1秒批量合并数据并导入数据库的办法,你学会了吗?

 

导入相关的库,在数据批量导入及合并的时候,使用到pandas和os两个库。

#导入相关的库
import pandas as pd
import os

这里介绍一下os.listdir命令,他可以将一个数据文件内的所有文件名都读取出来,如下图就是读取的文件名,包含那十个工作簿。

os.listdir(r'C:Users尚天强Desktop测试数据')
Ctrl+Enter,1秒批量合并数据并导入数据库的办法,你学会了吗?

 

使用read_Excel命令读取一个Excel文件。

df = pd.read_excel(r'C:Users尚天强Desktop测试数据测试数据1.xlsx')
df.head()
Ctrl+Enter,1秒批量合并数据并导入数据库的办法,你学会了吗?

 

首先构建一个空的列表,里面没有任何数值,同时,在开始部分就定义数据的导入路径、导出路径、以及保存的文件名。

import pandas as pd
import os

#构建一个空的列表
dfs = []

read_path=r'C:Users尚天强Desktop测试数据'
save_path=r'C:Users尚天强Desktop'
save_name='out_table.xlsx'

接下来是循环遍历每一个文件的名称,并且遍历的文件名不能为保存的文件名,sheet_name=None表示读取每一个Sheet表下的数据,skiprows=1,header=None取消标题,跳过第一行,只保留数据内容,使用extend命令将遍历的这些数据内容上下拼接起来。

for fname in os.listdir(read_path):
    if fname.endswith(".xlsx") and fname !=save_name:
        df = pd.read_excel(read_path+"\"+fname,skiprows=1,header=None,sheet_name=None)
        dfs.extend(df.values())

使用concat命令将每一个工作簿的数据拼接起来。

#合并
result = pd.concat(dfs)

在导出数据的时候,使用header命令给表格加一个标题,批量导入数据并合并的结果如下所示。

#导出数据
result.to_excel(save_path+"\"+save_name,index=False,header=['id','number','sale'])
Ctrl+Enter,1秒批量合并数据并导入数据库的办法,你学会了吗?

 

使用第一种方法合并数据,发现有重复值,可以使用drop_duplicates参数去除重复值,使用sort_values参数进行排序,去除重复值并且排序的数据结果如下所示。

import pandas as pd
import os

dfs = []

read_path=r'C:Users尚天强Desktop测试数据'
save_path=r'C:Users尚天强Desktop'
save_name='out_table.xlsx'

for fname in os.listdir(read_path):
    if fname.endswith(".xlsx") and fname !=save_name:
        df = pd.read_excel(read_path+"\"+fname,skiprows=1,header=None,sheet_name=None,names=['id','number','sale']) #这里需要用names函数命名,不然没法去重和排序
        dfs.extend(df.values())
#合并
result = pd.concat(dfs)

#根据ID去除重复值
result.drop_duplicates(subset='id',keep='first',inplace=True)

#降序排列
result.sort_values(by='sale',ascending=False,inplace=True)

#导出数据
result.to_excel(save_path+"\"+save_name,index=False,header=['id','number','sale'])
Ctrl+Enter,1秒批量合并数据并导入数据库的办法,你学会了吗?

 

数据导入数据库

将数据导入数据库,这里还是使用上面的数据文件,连接数据库使用的模块为pymysql。

#读入数据
data = pd.read_csv(r'C:Users尚天强Desktopout_table.csv',engine='python')
data.head()
#导入需要使用到的数据模块
import pandas as pd
import pymysql

数据库连接,host为数据库地址、user为用户名、password为密码、db为数据库的名字、port为端口,默认为3306。

# 建立数据库连接
con = pymysql.connect(host='127.0.0.1',
                      user='root',
                      password='123456',
                      db='demo',
                      port=3306)

获取游标对象。

# 获取游标对象
cursor = con.cursor()

用数据库demo,'USE demo' 也是数据库内的SQL语言。

#使用数据库demo
cursor.execute('USE demo')

构造一个test表,包含ID、number、sale三个字段。

cursor.execute('create table if not exists test (
                                                  ID char(4) primary key,
                                                  number int,
                                                  sale float)'
                                                  )

向表test表内插入数据。

#插入数据语句
query = "insert into test(ID,number,sale)values (%s,%s,%s)"

迭代读取每行数据,转化数据类型,将其保存在values内。

#迭代读取每行数据,values中元素有个类型的强制转换,否则会出错
for r in range(0, len(data)):
    ID = data.iloc[r,0]
    number = data.iloc[r,1]
    sale = data.iloc[r,2]
    values = (str(ID),int(number),float(sale))
    cursor.execute(query, values)

关闭游标,提交,关闭数据库连接。

#关闭游标,提交,关闭数据库连接,如果没有这些关闭操作,执行后在数据库中查看不到数据
cursor.close()
con.commit()
con.close()

打印数据

# 建立数据库连接
con = pymysql.connect(host='127.0.0.1',
                      user='root',
                      password='123456',
                      db='demo',
                      port=3306)
# 获取游标对象
cursor = con.cursor()

首先执行SQL命令,'select * from test'表示查询test表内的所有数据,循环遍历数值,将它打印出来。

#查询数据库并打印内容
cursor.execute('select * from test')
result = cursor.fetchall()
for values in result:
    print(values)
Ctrl+Enter,1秒批量合并数据并导入数据库的办法,你学会了吗?

 

打印出来的结果可以看到,第一列是字符串,第二列是整型,第三列是浮点型。

#关闭
cursor.close()
con.commit()
con.close()

导入数据库后的结果如下所示:

Ctrl+Enter,1秒批量合并数据并导入数据库的办法,你学会了吗?


Tags:合并数据   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
在日常数据分析的业务场景下,我们经常会遇到以下难题: 如何批量导入不同工作簿不同Sheet表下的数据? 如何将这些不同Sheet表下的数据合并为一个数据? 如何将合并的数据导入数据...【详细内容】
2021-04-21  Tags: 合并数据  点击:(150)  评论:(0)  加入收藏
▌简易百科推荐
张欣安科瑞电气股份有限公司 上海嘉定 201801 摘要:随着电力行业各系统接入,海量数据涌现,如何利用电网信息化中大量数据,对客户需求进行判断分析,服务于营销链条,提升企业市场竞...【详细内容】
2021-12-14  安科瑞张欣    Tags:大数据   点击:(9)  评论:(0)  加入收藏
1、什么是数据分析结合分析工具,运用数据分析思维,分析庞杂数据信息,为业务赋能。 2、数据分析师工作的核心流程:(1)界定问题:明确具体问题是什么;●what 发生了什么(是什么)●why 为...【详细内容】
2021-12-01  逆风北极光    Tags:大数据   点击:(25)  评论:(0)  加入收藏
在实际工作中,我们经常需要整理各个业务部门发来的数据。不仅分散,而且数据量大、格式多。单是从不同地方汇总整理这些原始数据就花了大量的时间,更不用说还要把有效的数据收集...【详细内容】
2021-11-30  百数    Tags:数据   点击:(21)  评论:(0)  加入收藏
数据作为新的生产要素,其蕴含的价值日益凸显,而安全问题却愈发突出。密码技术,是实现数据安全最经济、最有效、最可靠的手段,对数据进行加密,并结合有效的密钥保护手段,可在开放环...【详细内容】
2021-11-26  炼石网络    Tags:数据存储   点击:(17)  评论:(0)  加入收藏
导读:网易大数据平台的底层数据查询引擎,选用了Impala作为OLAP查询引擎,不但支撑了网易大数据的交互式查询与自助分析,还为外部客户提供了商业化的产品与服务。今天将为大家分享...【详细内容】
2021-11-26  DataFunTalk    Tags:大数据   点击:(15)  评论:(0)  加入收藏
导读:数据挖掘是一种发现知识的手段。数据挖掘要求数据分析师通过合理的方法,从数据中获取与挖掘项目相关的知识。作者:赵仁乾 田建中 叶本华 常国珍来源:华章科技数据挖掘是一...【详细内容】
2021-11-23  华章科技  今日头条  Tags:数据挖掘   点击:(20)  评论:(0)  加入收藏
今天再给大家分享一个不错的可视化大屏分析平台模板DataColour。 data-colour 可视化分析平台采用前后端分离模式,后端架构设计采用微服务架构模式。 前端技术:Angularjs、Jq...【详细内容】
2021-11-04  web前端进阶    Tags:DashboardClient   点击:(39)  评论:(0)  加入收藏
在Kubernetes已经成了事实上的容器编排标准之下,微服务的部署变得非常容易。但随着微服务规模的扩大,服务治理带来的挑战也会越来越大。在这样的背景下出现了服务可观测性(obs...【详细内容】
2021-11-02  大数据推荐杂谈    Tags:Prometheus   点击:(40)  评论:(0)  加入收藏
同一产品对老客户的要价竟然比新客户要高?这是当下“大数据杀熟”的直接结果。近年来,随着平台经济的蓬勃发展,大数据在为用户服务之外,也引发了多种不合理现象。为了有效遏制“...【详细内容】
2021-10-29    海外网   Tags:大数据   点击:(31)  评论:(0)  加入收藏
本人03年开始从事贸易行业,多年来一直致力于外贸获客和跨境电商选品等领域,最近有些小伙伴反馈海关数据演示的都挺好为啥用起来不是那么回事?大家看到数据时关注的有产品、采购...【详细内容】
2021-10-28  QD云龙    Tags:数据   点击:(33)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条