반응형
6/14 공부 내용 정리
- 서브플롯(subplot) : 여러 개의 그래프를 한 번에 표시하거나 다양한 관점에서 데이터를 시각화하고자 할 때 유용
- seaborn 사용해서 "penguins" 데이터 셋 : 펭귄 종류와 관련된 정보 시각화하기.
- https://www.figma.com/@apple 애플이 내부적으로 사용하는 디자인 템플릿을 피그마에 공개했다.
subplot 코드, 그래프
import matplotlib.pyplot as plt
import numpy as np
plt.subplot(1, 2, 1)
plt.plot([0.1, 0.3, 0.5]) # x값 0, 1, 2에 대응하는 y값을 그래프로 그림
plt.subplot(3, 2, 2)
plt.bar([1, 2, 3], [3, 2, 1]) # x값 [1, 2, 3]에 대응하는 y값 [3, 2, 1]을 막대그래프로 그리기
plt.subplot(3, 2, 4)
plt.plot([4, 1, -3])
plt.subplot(3, 2, 6)
plt.scatter([1, 2, 3, 4, 5], [5, 4, 3, 2, 1])
plt.show()
seaborn 코드, 그래프
'''
Seaborn
- 화려한 시각화 기법들 제공
- histplot, barplot, lineplot...
- pandas DataFrame과 매우 호환이 잘 됨
'''
import seaborn as sns
import matplotlib.pyplot as plt
# "penguins" 데이터 셋 : 펭귄 종류와 관련된 정보
'''
- histplt
- 가장 기본적으로 사용되는 히스토그램을 출력
- 전체 데이터를 특정 구간별 정보를 확인할 때 사용
'''
'''
7 columns
- species : 펭귄 종류를 나타내는 범주형 변수 (Adelie, Gentoo, Chinstrap)
- island : 펭귄 서식하는 섬 위치를 나타내는 범주형 변수 (Torgersen, Biscoe, Dream)
- bill_length_mm : 펭귄 부리 길이를 밀리미터(mm) 단위로 나타내는 수치형 변수
- bill_depth_mm : 펭귄 부리 깊이를 밀리미터(mm) 단위로 나타내는 수치형 변수
- flipper_length_mm : 펭귄 지느러미 (mm)
- body_mass_g : 체중 (g)
- sex : 성별 (M, F)
'''
data = sns.load_dataset("penguins")
print(data)
plt.figure(figsize=(6,6))
plt.title("Distribution over body_mass", fontsize=15)
# bins = 막대그래프 개수, hue= "species" 기준으로 색깔 부여함, multiple="stack" 따로따로 쌓이게 그림
sns.histplot(data=data, x="body_mass_g", bins=20, hue="species", multiple="stack")
plt.show()
'''
2. displot
- distribution들을 여러 subplot들로 나눠서 출력해주는 plot
- kind를 변경하는 것으로 hisplot, kdeplot, ecdfplot 출력이 가능함
- hisplot : 히스토그램을 그리는 함수
- kdeplot : kernel density estimation
데이터의 분포를 부드러운 곡선으로 그리는 함수
확률밀도함수를 계산하고 이를 곡선으로 시각화함
- ecdfplot :
'''
plt.figure()
# kind="kde" : 밀도함수, col="island" : 양옆으로 출력, row="island", : 세로로 출력
sns.displot(data=data, kind="kde", x="body_mass_g", hue="species", row="island")
plt.show()
'''
3. barplot
- 어떤 데이터에 대한 값의 크기를 막대로 보여주는 plot (막대그래프)
- 가로/세로 두 가지로 출력 가능
- 히스토그램과는 다름
'''
plt.figure()
#sns.barplot(data=data, x="species", y="body_mass_g")
sns.barplot(data=data, x="body_mass_g", y="species", hue="sex")
plt.show()
'''
4. countplot
- 범주형 속성을 가지는 데이터들의 histogram을 보여주는 plot
- 종류별 count를 보여주는 방법
- set_palette() : 색상 팔레트 설정 함수
- Set1 : 가지 색상 가진 팔레트
- Set2 : 8가지 색상 가진 팔레트
- Set3 : 12가지 색상 가진 팔레트
- viridis : 연속적인 색상 그라데이션 팔레트
'''
sns.set_palette("Set1")
plt.figure(figsize=(8,6))
sns.countplot(data=data, x="sex", hue="species")
plt.show()
'''
5. boxplot
- 사분위 수를 표시하는 plot
- 특정 데이터의 전체적인 분포를 확인하기 좋은 시각화 기법
- box와 전체 range의 그림을 통해 outlier를 찾기 쉬움
'''
plt.figure(figsize=(8,6))
sns.set_palette("Set2")
sns.boxplot(data=data, x="bill_length_mm", y="species", hue="sex")
plt.show()
'''
6. violinplot
- 데이터에 대한 분포 자체를 보여주는 plot
- boxplot과 비슷하지만, 전체 분포에 대한 그림을 보여줌
'''
plt.figure(figsize=(8,6))
sns.violinplot(data=data, x="bill_length_mm", y="species", hue="sex")
plt.show()
'''
7. lineplot
- 특정 데이터를 x,y로 표시하여 관계를 확인할 수 있음
- 선 그래프
- 수치형 지표들 간의 경향을 파악할 때 많이 사용
'''
plt.figure(figsize=(8,6))
sns.lineplot(data=data, x="body_mass_g", y="bill_depth_mm")
plt.show()
'''
8.pointplot
- 특정 수치 데이터를 error bar와 함께 출력해주는 plot
- 데이터와 error bar를 한번에 찍어주기 때문에,
특정 지표들만 사용하는 것이 좋음
'''
plt.figure(figsize=(8,6))
sns.pointplot(data=data, x="body_mass_g", y="bill_depth_mm")
plt.show()
'''
9. scatterplot
- lineplot과 비슷하게 x,y에 대한 전체적인 분포를 확인하는 plot
- lineplot은 경향성에 초점을 둔다면,
scantterplot은 데이터 그 자체가 퍼져있는 모양에 중점을 둠
'''
plt.figure(figsize=(10, 6))
sns.scatterplot(data=data, x="flipper_length_mm", y="body_mass_g", hue="sex")
plt.show()
'''
10. pairplot
- 주어진 데이터의 각 feature들 사이의 관계를 표시하는 plot
- scatterplot, FaceGrid, kdeplot을 이용하여 feature들 간의 관계를 잘 보여줌
- 각 feature에 대해 계산된 모든 결과를 보여줌
- feature가 많은 경우 사용하기 적합하지 않음
'''
plt.figure(figsize=(10, 10))
sns.pairplot(data=data, hue="sex")
plt.show()
'''
11. heartmap
- 정사각형 그림에 데이터에 대한 정도 차이를 색 차이로 보여줌
- 열화상카메라로 사물을 찍은 것처럼 보임
- 상관관계를 알 수 있음
'''
# 각 feature간 상관관게를 파악하기 위해 correlation matrix 생성
corr = data.corr()
print(corr)
plt.figure(figsize=(8, 8))
sns.pairplot(data=corr)
plt.show()
매우 유용하다. 데이터를 시각화하는 그래프를 코드로 구현하려면 매우 어렵다. 위 코드들을 참고해서 주식 종목, 배당금을 입력하면 배당금 합계, 시각화 자료가 나오는 프로그램을 만들고 있다. 완성되면 네이버 블로그에 공개할 것이다.
반응형
'코딩 학원(국비지원)' 카테고리의 다른 글
101일차 코딩학원 (능력단위평가) (1) | 2023.06.16 |
---|---|
100일차 코딩학원 (머신러닝) (2) | 2023.06.15 |
98일차 코딩학원 (3) | 2023.06.13 |
97일차 코딩학원 (1) | 2023.06.12 |
95일차 코딩학원 (3) | 2023.06.08 |