안녕하세요 '코딩 오페라'블로그를 운영하고 있는 저는 'Master.M'입니다.
현재 '초등학생도 이해하는 빅데이터분석기사 실기'라는 주제로 판다스(pandas)를 이용한 데이터 마이닝에 대해 포스팅을 진행하고 있습니다. 제목처럼 진짜 핵심 내용을 쉽게 설명하는 것을 목표로 하고 있으니 데이터 마이닝에 입문하고 싶은 분들은 많은 관심 부탁드립니다. 오늘 알아볼 내용은 '판다스 카테고리별 데이터 종류 및 개수세기'입니다.
만약 우리가 창고별 판매량 데이터를 가지고 있다고 했을 때 어떻게 하면 이를 효과적으로 다룰 수 있을까요? 여러 가지 방법이 있겠지만, 가장 간단한 방법은 우선 각 창고들이 몇 개 존재하는지를 아는 것입니다.
예를 들이 창고가 A, B, C 이렇게 3개가 있고, 각 창고의 데이터수가 490, 490, 20개라면 A, B 창고 데이터에 비해 C 창고 데이터가 상대적으로 부족하므로, 이 부분에 대한 조치가 필요합니다. 때문에 데이터 분석 시, 이렇게 데이터의 종류 및 판단을 하기 위해 카테고리별 데이터 개수를 세는 것이 필수적입니다.
그러면 카테고리별 데이터수를 어떻게 셀 수 있을까요? 일일이 셀까요? 아니면 직접 함수를 만들어서 셀까요?
다행히 우리의 무적 판다스 라이브러리는 이미 이를 해결할 함수가 내장되어 있습니다. 오늘 소개해 드릴 함수는 unique(), value_counts(), 그리고 nunique()입니다.
import pandas as pd
X_train = pd.read_csv('X_train.csv')
X_test = pd.read_csv('X_test.csv')
y_train = pd.read_csv('y_train.csv')
y_test = pd.read_csv('y_test.csv')
각 함수를 소개하기 전, 위 예시 'X_train.csv', 'X_test.csv' , 'y_train.csv' , 'y_test.csv' 파일을 다운로드 받고, 다음과 같이 pandas의 'read_csv'함수를 이용해 csv파일을 불러와줍니다. 참고로 이 부분에 대해 자세히 알고 싶으신 분들이 아래 포스트를 참고하시기 바랍니다.
https://codingopera.tistory.com/11
데이터를 모두 불러왔으면, 이제 본격적으로 오늘의 주제를 시작하도록 하겠습니다.
unique()
unique() 함수는 데이터 카테고리에 어떤 종류의 데이터가 있는지 알려주는 함수입니다.
예를 들어 창고 카테고리의 데이터가 A, B, C, A, C 이렇게 구성되어 있으면, 창고 카테고리의 데이터 종류가 A, B, C로 이루어져 있다고 알려주는 것입니다.
X_train.head()
위 코드를 실행하면, X_train의 data frame을 볼 수 있습니다. 해당 data frame은 다양한 카테고리로 구성되어 있지만, 오늘은 Warehouse_block에 초점을 맞추어 설명하도록 하겠습니다.
print(X_train['Warehouse_block'].unique())
array(['B', 'F', 'C', 'A', 'D'], dtype=object)
위 코드는 X_train의 Warehouse_block 카테고리의 데이터 종류를 unique() 함수를 사용해 구하는 것입니다. 결과 아래와 같이 Warehouse_block 카테고리가 'B', 'F', 'C', 'A', 'D' 이렇게 5개 종류로 이루어진 것을 확인할 수 있습니다.
value_counts()
다음으로 value_counts() 함수는 카테고리의 데이터 종류별 개수를 보여줍니다. 예를 들어 창고 카테고리의 데이터가 A, B, C, A, C 이렇게 구성되어 있으면, 데이터 A는 2개, B는 1개, C는 2개로 이루어져 있다고 알려주는 것입니다.
X_train['Warehouse_block'].value_counts()
F 2941
A 1489
B 1465
C 1458
D 1446
Name: Warehouse_block, dtype: int64
위 코드는 X_train의 Warehouse_block 카테고리의 데이터 종류별 개수를 value_counts () 함수를 사용해 구하는 것입니다. 결과 아래와 같이 Warehouse_block 카테고리가 'F' 2941개, 'A' 1489개, 'B' 1465개, 'C' 1458개, 'D' 1446개로 이루어진 것을 확인할 수 있습니다.
nunique()
다음으로 nunique() 함수는 각 카테고리별 얼마큼의 데이터 종류가 존재하는가를 보여줍니다. 얼핏 보면 value_counts() 함수와 똑같아 보입니다. 그러나 value_counts() 함수는 하나의 카테고리의 데이터 종류별 개수를 파악하는 것이고, nunique() 함수는 전체 데이터의 카테고리별 종류수를 알려줍니다.
X_train[['Warehouse_block', 'Mode_of_Shipment', 'Product_importance', 'Gender']].nunique()
Warehouse_block 5
Mode_of_Shipment 3
Product_importance 3
Gender 2
dtype: int64
예를 들어 위의 X_train data frame에서 'Warehouse_block', 'Mode_of_Shipment', 'Product_importance', 'Gender' 카테고리들의 카테고리별 데이터 종류수를 알고 싶으면, nunique() 함수를 통해 구할 수 있습니다. 이는 위에서 언급한 단일 카테고리 'Warehouse_block'을 다루는 value_counts() 와는 다름을 알 수 있습니다.
지금 까지 저희는 '판다스(pandas) data frame 카테고리별 데이터 종류 및 개수세기'에 대해 알아보았습니다. 도움이 되셨나요? 만약 되셨다면 구독 및 좋아요로 표현해 주시면 정말 많은 힘이 됩니다. 궁금한 사항 혹은 앞으로 다루어 주었으면 좋을 주제가 있으시면 댓글 남겨주시면 감사하겠습니다. 저는 '코딩 오페라'의 'Master.M'이었습니다. 감사합니다.