강아지 MBTI 알아보기

30 P
QUESTION 08 #295
강아지들의 성격 데이터에서 중복을 제외한 성격 종류를 확인하고, 각 성격별로 몇 마리씩 있는지 알아보는 프로그램입니다. 빈칸을 채워보세요.
main.py
import pandas as pd

# 강아지 이름과 MBTI 데이터
data = {
    '이름': ['초코', '보리', '해피', '두부', '뭉치', '럭키', '감자'],
    '성격': ['ENFP', 'ISTJ', 'ENFP', 'ISFP', 'ENFP', 'ISTJ', 'ESFP']
}
df = pd.DataFrame(data)

# 어떤 성격들이 있는지 종류 확인
print("동네 강아지 성격:", df['성격'].())

# 가장 많은 성격 순위 매기기
print("\n성격별 강아지 수:")
print(df['성격'].())
실행 결과 예시
동네 강아지 성격: ['ENFP' 'ISTJ' 'ISFP' 'ESFP']

성격별 강아지 수:
ENFP    3
ISTJ    2
ISFP    1
ESFP    1
Name: 성격, dtype: int64
INTERACTIVE SHELL Shift + Enter 로 즉시 실행

unique()와 value_counts()

데이터를 탐색할 때 어떤 값들이 있는지, 각각 몇 개인지 확인하는 것은 매우 중요합니다.

unique() - 고유값 확인

df['성격'].unique()
→ ['ENFP', 'ISTJ', 'ISFP', 'ESFP']

중복을 제거하고 어떤 종류의 값들이 있는지 보여줍니다.

value_counts() - 값별 개수 세기

df['성격'].value_counts()
→ ENFP    3
   ISTJ    2
   ISFP    1
   ESFP    1

각 값이 몇 번 등장하는지 세어주고, 많은 순서대로 정렬합니다.

동작 과정

원본 데이터:
이름    성격
초코    ENFP  ─┐
보리    ISTJ  ─┼─ unique: 4종류
해피    ENFP  │   value_counts:
두부    ISFP  ─┤   ENFP=3, ISTJ=2
뭉치    ENFP  │   ISFP=1, ESFP=1
뭉키    ISTJ  ─┤
강아    ESFP  ─┘

unique() vs value_counts() 비교

함수 반환값 용도
unique() 고유값 배열 어떤 종류가 있는지
value_counts() 값별 개수 각각 몇 개인지
nunique() 고유값의 종류가 총 몇 가지인지

실전 활용

# 어떤 종류가 있는지 확인
print(df['성격'].unique())      # ['ENFP', 'ISTJ', ...]

# 몇 종류인지 확인
print(df['성격'].nunique())     # 4

# 각각 몇 개인지 확인
print(df['성격'].value_counts())

# 비율로 확인
print(df['성격'].value_counts(normalize=True))
# ENFP    0.428571  (약 43%)
# ISTJ    0.285714  (약 29%)
# ...

💡 핵심: unique()는 "뭐가 있지?", value_counts()는 "각각 몇 개지?"를 확인할 때 사용합니다.