大道之行,天下为公。这篇文章主要讲述#yyds干货盘点#数据分析从零开始实战,PythonPandas与各类数据库相关的知识,希望能为你提供帮助。
这是我参与11月更文挑战的第18天。
零、写在前面
本系列学习笔记参考书籍:《数据分析实战》托马兹·卓巴斯,会将自己学习本书的笔记分享给大家,同样开成一个系列『数据分析从零开始实战』。
点击查看第一篇文章:?? ? # 数据分析从零开始实战,Pandas读写CSV数据??
点击查看第二篇文章:?? ? # 数据分析从零开始实战,Pandas读写TSV/Json数据??
点击查看第三篇文章: ?? # 数据分析从零开始实战,Pandas读写Excel/XML数据??
点击查看第四篇文章:
??# 数据分析从零开始实战,Pandas读取HTML页面+数据处理解析??
前面四篇文章讲了数据分析虚拟环境创建和pandas读写CSV、TSV、JSON、Excel、XML格式的数据,html页面读取,今天我们继续探索pandas。
一、基本知识概要
- SQLAlchemy模块安装
- 数据库PostgreSQL下载安装
- PostgreSQL基本介绍使用
- Pandas+SQLAlchemy将数据导入PostgreSQL
- python与各种数据库的交互代码实现
二、开始动手动脑
1、SQLAlchemy模块安装安装?
?SQLAlchemy?
?模块(下面操作都是在虚拟环境下): 方法一:直接pip安装(最简单,安装慢,可能出错)pip install SQLAlchemy
方法二:轮子(wheel)安装(比较简单,安装速度还可以,基本不出错) 点击??这里下载??SQLAlchemy的?
?.whl?
?文件,然后移动到你的开发环境目录下。pip install xxxxx.whl
方法三:豆瓣源安装(比较简单,安装速度快,方便,推荐)
pip install -i https://pypi.douban.com/simple/ SQLAlchemy
2、数据库PostgreSQL下载安装(1) 下载地址:https://www.enterprisedb.com/software-downloads-postgres
(2) 下载完成后,点击安装文件,基本上就是Next。
First ,安装目录,建议自己选择,不要安装在C盘。
Second ,Password,可以设置简单点,毕竟只是用来自己学习。
Third ,端口号,建议不要改,就用5432,改了容易和其他端口冲突,到时候自己又不知道怎么解决,麻烦。
其他没有说到的就默认设置,Next,Next,Next~安装过程一般10分钟左右,不要急。Finally ,安装完成后,取消图上的选项框,图上的意思是在后台启动Stack Builder(堆栈生成器),没有必要。
最后推荐几个相关学习网站Postgre 社区:https://www.postgresql.org/community/Postgre官方文档: https://www.postgresql.org/docs/易百 Postgre 学习教程:https://www.yiibai.com/postgresql
3、PostgreSQL基本介绍使用(1) PostgreSQL特点
以上内容截取自 易百 Postgre 学习教程。(2) 利用PostgreSQL创建一个数据库a .打开?
?pgADmin4?
?,发现这个图形化操作界面是一个Web端的,先会要求输入Password,就是安装时候设置的Password。点击??Servers?
?->
??PostgreSQL 11?
?->
??Databases?
?->
右键->
??Create?
?->
??Database?
?。b .输入数据库名称,其他默认,注释自己随便写,我写的?
?first database?
?,表示我的第一个数据库。我们还可以看一下数据库创建的语句,点击弹框中的?
?SQL?
?即可。4、Pandas+SQLAlchemy将数据导入Postgre(1) Python操作代码
import pandas as pd
import sqlalchemy as sa
# 读取的CSV文件路径
r_filepath = r"H:\\PyCoding\\Data_analysis\\day01\\data01\\realEstate_trans.csv"
# 数据库鉴权
user = "postgres"# 数据库用户名
password = "root"# 数据库password
db_name = "test513"# 数据库名称
# 连接数据库
engine = sa.create_engine(postgresql://{0}:{1}@localhost:5432/{2}.format(user, password, db_name))
print(engine)
# 读取数据
csv_read = pd.read_csv(r_filepath)
# 将 sale_date 转成 datetime 对象
csv_read[sale_date] = pd.to_datetime(csv_read[sale_date])
# 将数据存入数据库
csv_read.to_sql(real_estate, engine, if_exists=replace)
print("完成")
# 可能报错:ModuleNotFoundError: No module named psycopg2
# 解决方法:pip install psycopg2
(2) 代码解析
engine = sa.create_engine(postgresql://{0}:{1}@localhost:5432/{2}.format(user, password, db_name))
sqlalchemy的create_engine函数,创建一个数据库连接,参数为一个字符串,字符串的格式是:
?
?<
database_type>
://<
user_name>
:<
password>
@<
server>
:<
port>
/<
database_name>
?
??
?数据库类型://数据库用户名:数据库password@服务器IP(如:127.0.0.1)或者服务器的名称(如:localhost):端口号/数据库名称?
??其中可以是:postgresql,mysql等。
csv_read.to_sql(real_estate, engine, if_exists=replace)
pandas的to_sql函数,将数据(csv_read中的)直接存入postgresql,第一个参数指定了存储到数据库后的表名,第二个参数指定了数据库引擎,第三个参数表示,如果表?
?real_estate?
?已经存在,则替换掉。(3) 运行结果此外,?
?pandas?
?库还提供了数据库查询操作函数??read_sql_query?
?,只需传入查询语句和数据库连接引擎即可,源码注释为??Read SQL query into a DataFrame.?
?,意思是:把数据库查询的内容变成一个??DataFrame?
?对象返回。query = SELECT * FROM real_estate LIMIT 10
top10 = pd.read_sql_query(query, engine)
print(top10)
5、Python与各个数据库的交互代码a . Python 与 MySql
# 使用前先安装 pymysql 模块 :pip install pymysql
# 导入 pymysql 模块
import pymysql
#连接数据库,参数说明:服务器,用户名,数据库password,数据库名称
db = pymysql.connect("localhost","root","root","db_test")
#使用cursor()方法创建一个游标对象
cursor = db.cursor()
#使用execute()方法执行SQL语句
cursor.execute("SELECT * FROM test_table")
#使用fetall()获取全部数据
data = https://www.songbingjia.com/android/cursor.fetchall()
#关闭游标和数据库的连接
cursor.close()
db.close()
b . Python 与 MongoDB
# 使用前先安装 pymongodb 模块 :pip install pymongodb
# 导入 pymogodb 模块
import pymongo
# 连接数据库,参数说明:服务器IP,端口号默认为27017
my_client = pymongo.MongoClient(host="127.0.0.1",port=27017)
# 直接通过数据库名称索引,有点像字典
my_db = my_client["db_name"]
# 连接 collection_name 集合,Mongodb里集合就相当于Mysql里的表
my_collection = my_client["collection_name"]
datas = my_collection.find() # 查询
for x in datas :
print(x)
c . Python 与 Sqlite
# 使用前先安装 sqlite3模块 :pip install sqlite3
sqlite数据库和前面两种数据库不一样,它是一个本地数据库
也就是说数据直接存在本地,不依赖服务器
# 导入 sqlite3 模块
import sqlite3
# 连接数据库,参数说明:这里的参数就是数据文件的地址
conn = sqlite3.connect(test.db)
#使用cursor()方法创建一个游标对象
c = conn.cursor()
#使用execute()方法执行SQL语句
cursor = c.execute("SELECT * from test_table")
for row in cursor:
print(row)
#关闭游标和数据库的连接
c.close()
conn.close()
三、送你的话
坚持 and 努力 : 终有所获。
思想很复杂,
实现很有趣,
只要不放弃,
终有成名日。
—《老表打油诗》
【#yyds干货盘点#数据分析从零开始实战,PythonPandas与各类数据库】下期见,我是爱猫爱技术的老表,如果觉得本文对你学习有所帮助,欢迎点赞、评论、关注我!
推荐阅读
- Renix绑定流详解——网络测试仪实操
- #yyds干货盘点#three.js中如何切换相机视角
- 技术分享| Sip与WebRTC互通-SRProxy开源库讲解
- Redis持久化RDB和AOF优缺点,你都了解吗()
- 如何在WordPress中调用jquery.min.js文件
- 如何绕过主题编辑器块()
- 如何同时向标签添加多个CSS属性()
- 如何在自定义帖子中添加wordpress自定义seciton
- 在MAMP上工作时如何将图像添加到wordpress主题()