“频率”选项卡中的“Pandas”图密度图

2024-09-30 14:25:04 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个数据帧,看起来(简化)如下

>>> df
    freq 
2      2   
3     16  
1     25  

其中index列表示一个值,freq列表示该值出现的频率,如频率表中所示。

我想为这个表绘制一个密度图,就像从plot kindkde获得的一样。然而,这种情况显然只适用于pd.Series。我的df太大了,无法展开成1D系列,即df = [2, 2, 3, 3, 3, ..,, 1, 1]。 在这种情况下,我怎么能画出这样的密度图呢?


Tags: 数据dfindexplot绘制情况频率密度
3条回答

我知道您要求的是df太大而无法展开的情况,但下面的答案适用于情况并非如此的情况:

pd.Series(df.index.repeat(df.freq)).plot.kde()

或者更一般地说,当值在名为val的列中而不是索引中时:

^{pr2}$

如果将y值按总体大小的乘积归一化,则可以使用条形图绘制密度分布。这将使条覆盖的面积等于1。在

plt.bar(
    df.index,
    df.freq / df.freq.sum(),
    width=-1,
    align='edge'
)

widthalign参数确保每个条覆盖间隔(k-1,k)。在

有更好的统计学知识的人应该回答核密度估计是否真的对离散分布有意义。在

也许这会奏效:

import matplotlib.pyplot as plt

plt.plot(df.index, df['freq'])

plt.show()

相关问题 更多 >