판다들의 차이점은 무엇일까요?qcut이랑 팬더.cut?
문서에는 다음과 같이 나와 있습니다.
http://pandas.pydata.org/pandas-docs/dev/basics.html
"연속적인 값은 cut(값을 기준으로 빈), qcut(샘플 분위수를 기준으로 빈) 함수를 이용하여 이산화할 수 있습니다."
아주 추상적으로 들리는데요...아래 예제에서 차이점을 알 수 있지만 qcut(sample quantile)은 실제로 무엇을 의미합니까? qcut 대 cut은 언제 사용하시겠습니까?
감사해요.
factors = np.random.randn(30)
In [11]:
pd.cut(factors, 5)
Out[11]:
[(-0.411, 0.575], (-0.411, 0.575], (-0.411, 0.575], (-0.411, 0.575], (0.575, 1.561], ..., (-0.411, 0.575], (-1.397, -0.411], (0.575, 1.561], (-2.388, -1.397], (-0.411, 0.575]]
Length: 30
Categories (5, object): [(-2.388, -1.397] < (-1.397, -0.411] < (-0.411, 0.575] < (0.575, 1.561] < (1.561, 2.547]]
In [14]:
pd.qcut(factors, 5)
Out[14]:
[(-0.348, 0.0899], (-0.348, 0.0899], (0.0899, 1.19], (0.0899, 1.19], (0.0899, 1.19], ..., (0.0899, 1.19], (-1.137, -0.348], (1.19, 2.547], [-2.383, -1.137], (-0.348, 0.0899]]
Length: 30
Categories (5, object): [[-2.383, -1.137] < (-1.137, -0.348] < (-0.348, 0.0899] < (0.0899, 1.19] < (1.19, 2.547]]`
우선 분위수는 백분위수, 사분위수, 중위수와 같은 가장 일반적인 용어에 불과하다는 점에 유의하십시오.섯의을로과이다다이과서gu로섯의n을e,uodseqcut
5분위 배율로
를 5분위수로 할 때qcut
빈에 수 됩니다. 즉, 에 한 의 가 됩니다 되도록 됩니다 되도록 가 의 에 한 레코드가 30개이므로 각 빈에 6개가 있어야 합니다(단, 랜덤 추첨으로 인해 중단점이 다를 수 있지만 출력은 다음과 같습니다).
pd.qcut(factors, 5).value_counts()
[-2.578, -0.829] 6
(-0.829, -0.36] 6
(-0.36, 0.366] 6
(0.366, 0.868] 6
(0.868, 2.617] 6
로 의 에는 에는 의 로 cut
더 고르지 못한 될 입니다:지한을게다될더다될게u지e더을 .
pd.cut(factors, 5).value_counts()
(-2.583, -1.539] 5
(-1.539, -0.5] 5
(-0.5, 0.539] 9
(0.539, 1.578] 9
(1.578, 2.617] 2
그 이유는cut
값의 빈도가 아닌 값 자체에 따라 균등한 간격으로 빈을 선택합니다.따라서 임의 정규 분포에서 그림을 그렸기 때문에 내부 통에서 더 높은 빈도를 보고 외부에서는 더 적은 빈도를 볼 수 있습니다.이것은 기본적으로 히스토그램의 표 형식이 될 것입니다. (30개의 레코드로 상당히 종 모양이 될 것으로 예상됩니다.)
- cut 명령을 사용하면 등간격 빈이 생성되지만 각 빈에서 샘플의 빈도가 같지 않습니다.
- qcut 명령은 동일하지 않은 크기의 빈을 생성하지만 각 빈에서 샘플의 빈도는 동일합니다.
>>> x=np.array([24, 7, 2, 25, 22, 29])
>>> x
array([24, 7, 2, 25, 22, 29])
>>> pd.cut(x,3).value_counts() #Bins size has equal interval of 9
(2, 11.0] 2
(11.0, 20.0] 0
(20.0, 29.0] 4
>>> pd.qcut(x,3).value_counts() #Equal frequecy of 2 in each bins
(1.999, 17.0] 2
(17.0, 24.333] 2
(24.333, 29.0] 2
따라서 qcut은 표본 공간에 군집되어 있더라도 각 빈에 있는 값이 보다 균등하게 분포되도록 합니다.즉, 매우 근접한 값을 가진 데이터로 가득 찬 빈과 0 값을 가진 다른 빈이 있을 가능성이 적습니다.일반적으로 샘플링이 더 좋습니다.
Pd.qcut은 배열의 요소를 (배열의 요소 수)/(빈의 수 - 1)에 기초하여 분할한 다음, 이 정도 수의 요소를 각 빈에 직렬로 분할합니다.
Pd.cut은 ((첫 번째 + 마지막 요소)/(빈-1의 번호)를 기준으로 나눗셈을 할 때 배열의 요소를 분배한 다음 요소가 속하는 값의 범위에 따라 요소를 분배합니다.
언급URL : https://stackoverflow.com/questions/30211923/what-is-the-difference-between-pandas-qcut-and-pandas-cut
'programing' 카테고리의 다른 글
PHP에서 엑셀 출력을 생성하는 가장 좋은 방법은 무엇입니까? (0) | 2023.09.14 |
---|---|
Debezium이 다음 binlog로 자동 전환되도록 하는 방법 (0) | 2023.09.14 |
다중 라인 플렉스박스 레이아웃에서 줄 바꿈을 지정하는 방법은? (0) | 2023.09.09 |
컴파일러가 reloc을 최적화하는 것이 허용됩니까? (0) | 2023.09.09 |
jQuery DataTables: 제어 테이블 너비 (0) | 2023.09.09 |