我有一个很大的csv文件,大约600mb,有1100万行,我想创建统计数据,例如数据透视图,直方图,图形等。显然,试图正常读取它是:
df = pd.read_csv('Check400_900.csv', sep='\t')
不起作用,所以我在类似的帖子中发现了迭代和块大小,所以我使用了
df = pd.read_csv('Check1_900.csv', sep='\t', iterator=True, chunksize=1000)
一切都很好,例如,我可以print df.get_chunk(5) 只搜索整个文件
print df.get_chunk(5)
for chunk in df: print chunk
我的问题是我不知道如何在整个df中使用以下这些东西,而不仅仅是一个
plt.plot() print df.head() print df.describe() print df.dtypes customer_group3 = df.groupby('UserID') y3 = customer_group.size()
我希望我的问题不要那么混乱
解决方案,如果需要一次创建一个大文件,DataFrame如果需要一次处理所有数据:
DataFrame
然后将concat用于df的所有块,因为函数的输出类型为:
是不是数据帧,而是pandas.io.parsers.TextFileReader-源。
pandas.io.parsers.TextFileReader
tp = pd.read_csv('Check1_900.csv', sep='\t', iterator=True, chunksize=1000) print tp #<pandas.io.parsers.TextFileReader object at 0x00000000150E0048> df = pd.concat(tp, ignore_index=True)
我认为有必要在函数中添加参数忽略索引concat,因为避免了索引的重复。
concat
编辑:
但是如果要处理诸如聚合之类的大数据,最好使用dask,因为它提供了高级并行性。
dask