PROGRESS
8 / 12
단원
넘파이(NumPy) 기초 13
데이터프레임 생성과 편집 9
데이터 탐색과 필터링 12
데이터 집계와 통계 13
데이터 시각화(matplotlib) 10
파일 입출력(CSV, Excel, JSON) 10
전체 목록
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['성격'].())
HINT
힌트: 1번은 '유일한'을 뜻하는 단어 unique이며, 2번은 '값(value)들의 개수(counts)'를 합친 이름 value_counts입니다.
실행 결과 예시
동네 강아지 성격: ['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()는 "각각 몇 개지?"를 확인할 때 사용합니다.