20240718 TIL
01. Matplotlib 알아보기
▶Matplotlib 이란?
파이썬에서 시각화를 위한 라이브러리 중 하나로, 다양한 종류의 그래프를 생성하기 위한 도구 제공
- matplotlib.pyplot
- plot() 함수 : 2차원 데이터를 시각화하기 위해 사용
import matplotlib.pyplot as plt
# 데이터 생성
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 선 그래프 그리기
plt.plot(x, y)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Example Plot')
plt.show()
▶데이터셋 불러오기
import seaborn as sns
# 'tips' 데이터셋 불러오기
tips_data = sns.load_dataset('tips')
# 데이터셋 확인
print(tips_data.head())
02. 그래프 그리기 -도구편
① Matplotlib.pyplot 에서 plot()를 활용하는 법
-pandas의 plot() 메서드는 DataFrame 객체에서 데이터를 시각화하는데 사용
ex) 선 그래프를 그리기 위해서 plot() 호출, x,y 인수에 각각 x축과 y축에 해당하는 열 지정
import pandas as pd
import matplotlib.pyplot as plt
# 샘플 데이터프레임 생성
data = {
'A': [1, 2, 3, 4, 5],
'B': [5, 4, 3, 2, 1]
}
df = pd.DataFrame(data)
# 선 그래프 그리기
df.plot(x='A', y='B')
plt.show()
② 스타일 설정하기
ax = df.plot(x='A', y='B', color='green', linestyle='--', marker='o')
plt.show()
-Color(색상): 문자열로 지정 가능, 기본 색상 이름 또는 RGB 값 직접 지정 가능
-Linestyle(선 스타일) : 의 스타일은 '-'(실선), '--'(대시선), ':'(점선), '-.'(점-대시선) 등으로 지정
-Marker(마커) : 데이터 포인트를 나타내는 기호, 'o'(원), '^'(삼각형), 's'(사각형), '+'(플러스), 'x'(엑스) 등 다양한 기호로 지정
③ 범례 추가하기 - legend() 메서드를 사용
#1 label
ax = df.plot(x='A', y='B', color='green', linestyle='--', marker='o', label='Data Series')
#2 legend
ax.legend(['Data Series'])
#1번 또는 2번 방법으로 범례를 추가할 수 있습니다.
plt.show()
④ 축, 제목 입력하기 - set_xlabel(), set_ylabel(), set_title() 메서드를 사용하여 x축과 y축의 레이블 및 그래프 제목을 추가 가능
ax.set_xlabel('X-axis Label')
ax.set_ylabel('Y-axis Label')
ax.set_title('Title of the Plot')
plt.show()
⑤ 텍스트 추가하기 - text() 메서드 사용하여 그래프에 특정 위치에 텍스트 추가 가능
ax.text(3, 3, 'Some Text', fontsize=12)
plt.show()
⑥ 한꺼번에 설정하는 방법
import matplotlib.pyplot as plt
# Figure 객체 생성 및 사이즈 설정
plt.figure(figsize=(8, 6)) # 가로 8인치, 세로 6인치
# 데이터 생성
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 그래프 그리기
plt.plot(x, y, color='green', linestyle='--', marker='o', label='Data Series')
# 추가 설정
plt.xlabel('X-axis Label')
plt.ylabel('Y-axis Label')
plt.title('Title of the Plot')
plt.legend()
plt.text(3, 8, 'Some Text', fontsize=12) # 특정 좌표에 텍스트 추가
# 그래프 출력
plt.show()
03. 그래프 그리기 - 차트
그래프 유형 | 자료 유형 | 특징 |
Line Plot | 연속형 데이터 | 데이터의 변화 및 추이를 시각화 |
Bar Plot | 범주형 데이터 | 카테고리 별 값의 크기를 시각적으로 비교 |
Histogram | 연속형 데이터 | 데이터 분포, 빈도, 패턴 등을 이해 |
Pie Chart | 범주형 데이터의 비율 | 범주별 상대적 비율을 부채꼴 모양으로 시각화 |
Box Plot | 연속형 데이터의 분포 | 중앙값, 사분위수, 최소값, 최대값, 이상치 확인 |
Scatter Plot | 두 변수 간 관계 | 변수 간의 관계, 군집, 이상치 등 확인 |
① Line Plot (선 그래프) - 데이터 간의 연속적인 관계를 시각화하는 데에 적합, 주로 시간의 흐름에 따른 데이터 변환
#데이터 불러오기
import seaborn as sns
data = sns.load_dataset('flights')
data_grouped = data[['year', 'passengers' ]].groupby('year').sum().reset_index()
plt.plot(data_grouped['year'], data_grouped['passengers'])
plt.xlabel('year')
plt.xlabel('passengers')
plt.show()
결과 값:
② Bar Plot (막대 그래프) - 범주형 데이터를 나타내며, 각각의 막대로 값의 크기를 비교하는 데에 사용
df = pd.DataFrame({
'도시': ['서울', '부산', '대구', '인천'],
'인구': [990, 250, 250, 290]
})
plt.bar(df['도시'], df['인구'])
plt.xlabel('도시')
plt.ylabel('인구')
plt.title('도시 별 인구 수')
plt.show()
결과값: (한글이 깨졌는데 .... 그 이유는 찾아봐야 할 것 같다 ^^ ......)
③ Histogram(히스토그램) - 히스토그램은 연속된 데이터의 분포를 보여줌, 주로 데이터의 빈도를 시각화하여 해당 데이터의 분포를 이해하는 데 사용
import numpy as np
data = np.random.randn(1000)
plt.hist(data, bins=30)
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram')
plt.show()
결과값:
📌Bar vs Histogram 의 차이는?
구분 | 막대 그래프 | 히스토그램 |
데이터 유형 | 범주형 데이터 비교 | 연속적 데이터 분포 |
막대 형태 | 수직 또는 수평 막대(크기) | 막대가 붙어있는 형태(빈도) |
시각화 유형 | 해당 범주의 크기를 나타냄 | X축은 데이터 값의 범위를, Y축은 해당 범위에서의 빈도를 나타냄 |
예시 | 팀별 판매량, 국가별 GDP 등을 비교 | 시험 점수 분포, 온도 변화 등 연속적인 데이터의 분포 |
④ Pie Chart(원 그래프) - 전체에서 각 부분의 비율을 보여줌, 주로 카테고리별 비율을 비교할 때 사용
# 데이터 생성
sizes = [30, 20, 25, 15, 10]
labels = ['A', 'B', 'C', 'D', 'E']
# 원 그래프 그리기
plt.pie(sizes, labels=labels)
plt.title('Pie Chart')
plt.show()
결과값:
⑤ Box Plot - 데이터의 분포와 이상치를 시각적으로 보여줌, 중앙값, 사분위수, 최솟값, 최댓값 등의 정보를 제공하여 데이터의 통계적 특성을 파악하는 데 사용
import matplotlib.pyplot as plt
import numpy as np
# 데이터 생성
np.random.seed(10)
data = [np.random.normal(0, std, 100) for std in range(1, 4)]
# 박스 플롯 그리기
plt.boxplot(data)
plt.xlabel('Data')
plt.ylabel('Value')
plt.title('Box Plot')
plt.show()
결과값:
⑥ Scatter Plot(산점도) -두 변수 간의 관계를 점으로 표시하여 보여주는 그래프, 두 변수 간의 상관 관계를 보여주고, 각 점이 데이터 포인트를 나타내며, 그 점들이 어떻게 분포되어 있는지 시각적으로 확인
iris = sns.load_dataset("iris")
plt.scatter(iris['petal_length'], iris['petal_width'])
plt.xlabel('petal length')
plt.ylabel('petal width')
plt.show()
결과값:
💡느낀점
코드를 입력하면 이렇게 시각자료가 나오는게 신기했다 근데 처음하는거다보니 좀 어렵게 느껴졌다.
아직 문제들은 풀어보진 못했는데 풀어보면서 감을 익혀야될 것 같다. 파이썬도 그렇고 시각화도 그렇고 배워야 할 게 엄청 많다..!
그래도 꾸준히 연습하다보면 늘겠지 ~~ 힘내보자 !! :)
'✨Today I Learned > Python' 카테고리의 다른 글
[Python] 문자열 내림차순으로 배치하기 (0) | 2024.09.04 |
---|---|
데이터 전처리 문제 실습 (0) | 2024.07.19 |
데이터 전처리 (Pandas) (0) | 2024.07.17 |
Python codekata 19번 - 정수 제곱근 판별 (0) | 2024.07.11 |
파이썬 라이브 세션 3회차 개인과제 (0) | 2024.07.10 |