df.describe()는 pandas에서 제공하는 메서드로, DataFrame의 수치형 데이터에 대한 기초적인 통계 요약을 출력합니다. 이를 통해 데이터의 분포를 이해하고 데이터 분석의 첫걸음을 빠르게 시작할 수 있습니다.
1. df.describe()의 기본 기능
출력 내용:
- count: 각 열에서 결측값이 아닌 데이터의 개수.
- mean: 각 열의 평균값.
- std: 각 열의 표준 편차.
- min: 각 열의 최소값.
- 25%: 1사분위수 (데이터의 하위 25%가 속하는 값).
- 50%: 중앙값 (데이터의 중간값, 2사분위수).
- 75%: 3사분위수 (데이터의 상위 25% 경계값).
- max: 각 열의 최대값.
기본 사용법:
import pandas as pd
# 예제 데이터 생성
data = {
'Age': [25, 30, 35, 40, 28],
'Salary': [50000, 60000, 70000, 80000, 58000]
}
df = pd.DataFrame(data)
# describe 사용
print(df.describe())
#출력결과
Age Salary
count 5.000000 5.000000
mean 31.600000 63600.000000
std 6.185353 11505.763834
min 25.000000 50000.000000
25% 28.000000 58000.000000
50% 30.000000 60000.000000
75% 35.000000 70000.000000
max 40.000000 80000.000000
2. describe()의 옵션들
(1) 전체 열 포함
기본적으로 describe()는 수치형 데이터에만 작동합니다. 문자열이나 카테고리형 데이터를 포함하려면 include 매개변수를 설정해야 합니다.
# 문자열 데이터 포함
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
'Age': [25, 30, 35, 40, 28],
'City': ['NY', 'SF', 'LA', 'NY', 'LA']
})
print(df.describe(include='all'))
#출력결과
Name Age City
count 5 5.000000 5
unique 5 NaN 3
top Alice NaN LA
freq 1 NaN 2
mean NaN 31.600000 NaN
std NaN 6.185353 NaN
min NaN 25.000000 NaN
25% NaN 28.000000 NaN
50% NaN 30.000000 NaN
75% NaN 35.000000 NaN
max NaN 40.000000 NaN
- unique: 고유값의 개수.
- top: 가장 자주 등장하는 값.
- freq: 가장 자주 등장하는 값의 빈도.
(2) 특정 데이터 유형 포함
include와 exclude 옵션을 사용해 특정 데이터 유형만 선택할 수 있습니다.
- include='number': 수치형 데이터만.
- include='object': 문자열 데이터만.
- include='category': 범주형 데이터만.
# 문자열 데이터만 분석
print(df.describe(include='object'))
(3) 특정 열에 대해서만 요약
DataFrame에서 특정 열만 선택 후 describe()를 호출할 수도 있습니다.
print(df['Age'].describe())
#출력결과
count 5.000000
mean 31.600000
std 6.185353
min 25.000000
25% 28.000000
50% 30.000000
75% 35.000000
max 40.000000
Name: Age, dtype: float64
(4) mean 이나 max등 특정 항목만 보고 싶은 경우
describe()의 반환값은 DataFrame이므로, 반환된 결과에서 mean 값을 선택할 수 있습니다.
# 평균값만 출력
mean_values = df.describe().loc['mean']
print(mean_values)
#출력
Age 31.6
Salary 63600.0
Name: mean, dtype: float64
3. describe()를 활용한 데이터 분석
(1) 데이터의 분포 파악
- mean과 50%(중앙값)를 비교하여 데이터의 분포를 확인할 수 있습니다.
- 두 값이 크게 차이 난다면 비대칭 분포일 가능성이 있습니다.
- 사분위수(25%, 75%)를 통해 데이터의 변동성을 확인할 수 있습니다.
(2) 이상값 탐지
- min과 max 값이 의외로 크거나 작다면, 이상값(Outlier)을 의심해볼 수 있습니다.
- std(표준 편차)가 큰 경우, 데이터가 분산되어 있다는 것을 나타냅니다.
(3) 결측값 탐지
count가 전체 행의 수보다 적다면 해당 열에 **결측값(NaN)**이 있다는 의미입니다.
4. 결론
df.describe()는 데이터를 빠르게 요약하고 데이터의 분포를 이해하는 데 유용한 도구입니다. 데이터 분석 초기에 사용하면 데이터 품질을 평가하고, 이상값을 탐지하며, 분석 방향을 설정하는 데 큰 도움을 줍니다.
실무 팁:
- 문자열 데이터가 포함된 경우 반드시 include='all'을 사용하여 누락된 정보가 없는지 확인하세요.
- 수치형 데이터의 분포를 이해한 후, 추가적인 시각화(히스토그램, 상자 그림 등)를 활용해 분석을 심화하세요.