文本文件中的频率并创建饼图

时间:2016-04-28 20:16:12

标签: numpy matplotlib charts pie-chart frequency

我有一个非常大的文本文件。我想分析它并绘制这些分析。我所做的一个分析就是找到5个最常用的词。

     f = open('story.txt','r')
        words = [x for y in [l.split() for l in f.readlines()] for x in y]
        data = sorted([(w, words.count(w)) for w in set(words)], key = lambda x:x[1], reverse=True)[:5] 

    print data

    most_words = [x[0] for x in data]
    times_used = [int(x[1]) for x in data]
    print most_words
    print times_used

显示:

[('the', 4826), ('of', 2276), ('and', 1825), ('a', 1761), ('to', 1693)]
['the', 'of', 'and', 'a', 'to']
[4826, 2276, 1825, 1761, 1693]

由于这是一个如此庞大的文件,分析需要一段时间。首先我想知道是否有办法以更快的方式做到这一点?其次,我想用这些数据创建一个饼图。我设法弄清楚如何使用这些数据制作条形图,但制作一个饼图似乎没有我。任何帮助都会很棒!

同样,如果有一种方法可以加快搜索大文本文件而不在过程中使用如此多的RAM,我可以听到我的计算机在运行时运行起来很难。谢谢!

..或者,如果您认为有任何帖子可能会有所帮助请告诉我,我一直在寻找我的问题的解决方案超过一个小时,并决定向我自己的问题寻求帮助!

1 个答案:

答案 0 :(得分:0)

对于情节部分,您可以使用以下配方来完成:

import matplotlib.pyplot as plt

words = [('the', 4826), ('of', 2276), ('and', 1825), ('a', 1761), ('to', 1693)]
sizes, labels = [i[1] for i in words],[i[0] for i in words]
plt.pie(sizes, labels=labels,autopct='%1.1i%%')
plt.show()

,结果如下:

Pie chart in matplotlib for word frequency

您可以为颜色,爆炸等提供其他参数。检查this matplotlib演示。

对于表演部分,我建议你看一下这篇文章:

Python program that finds most frequent word in a .txt file, Must print word and its count

@ninjagecko解决方案在我看来可能更快,但你必须测试它并看到。