- Python数据科学简介
- Python数据科学开发环境
- Python Pandas库
- Python Numpy库
- Python Scipy库
- Python Matplotlib库
- Python数据处理
- Python数据可视化
- 统计数据分析
Python关系数据库
我们可以连接到关系数据库以使用Pandas
库分析数据,以及另一个用于实现数据库连接的额外库。 这个软件包被命名为sqlalchemy,它提供了在python中使用的完整的SQL语言功能。
安装SQLAlchemy
使用在Pandas环境安装章中讨论的Anaconda,安装非常简单。 假设您已经按照本章的说明安装了Anaconda,请在Anaconda提示窗口中运行以下命令来安装SQLAlchemy软件包。
conda install sqlalchemy
读取关系表
我们将使用Sqlite3作为关系数据库,因为它非常轻便且易于使用。 尽管SQLAlchemy库可以连接到各种关系源,包括MySql,Oracle和Postgresql以及Mssql。 我们首先创建一个数据库引擎,然后使用SQLAlchemy库的to_sql
函数连接到数据库引擎。
在下面的例子中,我们通过使用已经通过读取csv文件创建的数据帧中的to_sql
函数来创建关系表。 然后使用Pandas
的read_sql_query
函数来执行和捕获来自各种SQL查询的结果。
from sqlalchemy import create_engine import pandas as pd data = pd.read_csv('/path/input.csv') # Create the db engine engine = create_engine('sqlite:///:memory:') # Store the dataframe as a table data.to_sql('data_table', engine) # Query 1 on the relational table res1 = pd.read_sql_query('SELECT * FROM data_table', engine) print('Result 1') print(res1) print('') # Query 2 on the relational table 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 1 Rick 623.30 2012-01-01 IT 2 Dan 515.20 2013-09-23 Operations 3 Tusar 611.00 2014-11-15 IT 4 Ryan 729.00 2014-05-11 HR 5 Gary 843.25 2015-03-27 Finance 6 Rasmi 578.00 2013-05-21 IT 7 Pranab 632.80 2013-07-30 Operations 8 Guru 722.50 2014-06-17 Finance Result 2 dept sum(salary) Finance 1565.75 HR 729.00 IT 1812.30 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:') # Store the Data in a relational table data.to_sql('data_table', engine) # Insert another row sql.execute('INSERT INTO data_table VALUES(?,?,?,?,?,?)', engine, params=[('id',9,'Ruby',711.20,'2015-03-27','IT')]) # Read from the relational table res = pd.read_sql_query('SELECT ID,Dept,Name,Salary,start_date FROM data_table', engine) print(res)
执行上面示例代码,得到以下代码 -
id dept name salary start_date IT Rick 623.30 2012-01-01 Operations Dan 515.20 2013-09-23 IT Tusar 611.00 2014-11-15 HR Ryan 729.00 2014-05-11 Finance Gary 843.25 2015-03-27 IT Rasmi 578.00 2013-05-21 Operations Pranab 632.80 2013-07-30 Finance Guru 722.50 2014-06-17 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 IT Rick 623.3 2012-01-01 Operations Dan 515.2 2013-09-23 IT Tusar 611.0 2014-11-15 HR Ryan 729.0 2014-05-11 IT Rasmi 578.0 2013-05-21 Operations Pranab 632.8 2013-07-30 Finance Guru 722.5 2014-06-17
上一篇:Python处理Excel数据
下一篇:Python NoSQL数据库
扫描二维码
程序员编程王