본문 바로가기
Python/Pandas

중복 요소 수 세기(히스토그래밍) value_counts 메서드-pandas(39)

by 콩돌 2020. 10. 16.
반응형

파이썬 버전 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

 

 

 

 

 

 

반응형

댓글