비즈니스 문제 해결 방법론
비즈니스 이해 (Business Understanding)
: 프로젝트의 목적과 요구사항을 비즈니스 관점에서 이해하는 단계. 데이터 분석의 목표를 설정하고 초기 계획을 수립
데이터 이해 (Data Understanding)
: 분석에 필요한 데이터를 수집, 데이터의 문제점과 숨겨진 인사이트를 발견
데이터 준비 (Data Preparation)
: 분석에 적합한 데이터셋을 준비하는 단계로, 데이터 정제, 통합, 변환 등의 작업이 포함
모델링 (Modeling)
: 다양한 모델링 기법을 적용하여 데이터를 분석. 모델의 성능을 평가하고 최적화
평가 (Evaluation)
: 모델링 결과가 비즈니스 목표에 부합하는지 평가. 분석 결과를 검토하고, 모델의 적용 가능성을 판단
전개 (Deployment)
: 완성된 모델을 실제 업무에 적용. 이를 통해 모델의 성능을 모니터링하고 유지보수 계획을 수립
< 데이터 탐색 2가지 방법 >
< 데이터 탐색 순서 >
1. 단변량 분석 : 개별 변수의 분포 ex) 탑승객의 나이 분석
2. 이변량 분석1 : feature와 target 간의 관계 (가설을 확인하는 단계)
ex) 객실등급 -> 생존여부 (객실등급에 따라 생존 여부에 차이가 있나?)
3. 이변량 분석2 : feature들 간의 관계
import pandas as pd
import numpy as np
# 시각화 라이브러리
import matplotlib.pyplot as plt
import seaborn as sns
path = 'https://raw.githubusercontent.com/DA4BAM/dataset/master/airquality_simple2.csv'
data = pd.read_csv(path)
data['Date'] = pd.to_datetime(data['Date'])
data.dropna(axis = 0, inplace = True)
data.head()
참고 : df.dropna(axis=,inplace=,how=)
- 결측치 레이블 삭제
# 차트 그리기
plt.plot(data['Temp'])
# 화면에 보여주기
plt.show()
# 타입1
plt.plot(data['Date'], data['Temp'])
plt.show()
# 타입2
plt.plot('Date', 'Temp', data = data)
plt.show()
plt.plot(data['Date'], data['Ozone'])
plt.xticks(rotation = 30) # x축 값 꾸미기 : 방향을 30도 틀어서
plt.xlabel('Date') # x축 이름 지정
plt.ylabel('Ozone') # y축 이름 지정
plt.title('Daily Airquality') # 타이틀
plt.show()
marker | description |
---|---|
"." | point |
"," | pixel |
"o" | circle |
"v" | triangle_down |
"^" | triangle_up |
"<" | triangle_left |
">" | triangle_right |
plt.plot(data['Date'], data['Ozone']
,color='green' # 칼러
, linestyle='dotted' # 라인스타일
, marker='o') # 값 마커(모양)
plt.xlabel('Date')
plt.ylabel('Ozone')
plt.title('Daily Airquality')
plt.xticks(rotation=45)
plt.show()
# 첫번째 그래프
plt.plot(data['Date'], data['Ozone'], color='green', linestyle='dotted', marker='o')
# 두번째 그래프
plt.plot(data['Date'], data['Temp'], color='r', linestyle='-', marker='s')
plt.xlabel('Date')
plt.ylabel('Ozone')
plt.title('Daily Airquality')
plt.xticks(rotation=45)
# 위 그래프와 설정 한꺼번에 보여주기
plt.show()
plt.plot(data['Date'], data['Ozone'], label = 'Ozone') # label = : 범례추가를 위한 레이블값
plt.plot(data['Date'], data['Temp'], label = 'Temp')
plt.legend(loc = 'upper right') # 레이블 표시하기. loc = : 위치
plt.grid()
plt.show()
plt.figure(figsize = (12,8))
plt.subplot(3,1,1) # 틀
plt.plot('Date', 'Temp', data = data) #그래프
plt.grid()
plt.subplot(3,1,2) #틀
plt.plot('Date', 'Wind', data = data)
plt.subplot(3,1,3)
plt.plot('Date', 'Ozone', data = data) #그래프
plt.grid()
plt.ylabel('Ozone')
plt.tight_layout() # 그래프간 간격을 적절히 맞추기
plt.show()
기초통계량
- 숫자 몇 개로 분포를 요약
df.describe()
- count : 데이터 개수.
- Age의 개수가 다른 변수에 비해 적은 것은 NaN이 존재하기 때문
- 사분위수
- 25% : 1사분위수
- 50% : 2사분위수
- 75% : 3사분위수
plt.his(변수명,bins=구간 수)
plt.hist(titanic.Fare, bins = 5, edgecolor = 'gray')
plt.xlabel('Fare')
plt.ylabel('Frequency')
plt.show()
주의 !
히스토그램을 그릴 때, 주의 할 점 : bins를 적절히 조절
- 구간의 개수에 따라서 파악할 수 있는 내용이 달라짐.
sns.histplot(x=,data=,bins=)
(간편~👍👍)sns.histplot(x= 'Fare', data = titanic, bins = 20)
plt.show()
sns.kdeplot(x=,data=)
#sns.kdeplot(titanic['Fare'])
sns.kdeplot(x='Fare', data = titanic)
plt.show()
히스토그램과 밀도함수 그래프 동시에 나타내기
- sns.histplot(x=,data=,bins=,kde=True)
plt.boxplot( 변수, vert = )
# titanic['Age']에는 NaN이 있습니다. 이를 제외한 데이터
temp = titanic.loc[titanic['Age'].notnull()]
plt.boxplot(temp['Age'])
plt.grid()
plt.show()
sns.boxplot(x or y = )
sns.boxplot(x = titanic['Age']) #seaborn 패키지 함수들은 NaN을 알아서 빼줍니다.
plt.grid()
plt.show()
범주별 개수를 세면 됨~
시리즈.value_counts()
: 범주별 빈도수시리즈.value_counts(normalize = True)
: 범주별 비율sns.countplot(x = 'Pclass', data = titanic)
plt.grid()
plt.show()