我给本科生上课的时候,推荐了datacamp的cheatsheets,具体内容可以参见课程的Github页面datascience2018。结果发现这些pdf中的很多代码不容易复制,其中一个重要的原因是其中涉及到的数据并未提供。
这里举一个例子,在importing data部分涉及到了读入关系数据库Northwind.sqlite,但是并不容易找到这个数据。
如果想要学习使用python来操作关系数据库的基础知识,可以学习DataCamp的课程introduction-to-relational-databases-in-python。
首先,我们需要下载Northwind.sqlite数据,推荐从https://github.com/jpwhite3/northwind-SQLite3(关于这个数据的介绍,也可以看这里)直接下载,为了简单,我们可以选择直接下载其中的 Northwind_small.sqlite
文件。
其次,我们就可以直接 create_engine
from sqlalchemy import create_engine
engine = create_engine('sqlite:///Northwind_small.sqlite')
然后,在这个关系型数据库中,有很多数据表格,我们可以读取表格的名字。
table_names = engine.table_names()
table_names
['Category',
'Customer',
'CustomerCustomerDemo',
'CustomerDemographic',
'Employee',
'EmployeeTerritory',
'Order',
'OrderDetail',
'Product',
'Region',
'Shipper',
'Supplier',
'Territory']
Querying Relational Databases
con = engine.connect()
rs = con.execute("SELECT * FROM OrderDetail")
import pandas as pd
df = pd.DataFrame(rs.fetchall())
df.columns = rs.keys()
con.close()
df[:3]
Id | OrderId | ProductId | UnitPrice | Quantity | Discount | |
---|---|---|---|---|---|---|
0 | 10248/11 | 10248 | 11 | 14.0 | 12 | 0.0 |
1 | 10248/42 | 10248 | 42 | 9.8 | 10 | 0.0 |
2 | 10248/72 | 10248 | 72 | 34.8 | 5 | 0.0 |
Using the context manager with
with engine.connect() as con:
rs = con.execute("SELECT * FROM OrderDetail")
df = pd.DataFrame(rs.fetchall())
df.columns = rs.keys()
Querying relational databases with pandas
df = pd.read_sql_query("SELECT * FROM OrderDetail", engine)
df.head()
Id | OrderId | ProductId | UnitPrice | Quantity | Discount | |
---|---|---|---|---|---|---|
0 | 10248/11 | 10248 | 11 | 14.0 | 12 | 0.0 |
1 | 10248/42 | 10248 | 42 | 9.8 | 10 | 0.0 |
2 | 10248/72 | 10248 | 72 | 34.8 | 5 | 0.0 |
3 | 10249/14 | 10249 | 14 | 18.6 | 9 | 0.0 |
4 | 10249/51 | 10249 | 51 | 42.4 | 40 | 0.0 |
Leave a Comment