【问题标题】:Python - Search through huge database [closed]Python - 搜索庞大的数据库[关闭]
【发布时间】:2020-10-16 05:23:05
【问题描述】:

下午好!
我有一个非常大的 csv 文件(11gb - 几百万行)
我进行了很多搜索,但没有找到一种快速搜索大型数据库的方法,例如,如果我搜索一个术语,它会在数据框中显示包含该术语的行

有没有办法通过熊猫/任何其他模块来做到这一点

【问题讨论】:

  • 您能指定更多您要搜索的内容吗?

标签: python-3.x pandas dataframe csv search


【解决方案1】:

如果我在你那里我会尝试上面评论员的建议,即创建一个数据库来分块查询你的数据集:

import pandas as pd
from sqlalchemy import create_engine

file = '/path/to/csv/file'

csv_database = create_engine('sqlite:///csv_database.db')

您需要遍历文件并将数据存储到 sqllite。

chunksize = 100000
i = 0
j = 1
for df in pd.read_csv(file, chunksize=chunksize, iterator=True):
      df = df.rename(columns={c: c.replace(' ', '') for c in df.columns}) 
      df.index += j
      i+=1
      df.to_sql('table', csv_database, if_exists='append')
      j = df.index[-1] + 1

然后通过在通常的 SQL 中查询来访问您的数据:

df = pd.read_sql_query('SELECT (columns) FROM table where (conditions)', csv_database)

【讨论】:

    【解决方案2】:

    如果你觉得舒服,没有什么好方法可以做你想做的事。也许您可以通过存储 csv in a DB 来提高搜索速度,但请记住,只有在同一个文件中多次搜索时才值得这样做。

    【讨论】:

      【解决方案3】:

      如果数据集适合系统内存,您可以使用字符串运算符(尤其是==contains)来搜索数据集。 请参阅Pandas comparison with SQL 了解一些演示搜索 Pandas 功能的示例。

      【讨论】:

        猜你喜欢
        • 2013-10-31
        • 1970-01-01
        • 2011-04-10
        • 1970-01-01
        • 1970-01-01
        • 2014-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多