데이터 분석 과정에서 데이터를 이해하고 통찰을 얻기 위한 초기 분석 단계
① 데이터의 기본 특성 이해: 불러오기 및 기본 정보 확인(데이터셋 크기, 데이터 유형 등)
import pandas as pd
df = pd.read_csv('data.csv')
print(df.head()) # 상위 데이터 5행 확인
print(df.info()) # 데이터 타입과 결측치 확인
print(df.describe()) # 수치형 데이터의 요약 통계량
② 결측 값과 이상치 확인
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.read_csv('data.csv')
print(df.isnull().sum()) # 결측값 확인
sns.boxplot(x=df['column_name']) # 이상치 시각화
plt.show()
③ 데이터 분포 확인: 데이터가 정규 분포를 따르는지 확인
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('data.csv')
df['column_name'].hist(bins=30)
plt.show()
④ 변수 간 관계 탐색: 두 변수 사이 상관관계를 확인하거나 그룹별 통계량을 계산
⑤ 시각화: 데이터를 직관적으로 이해할 수 있게 도와줌
① 중심 경향성: 데이터의 대표 값을 나타냄
② 산포도: 데이터가 얼마나 흩어져 있는지 측정
③ 데이터 분포 특성: 데이터 분포의 모양과 특성을 이해
① 데이터 준비
pip install scipy
② 주요 통계량 계산
import pandas as pd
data = {
'scores': [85, 90, 78, 92, 88, 76, 95, 89, 77, 85]
}
df = pd.DataFrame(data)
mean = df['scores].mean() # 평균
median = df['scores].median() # 중앙값
mode = df['scores].mode()[0] # 최빈값
variance = df['scores].var() # 분산
std_dev = df['scores].std() # 표준편차
range_value = df['scores].max() - df['scores].min() # 범위
③ 데이터 분포 특성 계산
import pandas as pd
from scipy.stats import skew, kurtosis
skewness = skew(df['scores']) # 왜도
kurt = kurtosis(df['scores']) # 첨도
① 데이터셋의 크기: 몇개의 행(row)과 열(column)로 구성되어 있는지 확인
② 데이터 타입: 각 열의 데이터 유형을 이해 -> 유형은 분석 방법에 영향을 미침
③ 변수의 이름과 의미: 데이터셋에 포함된 변수(컬럼)의 이름과 그 의미를 파악
④ 결측값: 데이터셋에 비어 있는 값이 있는지 확인
ㄴ> 분석 결과에 영향을 미칠 수 있으므로 반드시 처리해야 함
⑤ 데이터 분포: 변수의 분포를 파악하여 데이터가 어떻게 구성되어 있는지 이해
⑥ 중복값: 동일한 행이 여러 번 반복되는지 확인
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Emma'],
'Age': [25, 30, None, 35, 29],
'Salary': [50000, 60000, 75000, 80000, None],
'Department': ['HR', 'IT', 'Finance', 'IT', 'HR']
}
# ① 데이터 준비
df = pd.DataFrame(data)
# ② 데이터셋의 크기 확인
print(df.shape())
# ③ 데이터 타입 및 결측값 확인
print(df.info())
# ④ 통계적 요약
print(df.describe())
# ⑤ 결측값 확인
print(df.isnull().sum())
# ⑥ 데이터 타입 확인
print(df.dtypes)
# ⑦ 중복값 확인
print(df.describe().sum())
데이터를 특정 기준으로 묶은 후(그룹화) 각 그룹에 대해 다양한 연산 수행
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
'Department': ['HR', 'IT', 'HR', 'IT', 'Finance'],
'Salary': [50000, 60000, 55000, 70000, 65000]
}
df = pd.DataFrame(data)
grouped = df.groupby('Department')['Salary'].mean()
데이터를 행(row)과 열(col)로 재구성하여 원하는 방식으로 요약하는 테이블
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
'Department': ['HR', 'IT', 'HR', 'IT', 'Finance'],
'Salary': [50000, 60000, 55000, 70000, 65000]
}
df = pd.DataFrame(data)
pivot_table = pd.pivot_table(df, values='Salary', index='Department', aggfunc='mean')
두 개 이상의 데이터 집합을 비교하여 차이점, 유사점, 상관관계 등을 분석하는 작업
① 기술 통계 비교: 각 데이터셋의 기본 통계를 계산(평균값, 최대값, 중간값 등)하여 비교
import pandas as pd
data1 = {'sales': [100, 200, 150, 300]}
data2 = {'sales': [120, 220, 180, 260]}
df1 = pd.DataFrame(data1, columns=['sales'])
df2 = pd.DataFrame(data1, columns=['sales'])
print(df1.describe())
print(df2.describe())
② 시각화 비교: 데이터를 그래프로 표현하여 직관적으로 비교
import pandas as pd
import matplotlib.pyplot as plt
x = ['Q1', 'Q2', 'Q3', 'Q4']
y1 = [100, 200, 150, 300]
y2 = [120, 220, 180, 260]
plt.plot(x, y1, label='Dataset 1', marker='o')
plt.plot(x, y2, label='Dataset 2', marker='o')
plt.title('Quarterly Sales Comparison')
plt.xlabel('Quarter')
plt.ylabel('Sales')
plt.legend()
plt.show()
③ 상관 관계 분석: 두 데이터셋이 서로 어떤 관계를 갖고 있는지 분석
import numpy as np
dataset1 = [100, 200, 150, 300]
dataset2 = [120, 220, 180, 260]
difference = [b - a for a, b in zip(dataset1, dataset2)]
④ 차이 분석: 두 데이터 집합 간 차이를 계산하여 변화량 분석
import numpy as np
dataset1 = [100, 200, 150, 300]
dataset2 = [120, 220, 180, 260]
correlation = np.corrcoef(dataset1, dataset2)[0, 1]
⑤ 피벗 테이블을 사용한 비교: 여러 기준에서 데이터 비교 시 유용
import pandas as pd
data = {
'Region': ['East', 'East', 'West', 'West', 'East'],
'Year': [2021, 2022, 2021, 2022, 2021],
'Sales': [500, 700, 200, 300, 600]
}
df = pd.DataFrame(data)
pivot = pd.pivot_table(df, values='Sales', index='Region', columns='Year', aggfunc='sum')
두 변수 간의 선형 관계의 강도와 방향을 나타내는 값
여러 변수 간의 상관계수를 표 형태로 보여줌
하나의 독립 변수(x)와 종속 변수(y) 사이의 관계를 모델링하여, x를 이용해 y를 예측하는 방법
𝑌 = 𝑎𝑋 + 𝑏
두 변수나 여러 변수 간의 상관성이나 영향력을 이해하고, 한 변수가 다른 변수에 어떤 영향을 미치는지 분석하는 과정