Development Tip

Pandas 시리즈의 히스토그램 값

yourdevel 2020. 12. 8. 20:07
반응형

Pandas 시리즈의 히스토그램 값


나는 파이썬 팬더 시리즈의 일부 값이 (종류 : 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.

import numpy as np
count, division = np.histogram(series)

여기서 division은 자동으로 계산 된 bin의 경계이고 count는 각 bin 내부의 모집단입니다.

특정 수의 빈을 수정해야하는 경우 bin 인수를 사용하고 빈 수를 지정하거나 각 빈 사이의 경계를 직접 지정할 수 있습니다.

count, division = np.histogram(series, bins = [-201,-149,949,1001])

결과를 플로팅하기 위해 matplotlib 함수 hist를 사용할 수 있지만 pandas에서 작업하는 경우 각 Series에는 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

참고 URL : https://stackoverflow.com/questions/13129618/histogram-values-of-a-pandas-series

반응형