一个具有值的数据框:
user value
1 0
2 1
3 4
4 2
5 1
当我尝试使用density=True
绘制直方图时,它显示出非常奇怪的结果
df.plot(kind='hist', denisty=True)
我很清楚地知道,第一个bin几乎覆盖了所有值的100%。在这种情况下,密度应大于0.8。但是情节显示大约是0.04。
怎么会这样也许我弄错了density
的含义。
顺便说一句,如果有关联的话,数据帧中大约有80万个值。这是数据框的describe
:
count 795846.000000
mean 5.220350
std 20.600285
min -3.000000
25% 0.000000
50% 0.000000
75% 1.000000
max 247.000000
参考方案
如果您对概率感兴趣,而不对概率密度感兴趣,我想您想使用weights
而不是density
。看一下这个例子,看看有什么区别:
df = pd.DataFrame({'x':np.random.normal(loc=5, scale=10, size=80000)})
fig, (ax0, ax1) = plt.subplots(1, 2, figsize=(12, 4))
df.plot(kind='hist', density=True, bins=np.linspace(-100, 100, 30), ax=ax0)
df.plot(kind='hist', bins=np.linspace(-100, 100, 30), weights=np.ones(len(df))/len(df), ax=ax1)
如果使用density
,则按图的面积进行归一化,如果使用weights
,则按箱的高度之和进行归一化。
跟随this example:import numpy as np import matplotlib.pyplot as plt fig = plt.figure() for i, label in enumerate(('A', 'B', 'C', 'D')): ax = f…
Python Pandas:按分组分组,平均? - python我有一个像这样的数据框:cluster org time 1 a 8 1 a 6 2 h 34 1 c 23 2 d 74 3 w 6 我想计算每个集群每个组织的平均时间。预期结果:cluster mean(time) 1 15 ((8+6)/2+23)/2 2 54 (74+34)/2 3 6 我不知道如何在熊猫中做到这一点,有人可以帮忙吗? 参考方案 如…
python :安装 python 后,如何导入 Pandas - python我已经安装了 python 。现在,当我尝试跑步时import pandas as pd 我收到以下错误Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> import pandasFile ImportError: …
Python Pandas:在多列上建立布尔索引 - python尽管至少有关于如何在Python的pandas库中为DataFrame编制索引的two good教程,但我仍然无法在一个以上的列上找到一种优雅的SELECT编码方式。>>> d = pd.DataFrame({'x':[1, 2, 3, 4, 5], 'y':[4, 5, 6, 7, 8]}) >…
matplotlib:使加号变粗 - python在Matplotlib中,我想绘制一个粗体加号(或一个十字),但是marker set中提供的那个太 thin 。即使增加它的大小,它也不会变厚。对于example:绘制红色加号的lines of code是:# Draw median marker. if plot_opts.get('bean_show_median', True):…