加快从SQL到Pandas的数据检索,以获取列

时间:2017-11-13 06:56:06

标签: python sqlite pandas

我正在尝试在庞大的数据集(约150 GB)上训练注意力模型。我已使用odo将CSV转换为SQL数据库。我目前的工作流程是随机选择两千个客户,并从数据库中提取他们的十条记录。每个客户最多有10个记录。但是,拉动数据需要花费大量时间(平均2分钟)。 如何加快数据获取过程?我目前的代码如下:

ids=# list of customer ids
df=pd.read_sql_query('SELECT * FROM records WHERE cust_id IN(%s) LIMIT 20000' % ",".join(map(str,ids))',con=disk_engine)

编辑:

我使用以下代码创建了数据库:

from odo import odo, resource, discover
import sqlite3
from sqlalchemy import create_engine

dshape = discover(resource('original_csv.csv'))

odo('original_csv.csv', 'sqlite:///whole_data.db::records',dshape=dshape,header=True)

CSV文件包含cust_id和~300其他用于培训的功能

1 个答案:

答案 0 :(得分:0)

你的时间问题不是熊猫,而是你的SQL引擎。 如果您没有这样做,可以在表cust_id的{​​{1}}字段中添加索引,这样可以加快查询速度。