絶対値ではなく、データセット全体のサイズに対する各列のパーセンテージを Y 軸に表示して、2 つのヒストグラムを比較したいと思います。それは可能ですか?私はパンダとmatplotlibを使用しています。ありがとう
質問する
81903 次
6 に答える
90
( for ) はdensity=True
、 1に等しいヒストグラムを返します。ヒストグラムの合計を 1 にしたい場合は、Numpy の histogram() を使用して、結果を自分で正規化できます。normed=True
matplotlib < 2.2.0
np.sum(pdf * np.diff(bins))
x = np.random.randn(30)
fig, ax = plt.subplots(1,2, figsize=(10,4))
ax[0].hist(x, density=True, color='grey')
hist, bins = np.histogram(x)
ax[1].bar(bins[:-1], hist.astype(np.float32) / hist.sum(), width=(bins[1]-bins[0]), color='grey')
ax[0].set_title('normed=True')
ax[1].set_title('hist = hist / hist.sum()')
ところで:左のプロットの最初のビンでの奇妙なプロットの不具合。
于 2013-07-26T09:01:44.683 に答える
27
Pandas プロットは、それぞれの matplotlib 関数から追加のキーワード引数を受け入れることができます。したがって、ここで他の人のコメントから完全を期すために、これがその方法です。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(100,2), columns=list('AB'))
df.hist(density=1)
また、直接比較するには、これも良い方法かもしれません。
df.plot(kind='hist', density=1, bins=20, stacked=False, alpha=.5)
于 2015-09-23T20:02:57.183 に答える
20
@CarstenKönigが正しい方法を見つけたようです:
df.hist(bins=20, weights=np.ones_like(df[df.columns[0]]) * 100. / len(df))
于 2016-01-13T01:34:43.230 に答える