我正在尝试在庞大的数据集(约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其他用于培训的功能
答案 0 :(得分:0)
你的时间问题不是熊猫,而是你的SQL引擎。
如果您没有这样做,可以在表cust_id
的{{1}}字段中添加索引,这样可以加快查询速度。