파이썬 버전 3.8 기준
pandas 버전 1.1.1 기준
중복 요소 수 세기(히스토그래밍) value_counts 메서드 |
본 포스팅에서는 요소별 개수 확인(히스토그램 작성용)하기 위한 value_counts()메서드에 대해 다루고 최빈값 mode()에 대해 간략히 다뤄보도록 한다.
중복 요소의 수와 최빈값 |
value_counts() Series 메서드와 top-level 함수는 1차원의 히스토그램을 계산한다.
○ 말이 어려운데 동일한 요소들이 몇 개나 있는지 출력한다.
○ 각 요소별로 개수를 출력한다면 히스토그램을 작성할 수 있다.
이 메서드는 일반적인 배열 역시 입력으로 사용이 가능하다.
메서드 사용 형식)
result=Series.value_counts(normalize=False, sort=True, ascending=False)
result=DataFrame.value_counts(subset=None, normalize=False, sort=True, ascending=False)
result=object.mode()
각 입력 객체별 설명은 다음과 같다.
○ normalize: 기본값은 False이고, True일 경우 요소별 개수가 아닌 이를 비율로 변환하여 출력한다.
○ sort: 기본값은 True이며, 이때 결과에 대해 정렬을 수행한다.
○ ascending: 기본값은 False이며, True일 경우 오름차순으로 정렬한다.
○ subset: 선택적 입력이 가능하며, 고유한 열을 계산할 때 사용하는 열이다.
▷ DataFrame에 적용할때 입력할 수 있는 변수이다.
메서드 사용 예 |
본 포스팅에서 다루는 예제는 다음과같이 numpy와 pandas를 import하여 수행한다.
모듈의 임폴트)
# pandas와 numpy의 import
In[2]: import pandas as pd
In[3]: import numpy as np
다음 예제는 value_counts() 메서드 사용 예제를 보여준다.
○ DataFrame에 적용할 경우 해당 열(혹은 행)의 조합된 데이터를 하나로 보고 동일한 데이터의 개수를 센다.
value_counts 메서드 사용 예제)
# 예제용 DataFrame의 적용
In[4]: sample_df= pd.DataFrame([[1, 3, 4, 1], [2, 4, 2, 5], [2, 2, 5, 3], [5, 2, 1, 4]], index=['a', 'b', 'c','d'], columns=['A','B','C','D'])
In[5]: sample_df
Out[5]:
A B C D
a 1 3 4 1
b 2 4 2 5
c 2 2 5 3
d 5 2 1 4
# ex3-1: Series로의 메서드 적용 예제
In[6]: sample_df['A'].value_counts()
Out[6]:
2 2
5 1
1 1
Name: A, dtype: int64
# ex3-2: DataFrame으로의 메서드 적용 예제
In[7]: sample_df.value_counts()
Out[7]:
A B C D
5 2 1 4 1
2 4 2 5 1
2 5 3 1
1 3 4 1 1
dtype: int64
# ex3-3: DataFram에서 subset 변수 사용 예제
In[8]: sample_df.value_counts(subset=['A'])
Out[8]:
A
2 2
5 1
1 1
dtype: int64
In[9]: sample_df.value_counts(subset=['A','B'])
Out[9]:
A B
5 2 1
2 4 1
2 1
1 3 1
dtype: int64
유사하게, 사용자는 자주 출몰하는 값(들)을 추출할 수 있다.
이는 mode() 메서드를 통해 가능하다.
○ mode() 및 각종 통계메서드에 대한 설명은 선행포스팅(링크)에 정리해놓았으므로 참고할 수 있다.
mode 메서드 사용 예제)
# ex4-1: Series로의 메서드 사용 예제
In[10]: sample_df['A'].mode()
Out[10]:
0 2
dtype: int64
# ex4-2: DataFrame으로의 메서드 사용 예제
In[11]: sample_df.mode()
Out[11]:
A B C D
0 2.0 2.0 1 1
1 NaN NaN 2 3
2 NaN NaN 4 4
3 NaN NaN 5 5
메서드 세부사항 |
value_counts() 메서드는 요소의 개수를 세는 메서드이다.
DataFrame.value_counts(subset=None, normalize=False, sort=True, ascending=False) |
subset: list-like
선택적으로 입력이 가능하다.
특정 조합의 개수를 셀 필요가 있을 경우 사용자가 원하는 조합의 열(혹은 행)의 레이블을 입력받는다.
normalize: bool
기본값은 False이다.
개수가 아니라 개수의 비율을 반환할지 여부를 결정한다.
sort: bool
기본값은 True이다
결과를 정렬할지 여부를 결정한다.
ascending: bool
기본값은 False이다.
오름 차순으로 정렬할지 여부를 결정한다.
Series.value_counts(normalize=False, sort=True, ascending=False, bins=None, dropna=True) |
normalize: bool
기본값은 False이다.
개수가 아니라 개수의 비율을 반환할지 여부를 결정한다.
sort: bool
기본값은 True이다
결과를 정렬할지 여부를 결정한다.
ascending: bool
기본값은 False이다.
오름 차순으로 정렬할지 여부를 결정한다.
bins: int
선택적으로 입력이 가능하다.
값을 세는것이 아니라, pd.cut의 편의를 위해 반 개방 빈(bin)으로 그룹화한다.
숫자형 데이터에서만 작동한다.
dropna: bool
기본값은 True이다.
NaN을 개수로 세지 않는지 여부를 결정한다.
|
|
|
| 참고자료 https://pandas.pydata.org/docs/user_guide/basics.html https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.value_counts.html |
|
|
|
|
'Python > Pandas' 카테고리의 다른 글
멀티인덱스(Multiindex)의 생성-pandas(41) (0) | 2020.11.04 |
---|---|
이산화를 위한(구간별 나누기) qcut, cut 함수-pandas(40) (0) | 2020.10.17 |
최대/최소값 인덱스(레이블) idxmin, idxmax 메서드-pandas(38) (0) | 2020.10.15 |
데이터 요약을 위한 describe() 메서드-pandas(37) (2) | 2020.10.12 |
pandas에서의 통계함수(메서드)-pandas(36) (0) | 2020.10.11 |
댓글