gpt4 book ai didi

python - 更快地读取 CSV 文件

转载 作者:行者123 更新时间:2023-12-01 03:33:48 26 4
gpt4 key购买 nike

我在 pandas 数据框中快速读取 203 mb 文件时遇到了一些麻烦。我想知道是否有更快的方法可以做到这一点。以下是我的功能:

import pandas as pd
import numpy as np

def file(filename):
df = pd.read_csv(filename, header=None, sep='delimiter', engine='python', skiprows=1)
df = pd.DataFrame(df[0].str.split(',').tolist())
df = df.drop(df.columns[range(4,70)], axis=1)
df.columns = ['time','id1','id2','amount']
return df

当我使用神奇的 %timeit 函数时,读取文件并将其上传到 python 笔记本大约需要 6 秒。我可以做什么来加快速度?

谢谢!

最佳答案

更新:查看您的逻辑,您似乎不需要首先使用 sep='delimiter' 因为您将仅使用(拆分)第一个(索引=0) 列,因此您可以简单地执行以下操作:

df = pd.read_csv(filename, header=None, usecols=[0,1,2,3],
names=['time','id1','id2','amount'],
skipinitialspace=True, skiprows=1)

PS 默认 read_csv() 将使用 C 引擎,如果 sep 不长于 1 个字符或者如果它是\s+

旧答案:

首先不要读取不需要的列(或者要删除的列:df.drop(df.columns[range(4,70)], axis=1) ):

df = pd.read_csv(filename, header=None, usecols=[0], names=['txt'],
sep='delimiter', skiprows=1)

然后将单个已解析的列拆分为四个:

df[['time','id1','id2','amount']] = df.pop('txt').str.split(',', expand=True)

PS,我强烈建议您将数据转换为 HDF5 格式(如果可以的话),并忘记 CSV 文件的所有这些问题;)

关于python - 更快地读取 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40556159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com