首页 > 解决方案 > 在 Python 中连接数千个数据帧的最有效方法是什么?

问题描述

我目前存储了一些来自网站的数据,这些数据我已经为网站的每个产品抓取到 .csv 中。由于它是一个非常受欢迎的网站,我获得了 30,000 多个 csv,我需要合并为一个。我并不是真正的 pandas 专家,但我的第一反应是依赖 concat() 函数。也就是说,我的代码如下所示:

df = pd.DataFrame(columns=["product_id", "price"])
for file in onlyfiles:
    df1 = pd.read_csv(file)
    df = pd.concat([df, df1])

其中 onlyfiles 表示存储我的所有数据帧的目录。它可以工作,但随着数据帧数量的增加,它开始变慢。但是,这显然不是实现这一目标的最佳有效方式。有人知道在这里使用更有效的方法吗?

谢谢您的帮助。

标签: pythonpandas

解决方案


您需要开始将数据存储在 SQL 数据库中,CSV 文件不是数据库。

您可能想研究一下 Postgresql,因为 SQLite 可能没有您需要的所有功能。您应该能够设置 SQL 代码,将数据从 CSV 文件转储到单个数据库中。我有一个自动流程,可以定期将 CSV 数据提取到数据库中。

您可以使用 Python 中的 Psycopg2 库与 Postgres 进行交互。您可能要考虑的另一件事是使用 Pandasql,它允许您使用 SQL 代码操作 Pandas 数据帧。在使用 Pandas 数据框时,我总是导入 Pandasql。

这是我的 Postgres CSV 文件数据导入示例:

--Data Import Query
COPY stock_data(date, ticker, industry, open, high, low, close, adj_close, volume, dor)
FROM 'C:\Users\storageplace\Desktop\username\company_data\stock_data\stockdata.csv'
DELIMITER ','
CSV HEADER;

推荐阅读