![[TIL] 2024-07-24 (데이터 시각화)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5G8Zq%2FbtsIL9NlhqF%2Fz3PLYxKEAExqVfkK4Yakfk%2Fimg.jpg)
[TIL] 2024-07-24 (데이터 시각화)TIL (2024)/2024.072024. 7. 25. 01:03
Table of Contents
728x90
Today I Learned (2024-07-24) 🤔
목차
- 오늘 공부한 내용 🧑🏻💻
- 어려웠던 내용 📚
- 궁금한 내용과 부족한 내용 🙋🏻
- 느낀 점 💡
오늘 공부한 내용 🧑🏻💻
1. Doit 쉽게 배우는 파이썬 데이터 분석
산점도(scatter plot)
- 산점도란?
- 데이터를 x축과 y축에 점으로 표현한 그래프
- 나이와 소득처럼 연속값으로 된 두 변수의 관계를 표현할 때 사용된다.
선 그래프(line plot)
- 선 그래프란?
- 데이터를 선으로 표현한 그래프
- 시간에 따라 달라지는 데이터를 표현할 때 선 그래프를 자주 사용한다.
- 예를 들어, 환율, 주가지수 등 경제지표가 시간에 따라 변하는 양상을 선 그래프로 표현할 수 있다.
상자 그림(box plot)
- 상자 그림이란?
- 데이터의 분포 또는 퍼져 있는 형태를 직사각형 상자 모양으로 표현한 그래프
- 평균값만 볼 때보다 데이터의 특징을 더 자세히 이해할 수 있다.
막대 그래프(bar plot)**
- 막대 그래프란?
- 데이터의 크기를 막대의 길이를 표현한 그래프
- 성별, 소득 차이처럼 집단 간 차이를 표현할 때 막대 그래프를 자주 이용한다.
2. KDT (분포형 데이터, 범주형 데이터, 기타 데이터 시각화)
분포형 데이터
Hist Plot
주요 특징
- 데이터의 분포를 시각적으로 표현하는 간단하고 효과적인 방법이다.
- 데이터의 빈도를 나타내는데 주로 사용된다.
사용법
import seaborn as sns
sns.histplot(data, x, hue, multiple, bins)
예시 코드
- 종마다 몸무게 밀도
import seaborn as sns
import matplotlib.pyplot as plt
# 예제 데이터 로드
penguins = sns.load_dataset('penguins')
# 히스토그램 플롯
ax = sns.histplot(
data=penguins,
x='body_mass_g',
hue='species',
multiple='stack',
stat='density',
)
plt.show()
한계
- 히스토그램을 작성할 때 bin의 개수와 크기를 어떻게 선택할지에 따라 시각화 결과가 달라질 수 있다.
- 이상치가 있는 경우 정확한 정보를 제공하지 못할 수 있다.
- 비연속적인 데이터에 적합하지 않다.
KDE Plot
주요 특징
- 커널 믿르 추정(Kernel Density Estimation, KDE) plot은 데이터의 분포를 부드럽고 연속적인 곡선으로 표현한다.
- histplot이 count(절대량)을 표현한다면 kdeplot은 비율(상대량)을 시각화 한다.
사용법
import seaborn as sns
sns.kedplot(data, x)
예시 코드
- 섬마다의 펭귄 몸무게 밀도
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
penguins = sns.load_dataset('penguins')
sns.kdeplot(
data=penguins,
x = 'body_mass_g',
hue='island'
)
한계
- 데이터 양이 크면 계산 부하가 크며, 시간이 오래 걸린다.
- 과도하게 부드럽게 모델링되어 데이터의 세부적인 특성을 파악하기 어려울 수 있다.
Histplot 과 kdeplot 같이 사용하기
sns.histplot
에kde=True
를 넣어준다.
import seaborn as sns
import matplotlib.pyplot as plt
# 예제 데이터 로드
penguins = sns.load_dataset("penguins")
# 히스토그램 플롯
ax = sns.histplot(
data=penguins,
x="body_mass_g",
hue="species",
multiple="stack",
stat="density",
kde=True,
)
plt.show()
Rug Plot
주요 특징
- 데이터의 분포를 나타내는 매우 단순한 시각화 방법 중 하나
- 단독으로 쓰이기보다는 주로 kdeplot과 함께 쓴다.
- 다른 그래프를 보완해주는 그래프
- 그 이유는 rugplot이 데이터 값을 x축과 y축 위에 그려주는 그래프이기 때문이다.
사용법
sns.rugplot()
예시코드
sns.kdeplot(
data=penguins,
x="body_mass_g",
hue="island",
fill=True,
)
sns.rugplot(
data=penguins,
x='body_mass_g',
hue='island'
)
Displot
주요 특징
histplot
,kdeplot
,rugplot
,edcfplot
네 가지를 모두 그릴 수 있다.- kind 파라미터를 통해 설정할 수 있다.
사용법
sns.displot()
예시 코드
- 종, 섬별 몸무게 밀도
sns.displot(
data=penguins,
x="body_mass_g",
col="species",
hue="island",
kind="kde",
rug=True,
)
범주형 데이터(Categorical Data)
Bar Plot
주요 특징
- 막대로 표시되면, 막대의 높이 또는 길에는 해당 범주의 값 또는 빈도를 나타냄.
- 막대는 수직 또는 수평으로 그릴 수 있다.
- 이변량(bivariate) 분석을 위한 plot
- x축에는 범주형 변수, y축에는 연속형 변수를 입력
- x에 연속형, y에 범주형을 넣으면 수평 막대 그래프를 출력
사용법
sns.barplot(data, x, y)
예시 코드
- 다이아몬드 컷 품질마다의 가격을 보여준다.
sns.barplot(
data=diamonds,
x = 'cut',
y = 'price',
palette="pastel",
)
- x, y 를 바꾸면 수평 막대 그래프로 바뀐다.
sns.barplot(
data=diamonds,
x="price",
y="cut",
palette="pastel",
)
Count Plot
- histplot과 마찬가지로 동일한 데이터의 갯수를 count
- 단, histplot은 연속형 데이터, countplot은 범주형 데이터를 입력받음
- x에 데이터를 넣으면 막대그래프, y에 데이터를 넣으면 수평막대그래프를 출력
사용법
sns.countplot(data, y, hue)
sns.countplot(data, x, hue)
예시 코드
- 다이아몬드 데이터의 컷 등급별 개수와 선명도 개수를 나타낸다.
sns.countplot(
data=diamonds,
x ='cut',
hue='clarity'
)
###
sns.countplot(
data=diamonds,
y ='cut',
hue='clarity'
)
Box Plot
주요 특징
- 변수 1개(x or y축)일 때는 연속형 변수 입력 (범주형 변수는 에러)
- 변수 2개(x and y축)일 때는 연속형 변수와 범주형 변수를 입력
- 데이터 통계치(최대, 최소, 평균, 1사분위수, 3사분위수)를 한번에 표시
- 특정 데이터의 전체적인 분포를 확인하기 좋은 그래프
- 특이치(outliar)를 발견하기 좋음
- 중앙값(중간값), 사분위수(25%, 75%), 이상치(Outliers) 등의 주요 통계적 정보를 시각적으로 제공한다.
사용법
sns.boxplot(data, x, y, hue)
예시 코드
- 다이아몬드 색상에 따른 값 분포
sns.boxplot(
data=diamonds,
x='color',
y = 'price',
palette="pastel",
)
Violin Plot
주요 특징
- 너비는 데이터 밀도를 나타낸다.
- boxplot은 이상치를 한 눈에 파악할 수 있고, violinplot은 데이터 분포를 한 눈에 파악할 수 있다.
사용법
sns.violinplot(data, x, y, hue, split, inner)
"""
split : hue에 따라 바이올른일 좌우로 분할할지 결정
inner : 중앙에 그려넣을 요소(box, quartile, point, stick)
"""
예시 코드
- 컷 등급에 따라 가격의 분포도이다.
sns.violinplot(
data=diamonds,
x='cut',
y ='price'
)
기타 시각화
Heatmap
주요 특징
- 열화상 카메라로 찍은 것 처럼 데이터의 상관관계 정도에 따라 색차이를 부여한 그래프
- 기본적으로 2차원 데이터가 필요(pivot-table, correlation 개념 이용)
- 데이터의 상관 관계를 시각적으로 분석하는데 특히 유용하다.
사용법
sns.heatmap(corr_matrix)
"""
corr_matrix
- 수치형 자료간의 상관 행렬
- .corr() 메서드를 활용하여 상관 행렬 계산
"""
예시 코드
- 인원이 많을 수록 팁을 많이 준다.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
tips = sns.load_dataset("tips")
tips.info()
pivot = tips.pivot_table(index='day',columns='size',values='tip')
sns.heatmap(
data=pivot,
annot=True
)
Pair Plot
주요 특징
- 데이터프레임 내의 수치형 변수에 대해 산점도 매트릭스 생성
사용법
sns.pairplot(dataframe, hue, vars)
"""
vars
- 시각화에 사용할 데이터를 리스트에 저장서 지정
"""
예시 코드
- 나이, 등급, 요금, 성별만 추출해서 만든 그래프이다.
import seaborn as sns
import matplotlib.pyplot as plt
titanic = sns.load_dataset("titanic")
d_titanic = titanic[['age','pclass','fare','sex']]
sns.pairplot(
data=d_titanic,
hue='sex'
)
#Pie Chart
주요 특징
- 전체 데이터에 대해 각 부분 데이터를 비율로 시각화하여 크기와 색상을 통해 각 부분 데이터의 비율을 직관적으로 이해할 수 있다.
사용법
import matplotlib.pyplot as plt
plt.pie(x, labels, autopctm)
"""
x : 원형 차트 내부 각 조각의 크기
labels : 원형 차트 내부 각 조각의 레이블
autopctm : 각 조각의 비율을 계산해서 표시, 일반적으로 %1.1f%% 사용
"""
예시 코드
- 컷 등급 별 비율
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
diamonds = sns.load_dataset("diamonds")
cut_count = diamonds.cut.value_counts()
cut_label = diamonds.cut.unique()
plt.pie(
x=cut_count,
labels=cut_label,
autopct="%1.1f%%"
)
어려웠던 내용 📚
- 어떤 데이터에 어떤 시각화를 적용해야 하는지 아직은 어렵다
궁금한 내용과 부족한 내용 🙋🏻
- 어려웠던 내용과 동일하다...
- 부족하고 어렵다.. 데이터 시각화 🥹
느낀 점 💡
- 경험이 없다보니까 어떤 데이터에 어떤 시각화를 넣으면 좋을지 바로 알지 못하겠다.
- 그래도 정리하면서 강의 시간에 했던 데이터말고 다른 데이터를 써서 시각화를 하니까 조금 알 것 같기도?... 하지만 착각이겠지
- 진짜 많이 해봐야 늘거같다.
- 하지만 재미있다.
'TIL (2024) > 2024.07' 카테고리의 다른 글
[TIL] 2024-07-26 (특강) (0) | 2024.07.27 |
---|---|
[TIL] 2024-07-25 (데이터 시각화) (0) | 2024.07.26 |
[TIL] 2024-07-23 # 데이터 시각화 (0) | 2024.07.24 |
[TIL] 2024-07-22 (2) | 2024.07.23 |
[TIL] 2024-07-21 (0) | 2024.07.21 |
@mane Lab :: 마네의 연구소
배움에 즐거움을 느끼는 마네의 연구소입니다. 이미지 출처 : https://www.instagram.com/hoseobiiiiiii._.0410/
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!