我有一个tabledata.csv
文件,并且一直在使用pandas.read_csv
读取或选择具有特定条件的特定列。
例如,我使用下面的代码来选择session_id =1
中的所有“name”,这在datascientworkbench上的IPython Notebook上运行良好。
df = pandas.read_csv('/resources/data/findhelp/tabledata.csv')
df['name'][df['session_id']==1]
我只是想知道在我读了csv文件后,是否有可能以某种方式“切换/读取”它作为一个sql数据库.(我很肯定,我没有解释好使用正确的术语,对不起!).但我想要的是,我确实想使用IPython笔记本上的SQL语句来选择特定的行与特定的条件.就像我可以使用这样的东西:
Select `name`, count(distinct `session_id`) from tabledata where `session_id` like "100.1%" group by `session_id` order by `session_id`
但是我想我确实需要想办法把csv文件改成另一个版本,这样我就可以使用sql语句了。很多thx!
2条答案
按热度按时间oalqel3c1#
这是一个使用内置sqlite3包的panda和sql的快速入门。一般来说,你可以在panda中以这样或那样的方式完成所有的SQL操作。但是数据库当然是有用的。你需要做的第一件事是将原始df存储在sql数据库中,以便你可以查询它。步骤如下。
cigdeys32#
另一个答案建议使用SQLite,但是,**DuckDB比将数据加载到SQLite要快得多。
首先,加载数据需要时间;第二,SQLite没有针对分析查询(例如,聚集)进行优化。
下面是可以在Jupyter笔记本上运行的完整示例:
%pip install jupysql duckdb duckdb-engine
加载扩展(
%sql
magic)并创建内存数据库:下载一些示例CSV数据:
质询:
JupySQL documentation available here