首页 > 解决方案 > 数据框的累积直方图

问题描述

目标是创建这样的情节 在此处输入图像描述

虚拟df:

columns = ['number_of_words', 'occurrences']
data = [[1, 2312252],
       [2,1000000],
       [3,800000],
        [4, 400000],
        [5, 100000],
        [6, 70000],
        [7, 40000],
        [8, 10000],
        [9, 4000],
        [10, 50]]
dummy_df = pd.DataFrame(columns=columns, data=data)

y 轴表示出现次数,x 轴表示来自 dummy_df 的单词列数。

x 轴应该是累积的,以便将值堆叠在一起。

示例:当number_of_words= 1 时,我们有大约 230 万次出现。使用number_of_words= 2 我们大约有 1m occurrences,因此它应该在occurrences= 2 处绘制 2.3m + 1m。在直方图的最后一个条目number_of_words应该达到 sum(occurrences)。

我不想规范化它。

标签: pandasdataframematplotlib

解决方案


由于您已经计算出频率,因此只需将其累加即可:

dummy_df['acc'] = dummy_df.occurrences.cumsum()                                                                                                                                                                                       
ax = dummy_df['acc'].plot('bar', width=1, color='b')
dummy_df['acc'].shift().plot('bar', alpha=0.7, width=1, color='r', ax=ax)

推荐阅读