본문 바로가기

카테고리 없음

Python : Pandas 기본 - DataFrame #3 Describe()

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) 특정 데이터 유형 포함

 

includeexclude 옵션을 사용해 특정 데이터 유형만 선택할 수 있습니다.

  •  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'을 사용하여 누락된 정보가 없는지 확인하세요.
  •  수치형 데이터의 분포를 이해한 후, 추가적인 시각화(히스토그램, 상자 그림 등)를 활용해 분석을 심화하세요.