Read_CSV文件更快

时间:2016-11-11 21:01:31

标签: python csv pandas dataframe data-science

我在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函数时,花了大约6秒钟来读取文件并将其上传到python笔记本中。我该怎么做才能加快速度呢?

谢谢!

1 个答案:

答案 0 :(得分:2)

更新:查看您的逻辑,您似乎不需要先使用sep='delimiter',因为您将仅使用(拆分)第一个(index = 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+

OLD回答:

首先,请不要阅读您不需要的列(或您要删除的列: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文件的所有问题;)