簡體   English   中英

頻率表中的熊貓圖密度圖

[英]Pandas plot density plot from frequency table

假設我有一個看起來像這樣(簡化)的DataFrame

>>> df
    freq 
2      2   
3     16  
1     25  

其中的index列代表一個值,而freq列代表該值的出現頻率,如頻率表中所示。

我想為此表繪制一個密度圖,就像從圖類型kde獲得的密度圖一樣。 但是,這種類型顯然僅適用於pd.Series 我的df太大,無法展平為1D系列,即df = [2, 2, 3, 3, 3, ..,, 1, 1] 在這種情況下如何繪制密度圖?

我知道您已經問過df太大而無法展平的情況,但是以下回答適用於這種情況:

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

或更一般而言,當值位於名為val而不是索引的列中時:

df.val.repeat(df.freq).plot.kde()

如果您通過總體大小的乘積對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()

Seaborn是在Matplotlib之上執行此操作的,並且可以根據需要自動計算內核密度估計值。

import seaborn as sns

x = pd.Series(np.random.randint(0, 20, size = 10000), name = 'freq')

sns.distplot(x, kde = True)

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM