-
[파이썬] pandas 데이터프레임 속성값 세는 두 가지 방법파이썬 배우기 2023. 11. 22. 14:47
하나의 열에서 고윳값에 대해 속성의 갯수를 파악하는 것은 데이터 분석에서 가장 기초가 되는 작업입니다.
어떤 값들을 가지고 있는지와, 몇 개씩 존재하는지 파악함으로써 데이터의 속성과 분포를 살펴볼 수 있기 때문입니다.
pandas 에서 어떻게 속성값을 세는지 두 가지 방법을 알려드리려합니다.
1. 데이터프레임의 내장함수인 value_counts()
2. collections 모듈의 Counter 클래스
우선 grade가 A, B, C, null 로 이루어진 16개의 길이의 데이터프레임을 만들겠습니다.
grade = list('ABCAABCBABCABBC ') df_score = pd.DataFrame({'grade':grade}) # value_counts()의 dropna 파라미터를 설명드리기 위해 널값을 일부로 추가하겠습니다! df_score = df_score.replace(' ', np.NaN) df_score len(df_score)
1. value_counts()
데이터프레임 자체 내장된 함수라 라이브러리를 불러오지 않아도 되지만, dropna =True 가 기본으로 설정되어 있어서 결측값이 있다면 이것을 제외하게 됩니다. 그래서 결측값의 갯수도 출력하고 싶으면, dropna =False 로 고치구, 카운트 값이 내림차순이 디폴트이지만, ascending = True 로 오름차순 정렬도 할 수 있습니다. 그리고 이 결과값이 타입은 Series 입니다.
df_score.value_counts() # Result grade B 6 A 5 C 4
결측값도 포함하고, 값을 오름차순 하고 싶을 때!
df_score.value_counts(dropna=False, ascending=True) # 결측값도 속성값에 포함하고, 카운트한 것을 오름차순 정렬 grade NaN 1 C 4 A 5 B 6
인덱스를 기준으로 정렬하고 싶을 때!
df_score.value_counts(dropna=False).sort_index() # 인덱스를 기준으로 정렬하고 싶을 때 grade A 5 B 6 C 4 NaN 1
2. Counter
Counter 한 번이면 속성값별로 손쉽게 갯수를 카운트할 수 있습니다. 카운트 값에 따라 내림차순 정렬되며, 결과값은 dict 으로 리턴이 되어서 필요시 타입을 바꿔야합니다.
from collections import Counter counted = Counter(df_score['grade']) print(counted) print(counted.keys()) print(counted.values()) # Result Counter({'B': 6, 'A': 5, 'C': 4, nan: 1}) dict_keys(['A', 'B', 'C', nan]) dict_values([5, 6, 4, 1])
dict으로 나온 값을 value_counts() 와 같은 Series 로 바꾸고 싶으면
pd.Series(data=counted.values(), index=counted.keys()) # Result A 5 B 6 C 4 NaN 1
카운트 값에 따라 Series를 정렬하고 싶으면,
pd.Series(data=counted.values(), index=counted.keys()).sort_values(ascending = False) # Result B 6 A 5 C 4 NaN 1
'파이썬 배우기' 카테고리의 다른 글
[파이썬] 결측값 처리하는 6가지 방법 (fillna, SimpleImputer) (0) 2023.11.22 [파이썬] pandas 데이터프레임 속성값 바꾸기 (apply, replace) (1) 2023.11.22 [파이썬] matplotlib 맥 윈도우 한글 깨짐 인코딩 처리하기 (1) 2023.11.21 [파이썬] matplotlib으로 다중 꺾은선 그래프 그리기 (1) 2023.11.21 [파이썬] 데이터프레임 합치는 3가지 방법 (1) 2023.11.21