python - 如何高效读取 CSV 的特定行?

标签 python pandas keras

我正在致力于在大约 5,000,000 行的训练集上训练 Keras 神经网络模型。我一次只读取该文件的几行,使用类似于以下的代码进行训练:

n_lines = 5000000
skiprows = np.delete(np.arange(1, n_lines), np.arange(first_line, first_line+batch_size))

X = pd.read_csv('training.csv', skiprows=skiprows)

X上执行一些转换,然后使用model.train_on_batch(X, y)将其传递给模型。

我认为这是目前我训练过程中的瓶颈,所以我想知道是否有更有效的方法来实现这一点。

我计时来检查差异(training_data.csv 有 50,000 行):

pd.read_csv('training_data.csv') # 0.86 seconds

n_batches = 1000
for i in range(n_batches):
    skiprows = np.delete(np.arange(1, 50000), np.arange(i*50, (1+i)*50))
    pd.read_csv('training_data.csv', skiprows=skiprows)
# 152.23 seconds to iterate through all 1000 batches

最佳答案

我相信我找到了一种可以使用 pd.read_csvchunksize 参数的方法。

for batch in pd.read_csv('training_data.csv', chunksize=50):
    # transform/reshape batch
    #model.train_on_batch(batch, y)
    next

这会在大约 3.86 秒内读取 1,000 个大小为 50 的批处理,并允许我使用 train_on_batch 方法。我仍然需要找到一种更好的方法来读取 y 数据,但我想我可能会考虑将 Xy 存储在一个单独的文件中csv 并使用 chunksize

关于python - 如何高效读取 CSV 的特定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51369763/

相关文章:

python - 简化列表理解

python - 在 Python 脚本末尾生成 pcap 文件

python - 使用 cifar 100 数据预训练 cifar 10 网络

python - 如何在数据更改时继承列表并触发事件?

python - 损失: nan When build a model for bike sharing

python - 跨数据框列应用 'or' 条件- Pandas

python - 使用 matplotlib 使用 for 循环在单个图上绘制多个线图

python - 稀疏_分类_交叉熵的维度误差

python - 如何使用适当的输入形状来训练 CNN?

python - 确定两个值的差异何时达到最小值