快速读取所有 csv 文件并更新共享字典

Posted

技术标签:

【中文标题】快速读取所有 csv 文件并更新共享字典【英文标题】:Read all csv files quickly and update shared dictionary 【发布时间】:2019-02-13 02:27:42 【问题描述】:

我是 python 和 pandas 的新手,但这就是我想做的。 我想通读目录中的所有 csv 文件并从文件中检索一个数据单元格并更新字典上的计数,检索值是字典中的键。我必须为约 6000 个 csv 文件执行此操作。我怎样才能快速做到这一点?

stats = 'A':0, 'B':0, 'C':0, 'D':0
for file in f:
    df = pandas.read_csv(file)
    type = df["type"].head(1)[0]
    stats[type]+=1

我阅读文件的顺序无关紧要。我希望同时执行此操作,共享字典。除非有更好的方法来实现我想要实现的目标。

【问题讨论】:

你能说得更具体点吗?你能分享一个csv文件看起来如何的例子吗?您对阅读哪个单元格感兴趣?是在前几行吗?字典看起来如何,您是否只对更新一个键值对感兴趣? @jpp 我已经发布了我到目前为止所做的事情 【参考方案1】:

您可以通过以下方式显着优化您的逻辑:

只读取第一行。 只读取所需的列。 从所需列的第一个值创建惰性迭代。 将生成的可迭代对象提供给collections.Counter

这里有一些代码应该会有所帮助:

from collections import Counter
import pandas as pd

res = Counter(pd.read_csv(file, nrows=1, columns=['type'])['type'].iloc[0] \
              for file in f)

Counter 的美妙之处在于无需提前指定键。另请注意Counterdict 的子类,因此您不会放弃任何功能。

【讨论】:

以上是关于快速读取所有 csv 文件并更新共享字典的主要内容,如果未能解决你的问题,请参考以下文章

如何读取 2 列 csv 文件并创建字典?

Python读取文件夹下所有csv文件并将数据按文件名写入字典

如何使用熊猫读取共享文件夹中的csv文件?

如何从 csv 读取列并运行更新查询?

读取并绘制实时实时自我更新 csv 文件

ipywidgets - widgets.FileUpload,更新CSV文件读取CSV文件