AIVLE School DX 3기
[에이블스쿨 4주차] 데이터 분석2
김보통김보름
2023. 2. 22. 02:41
728x90
반응형
🤔DX 컨설턴트가 가져야 할 질문
❓ 왜 이렇게 되는 거지?
❓ 가설이 진짜인가?
🔄복습
Business Understanding | Data Understanding | Data Preparation |
⭐무엇이 문제인가⭐ 1. 문제정의 2. 분석목표 3. 가설(x➡y) |
1. 원본 식별 2. 하나의 DataFrame 3. 분석 EDA & CDA x : feature y : target, label 행 : 분석단위 |
1. 모든 셀은 값이 있어야한다. => NaN조치(삭제, 채우기) 2. 값은 숫자여야 한다. 3. (옵션) 숫자의 범위 일치 |
대립가설 | 분석단위는 2차원만 있지 않다 | NaN 삭제 삭제해도 표본에 무의미할 때 행 삭제 : NaN이 적을 때 열 삭제 : NaN이 많을 때 |
EDA & CDA
'가설이 진짜인가?' 판단하기 위한 도구
- 단변량 분석 : 개별 변수의 분포
- 이번량 분석 1 : feature(x)와 target(y) 간의 관계(x → y 가설 확인)
- 이변량 분석 2 : feature들 간의 관계(x1, x2,...)
숫자형 변수
1. 숫자로 요약하기: 정보의 대푯값 → 기초 통계량
- 평균(mean)
- 중앙값(median)
- 최빈수(mode)
- 사분위수(Quantile)
2. 구간을 나누고 빈도수 계산 → 도수분포표(frequency table)
1️⃣숫자로 요약하기: 정보의 대푯값
▪ 평균(mean)
- 산술 평균
- (기하 평균, ⭐조화 평균)
▪ 중위수(median)
- 데이터의 순서상 가운데 위치한 값
▪ 최빈값(mode)
- 데이터 중에서 가장 빈번한 값
평균
# 넘파이 함수 이용하기
np.mean(df['coulmns'])
# 판다스의 mean 메소드 이용하기
df['coulmns'].mean()
함수와 메서드 차이 : 2023.02.25 - [Python] - 함수와 메서드의 차이점
⭐평균의 함정
평균은 집단을 대표하지 못한다.
중위수
# 넘파이 함수 이용하기
np.median(df['coulmns'])
# 판다스의 median 메소드 이용하기
df['coulmns'].median()
descibe() | 데이터 프레임의 숫자형 변수들에 대해서 기초 통계량 표시 |
descibe().T() | 전치행렬 |
describe(include='all') | 전체 변수들 기초통계량 조회 |
최빈값
# 판다스의 메소드 이용하기
df['coulmns'].mode()
2️⃣숫자형 변수 시각화하기
Histogram
😢단점
bin(구간)의 너비(개수)를 어떻게 잡는지에 따라 전혀 다른 모양이 될 수 있음
# matplotlib 코드
plt.hist(df['columns'], bins = 30, edgecolor = 'c') #bins 등분
plt.xlabel('columns')
plt.ylabel('~~')
plt.show()
# seborn 코드
sns.hisplot( x = 'columns', data = DataFrame, bins = 30)
plt.show()
해석 1 : 표를 보고 유출할 수 있는 내용
해석 2 : 도메인 지식을 이용해 표를 보고 유출해 내는 내용
# Histogram 여러개 그리기
# for루프
b = [8, 16, 32, 64]
plt.figure(figsize=(15, 10))
for i, v in enumerate(b) :
plt.subplot(2, 2, i+1)
sns.histplot(x = 'Age', data = titanic, bins = v)
plt.title(f'bins = {v}')
plt.show()
enumerate : 2023.02.26 - [Python] - [Python] enumerate
KDE Plot (커널 밀도 추청 그래프)
Histogram 그래프의 단점을 보완
막대의 너비를 가정하지 않고, 모든 점에서 데이터의 밀도를 추정
사용법 : sns.kdeplot(변수명)
# seaborn
sns.kdeplot(DataFrame['colums'])
plt.show()
# histogram과 kde plot 동시에 그리기
sns.histplot( x = 'columns', data =dataFrame, kde = True)
plt.show()
Boxplot
💥주의
NaN이 있으면 그래프가 그려지지 않음.
IQR : Q3 - Q1(1사분위 ~ 3사분위)
Lower fence : [min] vs [Q1 - 1.5 * IQR], 둘 중 큰 값
Upper fence : [max] vs [Q3 + 1.5 * IQR], 둘 중 작은 값
plt.boxplot(시리즈)
plt.grid()
plt.show()
# 가로로 그리기
plt.boxplot(시리즈, vert = False)
plt.grid()
plt.show()
3σ 이상이면 이상치
1.5 x IQR ≒ 3σ
가변수화 : 모델링을 위해 범주를 숫자로 바꿔주는 것
3️⃣범주형 변수 숫자로 요약하기
▪ 범주별 빈도수
- 시리즈.value_counts()
▪ 범주별 비율
- 범주별 빈도수를 전체 데이터 수(행 수)로 나누기
- Df.shape : 데이터프레임의 행, 열, 수를 반환
- 이 중 첫 번째 값[0]
범주별 빈도수
DataFrame['columns'].value_counts()
범주별 비율
DataFrame['columns'].value_counts() / DataFrame.shape[0]
✅요약
💙요약
기초통계량 | 그래프 | |
숫자 | min, max, mean, std, 사분위수 |
histogram kde plot box plot |
범주 | 범주별 빈도수 범주별 비율 |
bar sns.countplot |
728x90