写点什么

数据分析从零开始实战,Python、Pandas 与各类数据库

作者:老表
  • 2021 年 11 月 30 日
  • 本文字数:2815 字

    阅读完需:约 9 分钟

数据分析从零开始实战,Python、Pandas与各类数据库

零、写在前面

本系列学习笔记参考书籍:  《数据分析实战》托马兹·卓巴斯,会将自己学习本书的笔记分享给大家,同样开成一个系列『数据分析从零开始实战』。


点击查看第一篇文章:# 数据分析从零开始实战,Pandas读写CSV数据


点击查看第一篇文章:# 数据分析从零开始实战,Pandas读写TSV/Json数据


点击查看第三篇文章:# 数据分析从零开始实战,Pandas读写Excel/XML数据


点击查看第四篇文章:# 数据分析从零开始实战,Pandas读取HTML页面+数据处理解析


前面四篇文章讲了数据分析虚拟环境创建和 pandas 读写 CSV、TSV、JSON、Excel、XML 格式的数据,HTML 页面读取,今天我们继续探索 pPython、Pandas 操作各类数据库。

一、基本知识概要

1.SQLAlchemy 模块安装


2.数据库 PostgreSQL 下载安装


3.PostgreSQL 基本介绍使用


4.Pandas+SQLAlchemy 将数据导入 PostgreSQL


5.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 ,密码,可以设置简单点,毕竟只是用来自己学习。



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 端的,先会要求输入密码,就是安装时候设置的密码。


点击Servers->PostgreSQL 11->Databases->右键->Create->Database



b .输入数据库名称,其他默认,注释自己随便写,我写的first database,表示我的第一个数据库。



我们还可以看一下数据库创建的语句,点击弹框中的SQL即可。


4、Pandas+SQLAlchemy 将数据导入 Postgre

(1) Python 操作代码


import pandas as pdimport sqlalchemy as sa
# 读取的CSV文件路径r_filepath = r"H:\PyCoding\Data_analysis\day01\data01\realEstate_trans.csv"# 数据库鉴权user = "postgres" # 数据库用户名password = "root" # 数据库密码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>


数据库类型://数据库用户名:数据库密码@服务器IP(如:127.0.0.1)或者服务器的名称(如:localhost):端口号/数据库名称


其中<database_type>可以是: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#连接数据库,参数说明:服务器,用户名,数据库密码,数据库名称db = pymysql.connect("localhost","root","root","db_test")#使用cursor()方法创建一个游标对象cursor = db.cursor()#使用execute()方法执行SQL语句cursor.execute("SELECT * FROM test_table")#使用fetall()获取全部数据data = cursor.fetchall()#关闭游标和数据库的连接cursor.close()db.close()
复制代码


b . Python 与 MongoDB


# 使用前先安装 pymongodb 模块 :pip install pymongodb # 导入 pymogodb 模块import pymongo# 连接数据库,参数说明:服务器IP,端口号默认为27017my_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 努力 : 终有所获。


思想很复杂,


实现很有趣,


只要不放弃,


终有成名日。


—《老表打油诗》


下期见,我是爱猫爱技术的老表,如果觉得本文对你学习有所帮助,欢迎点赞、评论、关注我!

发布于: 47 分钟前阅读数: 5
用户头像

老表

关注

公众号|简说Python 2018.09.23 加入

【公众号:简说Python】爱猫爱技术,Python终身学习者、数据分析爱好者、Go语言内卷机。

评论

发布
暂无评论
数据分析从零开始实战,Python、Pandas与各类数据库