使用大csv(iterate和chunksize)的pandas结构

发布于 2021-01-29 16:39:36

我有一个很大的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) 只搜索整个文件

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()

我希望我的问题不要那么混乱

关注者
0
被浏览
32
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    解决方案,如果需要一次创建一个大文件,DataFrame如果需要一次处理所有数据(可能,但不推荐):

    然后将concat用于df的所有块,因为函数的输出类型为:

    df = pd.read_csv('Check1_900.csv', sep='\t', iterator=True, chunksize=1000)
    

    是不是数据帧,而是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,因为避免了索引的重复。

    编辑:

    但是如果要处理诸如聚合之类的大数据,最好使用dask,因为它提供了高级并行性。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看