2025. 3. 20. 12:42ㆍ데이터 분석/데이터 사이언스
4.1 데이터 구조 및 기본 통계 분석
데이터 분석의 첫 번째 단계는 데이터의 구조를 이해하고 기본적인 통계 정보를 확인하는 것이다.
이 과정에서는 데이터의 분포를 파악하고, 이상치(Outlier)나 결측치(Missing Value)를 확인할 수 있다.
이 장에서는 Pandas의 기본 함수(describe(), info(), value_counts())를 활용하여 데이터를 탐색하고, 데이터 분포를 시각적으로 분석하는 방법(Histogram, Boxplot)을 다룬다.
4.1.1 데이터 구조 확인 (describe(), info())
데이터를 이해하기 위해 가장 먼저 확인해야 할 것은 데이터프레임의 구조(컬럼, 데이터 타입, 결측치, 통계값 등)이다.
Pandas의 describe()와 info() 메서드를 활용하면 이를 쉽게 확인할 수 있다.
① df.info() - 데이터 구조 및 결측치 확인
import pandas as pd
# 샘플 데이터 생성
data = {
"Name": ["Alice", "Bob", "Charlie", "David", "Emma"],
"Age": [25, 30, 35, 40, None],
"Score": [85, 90, 88, 92, 87]
}
df = pd.DataFrame(data)
# 데이터 구조 확인
print(df.info())
✅ 출력 결과 예시
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Name 5 non-null object
1 Age 4 non-null float64
2 Score 5 non-null int64
dtypes: float64(1), int64(1), object(1)
- Non-Null Count → 결측치 여부 확인 가능 (Age 컬럼에 결측치 존재)
- Dtype → 데이터 타입 확인 (object, int64, float64)
② df.describe() - 기본 통계 정보 확인
print(df.describe())
✅ 출력 결과 예시
Age Score
count 4.000000 5.000000
mean 32.500000 88.400000
std 6.454972 2.702702
min 25.000000 85.000000
25% 28.750000 87.000000
50% 32.500000 88.000000
75% 36.250000 90.000000
max 40.000000 92.000000
- count → 데이터 개수
- mean → 평균값
- std → 표준편차 (데이터의 변동성)
- min, max → 최솟값, 최댓값
- 25%, 50%, 75% → 사분위수
4.1.2 범주형 데이터 개수 확인 (value_counts())
범주형 데이터의 분포를 확인하려면 value_counts()를 사용하면 된다.
이 함수는 특정 컬럼에서 각 고유값의 개수를 계산해준다.
# 범주형 데이터 샘플 생성
df["Category"] = ["A", "B", "A", "C", "B"]
# value_counts() 사용
print(df["Category"].value_counts())
✅ 출력 결과
A 2
B 2
C 1
Name: Category, dtype: int64
- 카테고리 A와 B가 각각 2개, C가 1개 존재
✅ 비율(%)로 확인
print(df["Category"].value_counts(normalize=True) * 100)
A 40.0
B 40.0
C 20.0
Name: Category, dtype: float64
- 각 카테고리의 비율을 백분율(%)로 출력 가능
4.1.3 데이터 분포 확인 (Histogram, Boxplot)
데이터의 분포를 이해하는 것은 이상치(Outlier) 탐색 및 데이터의 변동성 분석에 매우 중요하다.
가장 많이 사용되는 방법은 히스토그램(Histogram)과 박스플롯(Boxplot)이다.
① 히스토그램 (Histogram)
히스토그램은 데이터를 구간별로 나누어 개수를 시각적으로 표현하는 그래프이다.
이를 통해 데이터의 분포 형태(정규 분포, 치우친 분포 등)를 파악할 수 있다.
import matplotlib.pyplot as plt
import seaborn as sns
# 히스토그램 시각화
plt.figure(figsize=(6,4))
sns.histplot(df["Score"], bins=5, kde=True, color="blue") # kde=True: 커널 밀도 추정
plt.xlabel("Score")
plt.ylabel("Count")
plt.title("Histogram of Scores")
plt.show()
✅ 히스토그램 해석
- X축: 데이터 값의 범위
- Y축: 각 구간에 해당하는 데이터 개수
- kde=True 옵션을 사용하면 데이터 밀도를 부드럽게 나타내는 곡선이 추가됨
② 박스플롯 (Boxplot)
박스플롯은 데이터의 최소값, 최대값, 중앙값(50%), 사분위수(25%, 75%)를 시각적으로 표현하는 그래프이다.
이상치(Outlier)도 함께 확인할 수 있다.
plt.figure(figsize=(4,5))
sns.boxplot(y=df["Score"], color="orange")
plt.ylabel("Score")
plt.title("Boxplot of Scores")
plt.show()
✅ 박스플롯 해석
- 박스 내부: 1사분위수(Q1) ~ 3사분위수(Q3)
- 가운데 선: 중앙값(50%)
- 수염(whiskers): 데이터의 최소값, 최대값
- 박스 외부 점: 이상치(Outlier)
4.1.4 데이터 탐색 및 분석 방법 비교
분석 방법 | 설명 | 사용 예시 |
info() | 데이터 구조, 결측치 확인 | 데이터 타입, 개수 확인 |
describe() | 기본 통계값 확인 | 평균, 표준편차, 사분위수 |
value_counts() | 범주형 데이터 개수 확인 | 카테고리별 빈도수 |
Histogram | 데이터 분포 확인 | 연속형 데이터의 패턴 탐색 |
Boxplot | 이상치 탐색 및 변동성 확인 | 데이터의 중앙값과 이상치 탐색 |
결론
데이터 분석을 시작할 때 데이터의 구조를 파악하고, 분포를 시각적으로 확인하는 과정이 필수적이다.
- info(), describe(), value_counts() → 데이터의 기본 정보 및 통계값 확인
- 히스토그램(Histogram) → 데이터의 분포 형태 분석
- 박스플롯(Boxplot) → 이상치 및 변동성 확인
이러한 기법을 활용하면 데이터의 특성을 정확하게 이해할 수 있으며, 데이터 전처리 및 머신러닝 모델링에 필요한 인사이트를 얻을 수 있다.
'데이터 분석 > 데이터 사이언스' 카테고리의 다른 글
데이터 사이언스 - 4. 탐색적 데이터 분석 (EDA) (4.3 상관관계 분석) (0) | 2025.03.20 |
---|---|
데이터 사이언스 - 4. 탐색적 데이터 분석 (EDA) (4.2 데이터 시각화) (0) | 2025.03.20 |
데이터 사이언스 - 3. 데이터 핸들링과 전처리 (3.5 범주형 데이터 인코딩) (0) | 2025.03.20 |
데이터 사이언스 - 3. 데이터 핸들링과 전처리 (3.4 데이터 정규화 및 변환) (0) | 2025.03.20 |
데이터 사이언스 - 3. 데이터 핸들링과 전처리 (3.3 이상치 탐색 및 처리) (0) | 2025.03.20 |