CtrlEnter,1秒批量合并数据并导入数据库的办法,你学
在日常数据分析的业务场景下,我们经常会遇到以下难题:如何批量导入不同工作簿不同Sheet表下的数据?如何将这些不同Sheet表下的数据合并为一个数据?如何将合并的数据导入数据库?
本文构造一组数据,批量合并后导入数据库保存,下面一起来学习。本文使用工具:Python3。7。0
本文使用的模块:pandas、os、pymysql
适用范围:数据批量导入与合并,数据库留存批量数据导入并合并
首先构建10个工作簿,每个工作簿下面有三个Sheet表。
每一个分别Sheet表包含ID、number、sale三个字段。
导入相关的库,在数据批量导入及合并的时候,使用到pandas和os两个库。导入相关的库importpandasaspdimportos
这里介绍一下os。listdir命令,他可以将一个数据文件内的所有文件名都读取出来,如下图就是读取的文件名,包含那十个工作簿。os。listdir(rC:Users尚天强Desktop测试数据)
使用readexcel命令读取一个Excel文件。dfpd。readexcel(rC:Users尚天强Desktop测试数据测试数据1。xlsx)df。head()
首先构建一个空的列表,里面没有任何数值,同时,在开始部分就定义数据的导入路径、导出路径、以及保存的文件名。importpandasaspdimportos构建一个空的列表dfs〔〕readpathrC:Users尚天强Desktop测试数据savepathrC:Users尚天强Desktopsavenameouttable。xlsx
接下来是循环遍历每一个文件的名称,并且遍历的文件名不能为保存的文件名,sheetnameNone表示读取每一个Sheet表下的数据,skiprows1,headerNone取消标题,跳过第一行,只保留数据内容,使用extend命令将遍历的这些数据内容上下拼接起来。forfnameinos。listdir(readpath):iffname。endswith(。xlsx)andfname!savename:dfpd。readexcel(readpathfname,skiprows1,headerNone,sheetnameNone)dfs。extend(df。values())
使用concat命令将每一个工作簿的数据拼接起来。合并resultpd。concat(dfs)
在导出数据的时候,使用header命令给表格加一个标题,批量导入数据并合并的结果如下所示。导出数据result。toexcel(savepathsavename,indexFalse,header〔id,number,sale〕)
使用第一种方法合并数据,发现有重复值,可以使用dropduplicates参数去除重复值,使用sortvalues参数进行排序,去除重复值并且排序的数据结果如下所示。importpandasaspdimportosdfs〔〕readpathrC:Users尚天强Desktop测试数据savepathrC:Users尚天强Desktopsavenameouttable。xlsxforfnameinos。listdir(readpath):iffname。endswith(。xlsx)andfname!savename:dfpd。readexcel(readpathfname,skiprows1,headerNone,sheetnameNone,names〔id,number,sale〕)这里需要用names函数命名,不然没法去重和排序dfs。extend(df。values())合并resultpd。concat(dfs)根据ID去除重复值result。dropduplicates(subsetid,keepfirst,inplaceTrue)降序排列result。sortvalues(bysale,ascendingFalse,inplaceTrue)导出数据result。toexcel(savepathsavename,indexFalse,header〔id,number,sale〕)
数据导入数据库
将数据导入数据库,这里还是使用上面的数据文件,连接数据库使用的模块为pymysql。读入数据datapd。readcsv(rC:Users尚天强Desktopouttable。csv,enginepython)data。head()导入需要使用到的数据模块importpandasaspdimportpymysql
数据库连接,host为数据库地址、user为用户名、password为密码、db为数据库的名字、port为端口,默认为3306。建立数据库连接conpymysql。connect(host127。0。0。1,userroot,password123456,dbdemo,port3306)
获取游标对象。获取游标对象cursorcon。cursor()
用数据库demo,USEdemo也是数据库内的SQL语言。使用数据库democursor。execute(USEdemo)
构造一个test表,包含ID、number、sale三个字段。cursor。execute(createtableifnotexiststest(IDchar(4)primarykey,numberint,salefloat))
向表test表内插入数据。插入数据语句queryinsertintotest(ID,number,sale)values(s,s,s)
迭代读取每行数据,转化数据类型,将其保存在values内。迭代读取每行数据,values中元素有个类型的强制转换,否则会出错forrinrange(0,len(data)):IDdata。iloc〔r,0〕numberdata。iloc〔r,1〕saledata。iloc〔r,2〕values(str(ID),int(number),float(sale))cursor。execute(query,values)
关闭游标,提交,关闭数据库连接。关闭游标,提交,关闭数据库连接,如果没有这些关闭操作,执行后在数据库中查看不到数据cursor。close()con。commit()con。close()打印数据建立数据库连接conpymysql。connect(host127。0。0。1,userroot,password123456,dbdemo,port3306)获取游标对象cursorcon。cursor()
首先执行SQL命令,selectfromtest表示查询test表内的所有数据,循环遍历数值,将它打印出来。查询数据库并打印内容cursor。execute(selectfromtest)resultcursor。fetchall()forvaluesinresult:print(values)
打印出来的结果可以看到,第一列是字符串,第二列是整型,第三列是浮点型。关闭cursor。close()con。commit()con。close()
导入数据库后的结果如下所示:
小动物搬新房教案教学目标:1、在理解5以内序数的基础上,根据门牌号码找到相应的房间。2、在活动中体验帮助小动物搬新房的快乐教学准备:知识准备:1、幼儿分别对横的、纵的两……
风流倜傥的反义词近义词及造句风流倜傥是一个成语,读音是fngliuacute;tigrave;tng,指人有才学而不拘礼法。出自《节侠记》。下面是小编精选整理的风流倜傥的反义词近义词及造句,供您参考,欢迎……
金碧辉煌成语的造句金碧辉煌意指金光碧色,彩辉夺目。比喻陈设华丽。形容建筑物装饰华丽,光彩夺目。金碧辉煌成语的造句,我们来看看。金碧辉煌成语的造句11、蒙娜丽莎作品被收藏在金碧辉煌的卢浮宫中……
幼儿园大班集体舞活动再见舞教案设计设计意图近阶段,我园开展了集体舞教学的研究,大家发挥聪明才智,结合幼儿生活,原创了不少集体舞活动。而此时,正巧临近大班幼儿毕业离园,孩子们很快就要告别生活、学习了三年的幼……
用成语聪明伶俐造句1。她聪明伶俐,多才多艺,品竹调丝样样都会。2。二月二围大仓,五谷丰登装谷仓,聪明伶俐脑中装,山珍海味往肚装,金银财宝往家装,健康平安身上装,朋友情谊心中装;祝开心快乐!……
小学数学三年级下册的说课稿范文(精选3篇)作为一位无私奉献的人民教师,通常会被要求编写说课稿,借助说课稿可以更好地提高教师理论素养和驾驭教材的能力。那么大家知道正规的说课稿是怎么写的吗?下面是小编为大家收集的小学数学三……
所向披靡的近义词是什么所向披靡是一个汉语常用,指力量所到之处,一切障碍全被扫除。此语常用于形容军事或体育竞技中绝无对手的常胜劲旅。以下是所向披靡的近义词,希望能够帮助的到您!所向披靡的近义词:……
创业经典故事成语典故大家都知道吧,那成语都有哪些典故呢?下面是品学网小编带来的创业经典故事的内容,希望对大家有帮助创业经典故事11。曾经有个小国到中国来,进贡了三个一模一样的金人,金……
亚洲自然环境的教学反思地图是学习地理的重要工具,地理教学离不开地图。下面我们来看看《亚洲自然环境》教学反思,欢迎阅读借鉴。《亚洲自然环境》教学反思1地理七年级下册都是进行区域地理学习,以区域为……
奇奇孵蛋故事幼儿园小班说课稿材料一、说教材幼儿期是人的一生中发展思维、丰富词汇的最佳时期,通过学习各种优秀的儿童文学作品,可以提高幼儿对语言的感受力,培养他们对文学作品的学习兴趣。《奇奇孵蛋》这个故事语……
土地面积公顷教学内容:冀教版第九册数学课本64页65页内容。教学目的:1。结合具体事例,经历认识土地面积单位公顷,探索公顷、平方米之间关系的过程。2。了解公顷是测量土地面……
一年级拼音教学的反思教学反思是指教师以自己的教学活动过程为思考对象,对自己所做出的某种教学行为、决策以及由此所产生的结果进行审视和分析的活动。下面是小编收集整理的一年级拼音教学的反思,希望对您有所……