当前位置: 首页 > news >正文

数据分析| Pandas200道练习题,使用Pandas连接MySQL数据库

文章目录

  • 使用Pandas连接数据库
    • 编码环境
    • 依赖包
    • read_sql_query()的使用
    • read_sql_table()的使用
    • read_sql() 函数的使用
    • to_sql()写入数据库的操作
    • 删除操作
    • 更新操作
    • 总结:

在这里插入图片描述


使用Pandas连接数据库

通过pandas实现数据库的读,写操作时,首先需要进行数据库的连接,然后通过调用pandas所提供的数据库读写函数与方法来实现数据库的读写操作。

Pandas提供了3个函数用于数据库的读操作

  • read_sql_query() 可以实现对数据库的查询操作,但是不能直接读取数据库中的某个表,需要在sql语句中指定查询命令与数据表的名称
  • read_sql_table() 只能读取数据库某一个表的内的数据,并且该函数需要sqlalchemy 模块的支持才能使用
  • read_sql()函数,既可以读取数据库中某一个表的数据,也可以进行执行具体的查询操作。

Pandas提供了1个函数用于数据库的写操作

  • to_sql()该函数用户实现数据的写入操作,通过DataFrame对象直接调用,和将DataFrame对象保存为其他类型的文件类似。

编码环境

Jupyter Notebook

依赖包

  • pymysql
  • sqlalchemy 该模块 是在使用read_sql_table() 函数时必须要用的模块

安装包

pip install pymysql
pip install sqlalchemy

read_sql_query()的使用

参数

pd.read_sql_query(sql,  # 需要执行查询的sql语句con,  # 数据库的连接index_col=None, 字符串或字符串列表,可选,默认值:无coerce_float: 'bool' = True, 尝试将非字符串,非数字对象(如decimal.Decimal)的值转换为浮点值params=None,parse_dates=None,chunksize: 'int | None' = None,dtype: 'DtypeArg | None' = None,
)

pd.read_sql_query() 函数返回的数据类型时DataFrame

案例与使用

import pandas as pd 
import pymysql  # 导入操作mysql的数据包
import sqlalchemy # 使用pymysql进行连接数据库
db = pymysql.connect(host='127.0.0.1',user='root',passwd='123456',port=3306,charset='utf8',database='comment_v1')
# user   用户名
# password 密码
# host 端口号
# database 数据库名
# charset 编码格式# 编写sql语句
sql = 'select * from user_comment'
# 通过read_sql_query函数进行查询
sql_query_data = pd.read_sql_query(sql=sql,con=db)
sql_query_data

在这里插入图片描述

read_sql_table()的使用

使用read_sql_table() 函数我们需要使用sqlalchemy 模块进行连接数据库,通过这个模块我们才可以对某一个表进行查询。

在使用其他的驱动程序的时候,会报NotImplementedError错误。

NotImplementedError: read_sql_table only supported for SQLAlchemy connectable.

参数

pd.read_sql_table(table_name: 'str', # 数据库名称con,               # 数据库连接schema: 'str | None' = None,index_col: 'str | Sequence[str] | None' = None,coerce_float: 'bool' = True,parse_dates=None,columns=None,chunksize: 'int | None' = None,
)

read_sql_table() 函数返回DataFrame类型
案例与使用

# 使用sqlalchemy连接数据库,依次设置
sql_query_db = sqlalchemy.create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/comment_v1")
# mysql+pymysql://root:123456@127.0.0.1:3306/comment_v1"
# mysql 连接的数据库类型
# pymysql 连接数据库的驱动
# root 用户名
# 123456 密码
# 127.0.0.1 数据库地址
# 3306端口号 
# comment_v1连接的数据库名称# 通过read_sql_table 
table = pd.read_sql_table(table_name='user_comment',con=sql_query_db)
table

在这里插入图片描述

read_sql() 函数的使用

read_sql()使用pymysql或者sqlalchemy对象都可以

参数

pd.read_sql(sql, # sql语句con, # 连接对象index_col: 'str | Sequence[str] | None' = None,coerce_float: 'bool' = True,params=None, parse_dates=None,columns=None,chunksize: 'int | None' = None,
)

案例与使用

# 通过read_sql函数读取数据库的信息
# 使用pymysql进行连接数据库
db = pymysql.connect(host='127.0.0.1',user='root',passwd='123456',port=3306,charset='utf8',database='comment_v1')
sql = 'select * from user_comment'
read_sql = pd.read_sql(sql=sql,con=db)
read_sql
# 通过read_sql函数读取数据库的信息
# 使用pymysql进行连接数据库
sql_query_db = sqlalchemy.create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/comment_v1")
sql = 'select * from user_comment'
read_sql = pd.read_sql(sql=sql,con=sql_query_db )
read_sql

在这里插入图片描述

to_sql()写入数据库的操作

to_sql方法同样需要使用SQLAlchemy模块的支持
参数

df.to_sql(name: 'str', # 表名称con, # 数据库连接schema=None, if_exists: 'str' = 'fail',  # fail如果表已经存在就不执行写入,replace 如果表存在就删除原来的表,再进行写入,append代表在原有数据表中添加数据index: 'bool_t' = True,  # 是否将行索引写入数据库中index_label=None,chunksize=None,dtype: 'DtypeArg | None' = None,method=None,
)

案例与使用

# 使用sqlalchemy模块进行连接
sql_query_db = sqlalchemy.create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/atguigudb")
data = {"A":[1,2,3,4],"B":[6,7,8,9],"C":[4,3,2,1]
}
df = pd.DataFrame(data)
df.to_sql('to_sql_dome',con=sql_query_db,if_exists='append')
# 测试,查询
sql = "select * from to_sql_dome"
read_df = pd.read_sql(sql=sql,con=sql_query_db)
read_df

结果
在这里插入图片描述


如和删除和更新数据库中的数据,pandas官方并没有提供相应的函数,但是我们同样可以使用read_sql和read_sql_query来进行实现对数据的删除和修改(sql语句会执行,但是程序会报错),还可以通过原生python利用哦个pymysql中的execute()方法来执行对数据的删除和修改。
在实际生产过程中并不建议这样操作,因为在实际过程中数据对公司是非常重要的,作为一个数据分析师我们并不会拿到删除和更新操作的权限,数据分析也不会修改原数据,在进行分析和建模的所拿到的数据都是复制数据库的数据。

删除操作

删除to_sql_dome 表中A = 1的一行数据

sql = "DELETE FROM to_sql_dome WHERE A = 1;"
read_df = pd.read_sql(sql=sql,con=sql_query_db)

执行上面的代码以后会报错 使用pymsql和sqlalchemy两种的报错不一样

sqlalchemy:ResourceClosedError: This result object does not return rows. It has been closed automatically.
pymsql:TypeError: 'NoneType' object is not iterable

在这里插入图片描述

更新操作

sql = "update to_sql_dome set B=2 where A = 4"
read_df = pd.read_sql(sql=sql,con=db)

执行后同样也会报错,使用pymsql和sqlalchemy两种的报错不一样

sqlalchemy:ResourceClosedError: This result object does not return rows. It has been closed automatically.
pymsql:TypeError: 'NoneType' object is not iterable
```rceClosedError: This result object does not return rows. It has been closed automatically.

在这里插入图片描述

最后在强调一下,pandas并不推荐使用read_sql和read_sql_query来进行实现对数据的删除和更新,如果想对数据进行操作,可以使用原生的python利用pymysql进行操作。

总结:

通过上面的四个方法我们发现Pandas操作数据库还是很方便的:

  • read_sql()和read_sql_query()都是通过执行sql来进行查询的操作,在查询数据时更重要的是对sql语句的掌握。
  • read_sql_table() 是通过指定表名进行查询整个表的数据
  • to_sql()写入数据库,可以根据if_exists三个参数的不同来控制保存的数据表是删除重新保存还是追加或者是不进行操作。

在这里插入图片描述

相关文章:

数据分析| Pandas200道练习题,使用Pandas连接MySQL数据库

文章目录使用Pandas连接数据库编码环境依赖包read_sql_query()的使用read_sql_table()的使用read_sql() 函数的使用to_sql()写入数据库的操作删除操作更新操作总结:使用Pandas连接数据库 通过pandas实现数据库的读,写操作时,首先需要进行数据…...

【Node.js】全局可用变量、函数和对象

文章目录前言_dirname和_filename变量全局函数setTimeout(cb,ms)clearTimeout(t)setInterval(cb,ms)clearInterval(t)setImmediate(cb)clearImmediate()console对象console.info([data][,...])console.error([data][,...])console.warn([data][,...])console.dir(obj[,options]…...

package.json 开发依赖与运行时依赖

文章目录前言一、生产环境与开发环境二、dependencies二、devDependencies总结前言 我已经使用npm接近两年了, 但对于package.json内的dependencies 和devDependencies也只是知道什么依赖该放什么部分, 至于为什么放到这个部分, 我不是很了解… 呃, 还是去了解一下. 一、生产环…...

关于最短路径算法中边的权值的思考

关于最短路径算法中边的权值的思考 不管是单源最短路径算法:Dijkstra Bellman-ford 还是多源最短路径算法:floyed Johnson 我们都绕不开的一件事就是,边的权值wi,jw_{i,j}wi,j​ 下面我们从多个角度谈边的权值 1.权值恒定 它是指对于每条边…...

LVGL开发教程:二、ESP-IDF 使用CmakeList管理自己的文件以及文件夹

本文需要已经安装了Vscode+IDF插件没有安装的请提前安装一下,IDF插件为乐鑫的插件不需要翻墙。需要环境搭建请看下面链接。 环境搭建: VScode+platformIO和Vscode+ESP-IDF两种开发环境搭建 项目例程下载地址: IDF-CmakeTes,密码:8888 另外,由于你和我的路径不一致,下载的工…...

与感受野相关的几种网络结构

一、Inception 1. Inception v1 目的 通过设计一个稀疏网络结构,但是能够产生稠密的数据,既能增加神经网络表现,又能保证计算资源的使用效率。 结构 图1-1 Inception v1结构图 特点 共4个通道,其中3个卷积通道分别使用111111…...

day19_抽象类丶接口

由来 当我们声明一个几何图形类:圆、矩形、三角形类等,发现这些类都有共同特征:求面积、求周长、获取图形详细信息。那么这些共同特征应该抽取到一个公共父类中。但是这些方法在父类中又无法给出具体的实现,而是应该交给子类各自…...

【网安神器篇】——系统指纹探测工具finger

作者名:白昼安全主页面链接: 主页传送门创作初心: 以后赚大钱座右铭: 不要让时代的悲哀成为你的悲哀专研方向: web安全,后渗透技术每日鸡汤: 我不想停下,因为这次出发的感觉太好了一…...

Prometheus离线tar包安装

Prometheus离线tar包安装实验环境一、部署前操作二、Master2.1下载2.2解压2.3更改服务目录名称2.4创建系统服务启动文件2.5配置修改2.6启动并设置开机自启2.7访问2.8添加node节点2.8.1 添加方法2.8.2修改Prometheus配置(Master)————————————…...

PostgreSQL查询引擎——SELECT STATEMENTS SelectStmt

SelectStmt: select_no_parens %prec UMINUS| select_with_parens %prec UMINUS select_with_parens:( select_no_parens ) { $$ $2; }| ( select_with_parens ) { $$ $2; } 该规则返回单个SelectStmt节点或它们的树,表示集合操作树(set-operation tree…...

零信任-易安联零信任介绍(11)

​目录 ​易安联零信任公司介绍 易安联零信任发展路线 易安联零信任产品介绍 易安联零信任架构 易安联零信任解决方案 易安联零信任发展展望 易安联零信任公司介绍 易安联是一家专业从事网络信息安全产品研发与销售,是行业内领先的“零信任”解决方案提供商&…...

C++ STL——map和set的使用

文章目录1. 关联式容器1.1 键值对1.2 树形结构的关联式容器2. set2.1 set的介绍2.2 set的插入2.3 set的删除和查找2.4 lower_bound和upper_bound3. multiset3.1 count4. map4.1 map的介绍4.2 map的插入4.3 map的遍历4.4 map的[ ]5. multimap1. 关联式容器 我们之前学的vector、…...

【Python】thread使用

目录1、Condition条件变量使用2、event通信3、Semaphore信号量使用4、setDaemon设置守护线程5、threadPool_map使用6、threadPool使用7、threadingTimer1、Condition条件变量使用 # encoding:utf-8 Condition 提供了一种多线程通信机制, 假如线程 1 需要数据&#…...

计网传输层协议:UDP和TCP

文章目录一. 应用层和传输层的联系二. UDP协议三. TCP协议1. TCP报头介绍2. TCP实现可靠传输的核心机制2.1 确认应答2.2 超时重传3. 连接管理(三次握手, 四次挥手)3.1 建立连接(三次握手)3.2 断开连接(四次挥手)4. 滑动窗口5. 流量控制6.拥塞控制7. 延时应答8. 捎带应答9. 面向…...

一文讲明TCP网络编程、Socket套接字的讲解使用、网络编程案例

文章目录1 Socket讲解2 基于Socket的TCP编程3 客户端Socket的工作过程包含以下四个基本的步骤3.1 客户端创建Socket对象4 服务器程序的工作过程包含以下四个基本的步骤:4.1 服务器建立ServerSocket对象5 案例实现 客户端和服务端通信5.1 代码实现5.2 实现结果6 更多…...

Java中print和println的区别

1 问题在最开始学习Java的时候学到soutenter键可以输出结果,显示的是System.out.println();而在Python中是直接使用print。那么在Java中print和println有什么区别?2 方法Print输出会自动将括号中的内容转换成字符串输出,如果括号中…...

RocketMq使用规范(纯技术和实战建议)

概述: 使用规范主要从,生产、可靠性、和消费为轴线定义使用规范;kafka使用核心:削峰、解耦、向下游并行广播通知(无可靠性保证)和分布式事务,本规范仅从削峰、解耦、向下游并行广播通知论述&am…...

matlab离散系统仿真分析——电机

目录 1.电机模型 2.数字PID控制 3.MATLAB数字仿真分析 3.1matlab程序 3.2 仿真结果 4. SIMULINK仿真分析 4.1simulink模型 4.2仿真结果 1.电机模型 即: 其中:J 0.0067;B 0.10 2.数字PID控制 首先我们来看一下连续PID&#xff1…...

一文学会进程控制

目录进程的诞生fork函数fork的本质fork的常规用法fork调用失败的原因进程的死亡进程退出的场景常见的进程退出方法正常终止(代码跑完)echo $?main函数返回调用exit调用_exitexit和_exit的区别进程等待进程等待的重要性进程等待的函数waitwaitpid进程退出…...

5.2 BGP水平分割

5.2.2实验2&#xff1a;BGP水平分割 1. 实验目的 熟悉BGP水平分割的应用场景掌握BGP水平分割的配置方法 2. 实验拓扑 实验拓扑如图5-2所示&#xff1a; 图5-2&#xff1a;BGP水平分割 3. 实验步骤 &#xff08;1&#xff09;配置IP地址 R1的配置 <Huawei>…...

华为OD机试 - TLV 编码 | 备考思路,刷题要点,答疑 【新解法】

最近更新的博客 【新解法】华为OD机试 - 关联子串 | 备考思路,刷题要点,答疑,od Base 提供【新解法】华为OD机试 - 停车场最大距离 | 备考思路,刷题要点,答疑,od Base 提供【新解法】华为OD机试 - 任务调度 | 备考思路,刷题要点,答疑,od Base 提供【新解法】华为OD机试…...

【C语言每日一题】——猜名次

【C语言每日一题】——猜名次&#x1f60e;前言&#x1f64c;猜名次&#x1f64c;解题思路分享&#xff1a;&#x1f60d;解题源码分享&#xff1a;&#x1f60d;总结撒花&#x1f49e;&#x1f60e;博客昵称&#xff1a;博客小梦 &#x1f60a;最喜欢的座右铭&#xff1a;全神…...

Agilent E4982A、Keysight E4982A、LCR 表,1 MHz 至 3 GHz

Agilent E4982A、Keysight E4982A、HP E4982A LCR 表&#xff0c;1 MHz 至 3 GHz 产品概览 KEYSIGHT E4982A&#xff08;安捷伦&#xff09; Keysight E4982A LCR 表为需要高频&#xff08;1 MHz 至 3 GHz&#xff09;阻抗测试的无源元件制造行业提供一流的性能&#xff0c…...

SAP 系统的配置传输

在SAP项目的实施过程中&#xff0c;经常会遇到关于配置传输的问题。即我们在某个client下面做系统配置&#xff0c;配好了之后再传到其他系统之中。 配置传输分为两种情况&#xff1a;同服务器配置传输&#xff0c;异服务器配置传输。同服务器配置传输&#xff1a; 在DEV配置cl…...

华为OD机试 - 喊七(Python)

喊七 题目 喊 7,是一个传统的聚会游戏, N 个人围成一圈,按顺时针从1 - 7编号, 编号为1的人从1开始喊数, 下一个人喊得数字是上一个人喊得数字+1, 但是当将要喊出数字7的倍数或者含有7的话, 不能喊出,而是要喊过。 假定N个人都没有失误。 当喊道数字k时, 可以统计每…...

Docker下快速搭建RabbitMQ单例及集群

引子生命在于折腾&#xff0c;为上数据实时化用到了消息传送的内容&#xff0c;当时也和总公司人员商量选型&#xff0c;kafka不能区分分公司就暂定用了RbtMQ刚好个人也在研究容器及分布式部署相关内容就在docker上实践单机 docker&#xff08;要想快 先看问题 避免踩坑&#x…...

python代码写开心消消乐

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放,树高千尺,落叶归根人生不易,人间真情 目录 一.python是什么 二.游戏代码效果呈现 三.主代...

【郭东白架构课 模块一:生存法则】09|法则四:为什么要顺应技术的生命周期?

你好&#xff0c;我是郭东白。今天我们来讲架构师的第四条生存法则&#xff0c;那就是尊重技术的生命周期。 人类的各种活动都要遵循事物的客观生命周期。不论是农业社会种田打渔&#xff0c;还是资本社会投资创业&#xff0c;行动太早或太晚&#xff0c;都会颗粒无收。技术也…...

Linux之进程控制

一.进程创建 1.1 fork函数 我们创建进程的方式有./xxx和fork()两种 在linux中fork函数时非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程…...

SpringBoot社区版专业版带你配置热部署

&#x1f49f;&#x1f49f;前言 ​ 友友们大家好&#xff0c;我是你们的小王同学&#x1f617;&#x1f617; 今天给大家打来的是 SpringBoot社区版专业版带你配置热部署 希望能给大家带来有用的知识 觉得小王写的不错的话麻烦动动小手 点赞&#x1f44d; 收藏⭐ 评论&#x1…...

岚山网站建设/外贸网站搭建推广

3巧记单词的方法二【方法一】稀里糊涂型平时英语课本上记一些&#xff0c;看美剧又记一些&#xff0c;考四六级之前再突击一下“要你命3000”之类的宝典&#xff0c;这些方法比较机械&#xff0c;也很难有组织、有规划地去记忆学习&#xff0c;不过大多数同学应该都是属于这种情…...

怎样做网站变手机软件/韩国vs加纳分析比分

JSON的定义&#xff1a; 一种轻量级的数据交换格式&#xff0c;具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案&#xff08;有点类似于正则表达式 &#xff0c;获得了当今大部分语言的支持&#xff09;&#xff0c;从而可以在不同平台间进行数据交…...

王野 天启/seo关键词优化案例

http://www.blogjava.net/jerry-zhaoj/archive/2009/05/20/271695.html 这是因为&#xff1a;由于JDK是国际版的&#xff0c;在编译的时候&#xff0c;如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式&#xff0c;则javac.exe首先获得我们操作系统默认采用的编码格…...

泰兴做网站公司/免费拓客软件哪个好用

问题 使用Tomcat时候控制台总是打印一些中文乱码&#xff0c;虽然不影响使用但是看着就难受。 包括&#xff1a;Server、Tomcat Localhost Log、Tomcat Catalina Log 原因分析 Windows环境下&#xff0c;中文编码为GBK 解决方案 修改文件&#xff0c;文件路径&#xff1a;%…...

网站新手引导怎么做/十大软件免费下载网站排行榜

一单选题 1 i最后等于多少&#xff08;&#xff09; int i 1;int j i;if((i>j)&&(i j)) ij; 占坑 4.4补...

wordpress ip改域名/微信公众号推广方法有哪些

文章目录类C中可以使用struct、class来定义一个类变量名规范参考类实例化成为了对象&#xff0c;对象的内存空间由成员变量决定对象对象的内存布局代码段&#xff08;代码区&#xff09;数据段&#xff08;全局区&#xff09;栈空间堆空间thisthis指针必须用->,不能用. &…...