无涯教程可以连接到关系数据库,以使用 pandas 库用于连接数据库来分析数据。该软件包名为 sqlalchemy ,提供了可在python中使用完整SQL语言函数。
使用Anaconda进行安装非常简单,假设您已安装了Anaconda, 在Anaconda提示窗口中运行以下命令以安装SQLAlchemy软件包。
conda install sqlalchemy
将使用Sqlite3作为无涯教程的关系数据库,因为它重量轻且易于使用,尽管SQLAlchemy库可以连接到各种关系源,包括MySql,Oracle和Postgresql和Mssql。 首先创建一个数据库引擎,然后使用SQLAlchemy库的 to_sql 函数连接到数据库引擎。
在下面的示例中,通过使用 to_sql 函数从已经通过读取csv文件创建的数据帧中创建关系表,然后,使用pandas的 read_sql_query 函数执行并捕获各种SQL查询的输出。
链接:https://www.learnfk.comhttps://www.learnfk.com/python-data-science/python-relational-databases.html
来源:LearnFk无涯教程网
from sqlalchemy import create_engine import pandas as pd data = pd.read_csv('/path/input.csv') # 创建数据库引擎 engine = create_engine('sqlite:///:memory:') # 将数据框存储到data_table表中 data.to_sql('data_table', engine) # 查询所有的数据 res1 = pd.read_sql_query('SELECT * FROM data_table', engine) print('Result 1') print(res1) print('') # 分组查询 res2 = pd.read_sql_query('SELECT dept,sum(salary) FROM data_table group by dept', engine) print('Result 2') print(res2)
当无涯教程执行上面的代码时,它将产生以下输出。
Result 1 index id name salary start_date dept 0 0 1 Rick 623.30 2012-01-01 IT 1 1 2 Dan 515.20 2013-09-23 Operations 2 2 3 Tusar 611.00 2014-11-15 IT 3 3 4 Ryan 729.00 2014-05-11 HR 4 4 5 Gary 843.25 2015-03-27 Finance 5 5 6 Rasmi 578.00 2013-05-21 IT 6 6 7 Learnfk 632.80 2013-07-30 Operations 7 7 8 Guru 722.50 2014-06-17 Finance Result 2 dept sum(salary) 0 Finance 1565.75 1 HR 729.00 2 IT 1812.30 3 Operations 1148.00
还可以使用pandas中提供的sql.execute函数将数据插入关系表中,在下面的代码中,将先前的csv文件作为输入数据集,将其存储在关系表中,然后 使用sql.execute插入另一个记录。
from sqlalchemy import create_engine from pandas.io import sql import pandas as pd data = pd.read_csv('C:/Users/Rasmi/Documents/pydatasci/input.csv') engine = create_engine('sqlite:///:memory:') #将数据存储在关系表中 data.to_sql('data_table', engine) # 插入一行 sql.execute('INSERT INTO data_table VALUES(?,?,?,?,?,?)', engine, params=[('id',9,'Ruby',711.20,'2015-03-27','IT')]) # 从关系表中读取 res = pd.read_sql_query('SELECT ID,Dept,Name,Salary,start_date FROM data_table', engine) print(res)
当无涯教程执行上面的代码时,它将产生以下输出。
id dept name salary start_date 0 1 IT Rick 623.30 2012-01-01 1 2 Operations Dan 515.20 2013-09-23 2 3 IT Tusar 611.00 2014-11-15 3 4 HR Ryan 729.00 2014-05-11 4 5 Finance Gary 843.25 2015-03-27 5 6 IT Rasmi 578.00 2013-05-21 6 7 Operations Learnfk 632.80 2013-07-30 7 8 Finance Guru 722.50 2014-06-17 8 9 IT Ruby 711.20 2015-03-27
还可以使用pandas中提供的sql.execute函数将数据删除到关系表中,下面的代码根据给定的输入条件删除一行。
from sqlalchemy import create_engine from pandas.io import sql import pandas as pd data = pd.read_csv('C:/Users/Rasmi/Documents/pydatasci/input.csv') engine = create_engine('sqlite:///:memory:') data.to_sql('data_table', engine) sql.execute('Delete from data_table where name=(?) ', engine, params=[('Gary')]) res = pd.read_sql_query('SELECT ID,Dept,Name,Salary,start_date FROM data_table', engine) print(res)
当无涯教程执行上面的代码时,它将产生以下输出。
id dept name salary start_date 0 1 IT Rick 623.3 2012-01-01 1 2 Operations Dan 515.2 2013-09-23 2 3 IT Tusar 611.0 2014-11-15 3 4 HR Ryan 729.0 2014-05-11 4 6 IT Rasmi 578.0 2013-05-21 5 7 Operations Learnfk 632.8 2013-07-30 6 8 Finance Guru 722.5 2014-06-17
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)