查看原文
其他

【案例展示】Python与数据库交互

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:寇晓璇,中南财经政法大学统计与数学学院

本文编辑:赵一帆

技术总编:王子一

Stata&Python云端课程来啦!

为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~原价2400元的Python编程培训课程,现在仅需100元,详情请查看推文《Python云端课程福利大放送!0基础也能学~》。关于Stata,爬虫俱乐部推出了系列课程,内容包括字符串函数、正则表达式、爬虫专题和文本分析,可以随心搭配,价格美丽,物超所值,更多信息可查看Stata系列推文《与春天有个约会,爬虫俱乐部重磅推出正则表达式网络课程!》《与春天有个约会,爬虫俱乐部重磅推出基本字符串函数网络课程》等。变的是价格,不变的是课程质量和答疑服务。对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦


/导读


   一般而言,我们习惯使用Excel来对数据进行简单的处理,但Excel是有一定容量限制的,一张Excel表的最大容量为1048576行,若当观测行数超出该值,此时用Excel去处理数据就不是那么合适了。此时,数据库便派上用场啦,在之前的一篇文章《Python与数据库交互—浅述pymysql》中,向大家介绍了如何使用Python语言实现对数据库表的提取、读写、删除数据等基本操作。今天我们进一步用一个简单的案例向大家具体展示一下如何使用Python去处理数据库中的数据~

一、安装

首先,在cmd终端上输入以下命令,用以安装pymysql库。

pip install pymysql
二、案例展示

目前,已有两组xlsx格式的文件,两组数据展示了连续两天内某些商品的基本信息及销量情况。下面将讲述一下如何利用Python将其分别导入到数据库中,并对二者进行合并、筛选等简单处理。


step1 导入相关库
首先,导入我们需要的库。
import pymysqlimport pandas as pdfrom sqlalchemy import create_engine


step2 创建数据库对象

其中,hostMySQL的服务器地址,本地可用localhost表示;user为用户名;password为密码;portMySQL的服务器端口号,默认为3306charset为使用的字符集。

hair = pymysql.connect(host='localhost',user='root',
password='88888888',port=3306, db='hair', charset='utf8')


step3 导入Excel数据到数据库使用pandas库,分别导入数据1数据2到数据库中。
# 建立连接conn = create_engine('mysql+pymysql://root:88888888@localhost:3306/hair')# 导入数据表1df = pd.read_excel('数据1.xlsx')try: df.to_sql('数据1',con = conn, index= False,if_exists= 'replace')except: print('error')# 导入数据表2df = pd.read_excel('数据2.xlsx')try: df.to_sql('数据2',con = conn, index= False,if_exists= 'replace')except: print('error')此时,可以看到,两组数据就导入到了数据库中。


step4 创建游标对象
cursor = hair.cursor()
step5 操作数据
1. 更改变量名

为两张表分别修改变量名,便于更好的区分不同表中的数据。

## 要执行的SQL语句sql1 = "alter table 数据1 change 商品评分 商品评分01 float"sql2 = "alter table 数据1 change 价格范围 价格范围01 char(20)"sql3 = "alter table 数据1 change 销量 销量01 int"sql4 = "alter table 数据1 change 评论数量 评论数据01 int"sql5 = "alter table 数据2 change 商品评分 商品评分02 float"sql6 = "alter table 数据2 change 价格范围 价格范围02 char(20)"sql7 = "alter table 数据2 change 销量 销量02 int"sql8 = "alter table 数据2 change 评论数量 评论数据02 int"## 执行语句cursor.execute(sql1)cursor.execute(sql2)cursor.execute(sql3)cursor.execute(sql4)cursor.execute(sql5)cursor.execute(sql6)cursor.execute(sql7)cursor.execute(sql8)
2.合并表

按照关键词店铺名称商品名称合并两张表,并保存到新表数据汇总中。

sql9 = """create table 数据汇总 as select A.店铺名称,A.商品名称,A.商品评分01,A.价格范围01,A.销量01,A.评论数据01,B.商品评分02,B.价格范围02,B.销量02,B.评论数据02 from 数据1 as A join 数据2 as B ON A.店铺名称 = B.店铺名称 and A.商品名称 = B.商品名称"""cursor.execute(sql9)

此时,hair数据库中多了第三张表,在该表中将数据1、数据2中的有用信息合并了起来。


3. 计算销量变化值

之后,创建新变量销量变化,计算两天内的销量变化值。

sql10 = "alter table 数据汇总 add 销量变化 int"sql11 = "update 数据汇总 set 销量变化 = 销量02-销量01"cursor.execute(sql10)cursor.execute(sql11)
4.查询销量变化最大的三种商品

查询销量变化最大的三种商品,并将查询结果保存到DataFrame中。

df1 = pd.read_sql("select 商品名称, 销量变化 from 数据汇总 order by 销量变化 desc limit 3",hair)display(df1)


step6 关闭游标对象,断开数据库
cursor.close()hair.close()

到目前为止,Excel表格中的数据就被导入到数据库中了,利用pymysql,替换了以往在Excel中的菜单式操作,十分方便快捷。以上就是今天的全部内容啦,感谢观看~

后台回复“hair”可得到本文所用到的两组数据。

最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。



点击上方"蓝字"关注我们吧!

  对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!

往期推文推荐        学好这一手,英语词典常在手 

        玩转Stata中的数学函数

         用spmap看中国空气质量

戳穿围城面具:安利&劝退一个专业

走进图文并茂的攻略世界 

玩转word文档“大变身”——wordconvert

数据读入|一文读懂用Stata读入不同类型的数据

简述递归

OpenCV库——轻松更换证件照背景色

800万年薪!还有谁?!

千古伤心词人,词伤几何?

去哪儿网攻略爬取——跟我一起去大理吧

"有你才有团"——Stata爬取王者荣耀英雄海报

爬虫实战|嚣张的徽州宴老板娘错在哪?

如何获取衡量股民情绪的指标?|东方财富股吧标题爬虫

利用Python构建马科维茨有效边界

rangestat,让统计量灵活滚动起来!

听说这样做立项成功率更高哦

如何处理缺失值?这一篇搞定!

善用dataex命令,高效沟通你我他

用Markdown制作简历,强力助力你的求职季

大数据下的大学分数线排行榜,快来围观!

《觉醒年代》—带你回到百年前

用Stata画的三维图很奇怪怎么办?

如何随机生成满足特定数据特征的新变量?

爬取无法翻页网页——自然科学基金项目及可视化

爬取京东评论数据进行情感分类

Stata与音乐之间的酷炫连接

这些年,爬虫俱乐部走出的博士们!
看这里,近五年各校高被引论文上榜名单!

高校经管类核心期刊发文排行榜

疯狂的科研创新加速器——Stata!


关于我们 


微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。





此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里

作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众

中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存