Python Pandas Series(type:pandas.core.series.Series
)
In [1]: series = pd.Series([0.0,950.0,-70.0,812.0,0.0,-90.0,0.0,0.0,-90.0,0.0,-64.0,208.0,0.0,-90.0,0.0,-80.0,0.0,0.0,-80.0,-48.0,840.0,-100.0,190.0,130.0,-100.0,-100.0,0.0,-50.0,0.0,-100.0,-100.0,0.0,-90.0,0.0,-90.0,-90.0,63.0,-90.0,0.0,0.0,-90.0,-80.0,0.0,])
In [2]: series.min()
Out[2]: -100.0
In [3]: series.max()
Out[3]: 950.0
ヒストグラムの値を取得したい(ヒストグラムをプロットする必要はない)...各間隔の頻度を取得するだけです。
私の間隔が[-200; -150]から[950; 1000]
下限は
lwb = range(-200,1000,50)
そして上限は
upb = range(-150,1050,50)
周波数(各間隔内にある値の数)を取得する方法がわかりません... lwbとupbを定義する必要はないと確信しています...しかし、どの関数を使用すべきかわかりませんこれを実行するために! (Pandas docに飛び込んだ後、cut
関数は離散化の問題だから役立つと思います...しかし、私はそれを使用する方法を理解していません)
これを行うことができた後、ヒストグラムを表示する方法を見ていきます(しかし、それは別の問題です)
NumPy
の- histogram 関数を使用するだけです。
import numpy as np
count, division = np.histogram(series)
ここで、divisionはビンに対して自動的に計算された境界であり、countは各ビン内の人口です。
特定の数のビンを修正する必要がある場合は、引数ビンを使用してビンの数を指定するか、各ビン間の境界を直接指定できます。
count, division = np.histogram(series, bins = [-201,-149,949,1001])
結果をプロットするには、matplotlib関数histを使用できますが、pandasで作業している場合、各シリーズにはhist関数への独自のハンドルがあり、選択したビニングを指定できます。
series.hist(bins=division)
特定の間隔のビニング範囲内の値の頻度カウントを取得するために、 pd.cut
これは、各要素の半分開いたビンのインデックスを value_counts
それぞれのカウントを計算します。
それらのカウントをプロットするために、棒グラフを作成できます。
step = 50
bin_range = np.arange(-200, 1000+step, step)
out, bins = pd.cut(s, bins=bin_range, include_lowest=True, right=False, retbins=True)
out.value_counts(sort=False).plot.bar()
カウントの降順でソートされた各間隔の頻度:
out.value_counts().head()
[-100, -50) 18
[0, 50) 16
[800, 850) 2
[-50, 0) 2
[950, 1000) 1
dtype: int64
美的目的のために範囲の低い閉じた間隔のみを含むようにプロットを変更するには、次のようにします。
out.cat.categories = bins[:-1]
out.value_counts(sort=False).plot.bar()
ヒストグラムの値を取得したい場合、私が間違えなければ、単純にシリーズ内の各一意の値の頻度を探しています。その場合、単純にserie.value_counts()
を実行できます。
0.0 16
-90.0 8
-100.0 5
-80.0 3
63.0 1
-50.0 1
130.0 1
190.0 1
840.0 1
-48.0 1
208.0 1
-64.0 1
812.0 1
-70.0 1
950.0 1