如何使用chuncksize

时间:2017-08-24 07:10:45

标签: python sql pandas csv bigdata

我有3个csv文件(1.csv,2.csv,3.csv),每个大约20 GB。最终他们需要合并但我认为我应该先逐一进行。我需要将它们读入数据帧然后处理它们并将机器学习算法应用于它们。 这些文件没有列名,所以我需要自己添加。这些是我首先要处理的1.csv文件的前三行:

   skfjlsdkj\hgf\t1983-02-30 21:32:11.000\m.000000
0  dkgjfglgk\dfs\t1973-01-30 20:31:11.000\m.000000
1  wieruwoeiur\cvb\t1943-06-21 09:12:15.000\m.000000

这就是我一直在做的事情:

import pandas as pd
from sqlalchemy import create_engine
file = '1.csv'
csv_database = create_engine('sqlite:///csv_database.db')
cols = ['a', 'b', 'c', 'd']
chunksize = 10000
i = 0
j = 1
for df in pd.read_csv(file, chunksize=chunksize, sep='\\', iterator=True):

      df.columns=cols
      df.index += j
      i+=1
      df.to_sql('table', csv_database, if_exists='append')
      j = df.index[-1] + 1

我得到的错误是:

Length mismatch: Expected axis has 1 elements, new values have 4 elements
除了sep之外,我尝试过分隔符和escapechar,但没有帮助。为了调试,我尝试了:

df = pd.read_csv(file, chunksize=chunksize, sep='\\',  iterator=True)
df.head()

但我得到的错误是:

AttributeError: 'TextFileReader' object has no attribute 'head'

这显然是因为一旦使用了chuncksize,chunck就是一个文本文件?

最重要的是,请帮我处理和阅读这些大文件并将其读入数据框。谢谢

0 个答案:

没有答案