강사님께서 오늘도 어김 없이 CRISP-DM에 대해서 설명하며 강의를 시작하였다.

갑자기 생각 난 강사님 말씀
CRISP-DM 단계를 빠르게 두 번은 과정대로 돌면, 볼 수 없던 부분도 보이고 완성도가 높은 프로젝트가 될 수 있다.
(나중에 프로젝트때 기억하자)
데이터를 한 눈에 파악하는 방법
데이터 시각화의 한계점

데이터를 불러왔다.
이제 이 데이터프레임을 통해 차트를 그려 보겠다.
plt.plot(data['Date'], data['Temp'])
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.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.figure(figsize = (8,4))
plt.subplot(3,1,1)
plt.plot('Date', 'Temp', data = data, marker = 'o', color ='r')
plt.grid()
plt.subplot(3,1,2)
plt.plot('Date', 'Wind', data = data, color = 'b')
plt.subplot(3,1,3)
plt.plot('Date', 'Ozone', data = data)
plt.grid()
plt.ylabel('Ozone')
plt.tight_layout() # 그래프간 간격을 적절히 맞추기
plt.show()


이 그림은 각 데이터 마다(수치형, 범주형마다) 데이터를 분석하는 방법과 시각화 하는 방법이다.
#평균
np.mean(titanic['Fare'])
titanic['Fare'].mean()
#중앙값
np.median(titanic['Fare'])
titanic['Fare'].median()
#최빈값
titanic['Pclass'].mode()
#시각화
df.describe()
| Fare | |
|---|---|
| count | 891.000000 |
| mean | 32.204208 |
| std | 49.693429 |
| min | 0.000000 |
| 25% | 7.910400 |
| 50% | 14.454200 |
| 75% | 31.000000 |
| max | 512.329200 |
강의 중 사분위수를 통해서 그래프를 예측하며 손으로 그리는 연습을 했다.
이런식으로 연습하면서 더 잘 이해할 수 있을 것이다.
plt.hist(titanic['Fare'], bins = 5, edgecolor = 'gray')
plt.xlabel('Fare')
plt.ylabel('Frequency')
plt.show()

이건 Seaborn 패키지로 한거다.
sns.histplot(x= 'Fare', data = titanic, bins = 20)
plt.title('plt can use sns')
plt.grid()
plt.show()

sns.kdeplot(titanic['Fare'])
plt.show()
sns.kdeplot(x='Fare', data = titanic)
plt.show()

#이런식으로도 사용할 수 있음!!!
sns.histplot(x = 'Age', data = titanic, bins = 16, kde = True)
temp = titanic.loc[titanic['Age'].notnull()]
#plt
plt.boxplot(temp['Age'], vert = False)
plt.grid()
plt.show()

# sns
sns.boxplot(x = titanic['Age'])
plt.grid()
plt.show()

titanic['Embarked'].value_counts()
결과값: Embarked 변수에 있는 값들의 개수를 시리즈로 출력
Embarked(변수 명)
Southampton 644
Cherbourg 168
Queenstown 77
Name: count, dtype: int64
titanic['Embarked'].value_counts(normalize = True)
결과값: Embarked 변수에 있는 값들의 비율을 시리즈로 출력 (빈도를 전체 데이터로 나눈 값)
Embarked
Southampton 0.724409
Cherbourg 0.188976
Queenstown 0.086614
Name: proportion, dtype: float64
sns.countplot(x = 'Pclass', data = titanic)
plt.grid()
plt.show()

공통점: Y축이 같다(count), x축이 다르다.
히스토그램(hist): x축 순서를 바꿀 수 없다.
막대그래프(bar): x축 순서를 바꿀 수 있다.