경고창제거, 한글폰트 사용
import warnings
# 경고창 제거
warnings.filterwarnings('ignore')
# 한글 글꼴 설정
rc('font', family='Malgun Gothic')
Matplotlib
import matplotlib.pyplot as plt
from matplotlib import rc
import warnings
# 경고창 제거
warnings.filterwarnings('ignore')
# 한글 글꼴 설정
rc('font', family='Malgun Gothic')
# 데이터 준비
x = [1, 2, 3, 4, 5]
y = [10, 20, 30, 40, 50]
# 그래프 그리기
plt.plot(x, y, label="한글 데이터", color='blue', marker='o')
plt.title("한글과 경고 제거 테스트") # 그래프 제목
plt.xlabel("X축 이름") # X축 레이블
plt.ylabel("Y축 이름") # Y축 레이블
plt.legend() # 범례 표시
plt.grid(True) # 격자 표시
plt.show()
Seaborn
import seaborn as sns
import pandas as pd
# 샘플 데이터프레임 생성
data = pd.DataFrame({
'Category': ['A', 'B', 'C', 'D'],
'Values': [5, 7, 3, 8]
})
# 막대 그래프
sns.barplot(x='Category', y='Values', data=data)
plt.title("Bar Plot Example")
plt.show()
plotly
import plotly.express as px
# 샘플 데이터
data = px.data.gapminder()
# 대화형 산점도
fig = px.scatter(
data,
x='gdpPercap',
y='lifeExp',
size='pop',
color='continent',
log_x=True,
title="Interactive Scatter Plot"
)
# 그래프 크기 조정
fig.update_layout(width=800, height=500)
fig.show()
Pandas plot
import pandas as pd
# 샘플 데이터프레임 생성
data = {'Year': [2020, 2021, 2022], 'Sales': [250, 300, 400]}
df = pd.DataFrame(data)
# 선 그래프
df.plot(x='Year', y='Sales', kind='line', title="Sales Over Years")
plt.show()
히스토그램(histogram)
import pandas as pd
import matplotlib.pyplot as plt
# 데이터 불러오기
data = pd.read_csv("datasets/heart.csv")
# 히스토그램 생성
plt.hist(
data['age'], # 나이 데이터를 시각화
bins=10, # 구간 수
color='skyblue', # 막대 색상
alpha=0.7, # 투명도
edgecolor='black' # 테두리 색상
)
plt.title("Age Distribution in Heart Dataset") # 그래프 제목
plt.xlabel("Age") # X축 이름
plt.ylabel("Frequency") # Y축 이름
plt.grid(True) # 격자 표시
plt.show()
박스플롯(Box plot)
import pandas as pd
import matplotlib.pyplot as plt
# CSV 데이터 읽기
data = pd.read_csv("datasets/heart.csv")
# 박스 그래프 생성
plt.boxplot(
data['age'], # 나이 데이터를 시각화
vert=True, # 그래프를 세로로 표시
patch_artist=True, # 박스 내부 색상 채우기
boxprops=dict(facecolor='skyblue', color='black'), # 박스 스타일
medianprops=dict(color='red', linewidth=2), # 중앙값 스타일
whiskerprops=dict(color='black', linewidth=1.5), # 수염 스타일
capprops=dict(color='black', linewidth=1.5) # 상한/하한선 스타일
)
plt.title("Age Distribution in Heart Dataset") # 그래프 제목 설정
plt.ylabel("Age") # Y축 이름 설정
plt.grid(True) # 격자 표시
plt.show() # 그래프 출력
이변량 박스플롯(Box plot)
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# CSV 데이터 읽기
data = pd.read_csv("datasets/heart.csv")
# 이변량 박스 그래프 생성
plt.figure(figsize=(8, 6))
sns.boxplot(
x='sex', # X축: 그룹(성별)
y='chol', # Y축: 콜레스테롤 값
data=data, # 데이터프레임
palette='Set3' # 색상 팔레트
)
# 그래프 꾸미기
plt.title("Cholesterol Distribution by Sex") # 제목 설정
plt.xlabel("Sex") # X축 이름 설정
plt.ylabel("Cholesterol") # Y축 이름 설정
plt.grid(axis='y', linestyle='--') # Y축 격자선 추가
plt.show()
선그래프(Line Graph, Line Chart)
import pandas as pd
import matplotlib.pyplot as plt
# CSV 데이터 읽기
data = pd.read_csv("datasets/heart.csv")
# 데이터 정렬 (나이에 따라 정렬)
data = data.sort_values(by="age")
# 선 그래프 생성
plt.plot(
data['age'], # X축: 나이
data['chol'], # Y축: 콜레스테롤 수치
color='blue', # 선 색상
linewidth=2, # 선 두께
linestyle='-', # 선 스타일 (실선)
marker='o', # 데이터 점 표시
markersize=5, # 점 크기
label='Cholesterol' # 범례
)
# 그래프 꾸미기
plt.title("Age vs Cholesterol") # 그래프 제목
plt.xlabel("Age") # X축 이름
plt.ylabel("Cholesterol") # Y축 이름
plt.legend() # 범례 표시
plt.grid(True) # 격자 표시
plt.show() # 그래프 출력
막대그래프(Bar Graph, Bar Chart)
import pandas as pd
import matplotlib.pyplot as plt
# CSV 데이터 읽기
data = pd.read_csv("datasets/heart.csv")
# 데이터 준비 (카테고리별 평균 콜레스테롤 계산)
age_groups = data.groupby('age')[['chol','thalachh']].mean().reset_index()
# 막대 그래프 생성
plt.bar(
age_groups['age'], # X축: 나이
age_groups['chol'], # Y축: 평균 콜레스테롤
color='skyblue', # 막대 색상
width=0.8, # 막대 너비
edgecolor='black' # 테두리 색상
)
# 그래프 꾸미기
plt.title("Average Cholesterol by Age") # 그래프 제목
plt.xlabel("Age") # X축 이름
plt.ylabel("Average Cholesterol") # Y축 이름
plt.xticks(rotation=45) # X축 레이블 회전
plt.grid(axis='y', linestyle='--') # Y축 격자선 추가
plt.show() # 그래프 출력
=============================================================================
plt.barh(
age_groups['age'],
age_groups['chol'],
color='orange',
edgecolor='black'
)
plt.title("Average Cholesterol by Age (Horizontal)")
plt.xlabel("Average Cholesterol")
plt.ylabel("Age")
plt.show()
=============================================================================
import numpy as np
import warnings
# 경고창 제거
warnings.filterwarnings('ignore')
# 한글 글꼴 설정
rc('font', family='Malgun Gothic')
x = np.arange(len(age_groups['age']))
plt.bar(x - 0.2, age_groups['chol'], width=0.4, label='Cholesterol', color='blue')
plt.bar(x + 0.2, age_groups['thalachh'], width=0.4, label='Max Heart Rate', color='green')
plt.xticks(x, age_groups['age'])
plt.legend()
plt.title("Cholesterol and Max Heart Rate by Age")
plt.xlabel("Age")
plt.ylabel("Value")
plt.show()
파이차트(Pie Chart)
import matplotlib.pyplot as plt
# 데이터 준비
categories = ['Category A', 'Category B', 'Category C', 'Category D']
values = [30, 20, 35, 15]
# 파이 그래프 생성
plt.pie(
values,
labels=categories, # 항목 이름 설정
autopct='%1.1f%%', # 비율 표시 형식
startangle=90, # 시작 각도 (90도부터 시작)
explode=(0, 0.1, 0, 0), # 특정 항목 강조 (Category B 강조)
colors=['skyblue', 'orange', 'green', 'red'], # 섹션 색상
shadow=True # 그림자 추가
)
# 그래프 제목 설정
plt.title("Sample Pie Chart")
plt.show() # 그래프 출력
=================================================================================
import matplotlib.pyplot as plt
# 데이터 준비
categories = ['Category A', 'Category B', 'Category C', 'Category D']
values = [30, 20, 35, 15]
# 두 개의 그래프를 위한 서브플롯 생성
fig, axs = plt.subplots(1, 2)
# 첫 번째 파이 그래프
axs[0].pie(
values,
labels=categories,
autopct='%1.1f%%',
colors=['skyblue', 'orange', 'green', 'red']
)
# 두 번째 파이 그래프 (특정 섹션 강조)
axs[1].pie(
values,
explode=(0, 0.2, 0, 0),
labels=categories, autopct='%1.1f%%'
)
# 그래프 표시
plt.show()
산점도(Scatter plot)
import pandas as pd
import matplotlib.pyplot as plt
# CSV 데이터 읽기
data = pd.read_csv("datasets/heart.csv")
# 산점도 생성
plt.scatter(
data['chol'], # X축: 콜레스테롤 값
data['thalachh'], # Y축: 최대 심박수
c=data['age'], # 점 색상: 나이
s=50, # 점 크기 (고정)
alpha=0.7, # 점 투명도
cmap='viridis', # 색상 맵
edgecolor='black' # 점 테두리 색상
)
# 그래프 꾸미기
plt.title("Cholesterol vs Max Heart Rate") # 그래프 제목
plt.xlabel("Cholesterol") # X축 이름
plt.ylabel("Max Heart Rate") # Y축 이름
plt.colorbar(label="Age") # 색상 범례 추가
plt.grid(True) # 격자 표시
plt.show() # 그래프 출력
히트맵(Heat Map)
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# CSV 데이터 읽기
data = pd.read_csv("datasets/heart.csv")
# 상관관계 계산
correlation_matrix = data.corr()
# 히트맵 생성
plt.figure(figsize=(10, 8)) # 그래프 크기 설정
sns.heatmap(
correlation_matrix, # 상관계수 행렬
annot=True, # 각 셀에 상관계수 표시
fmt=".2f", # 표시 형식: 소수점 두 자리
cmap="coolwarm", # 색상 맵
linewidths=0.5, # 셀 간 경계선 두께
cbar=True # 컬러바 표시
)
# 그래프 꾸미기
plt.title("Correlation Heatmap") # 제목 설정
plt.show() # 그래프 출력
===================================================================
import seaborn as sns
import numpy as np
# 샘플 데이터
data = np.random.rand(5,5)
sns.heatmap(data, annot=True, cmap="coolwarm")
plt.show()
모자이크 차트(Mosaic Chart)
import seaborn as sns
import pandas as pd
from statsmodels.graphics.mosaicplot import mosaic
import matplotlib.pyplot as plt
# 샘플 데이터
data = {'sex': ['male', 'female', 'male', 'female'], 'product': ['A', 'A', 'B', 'B'], 'sales': [50, 30, 20, 40]}
df = pd.DataFrame(data)
# 모자이크 차트
mosaic(df, ['sex', 'product'], title="Mosaic Chart")
plt.show()
트리맵(Tree Map)
import squarify
import matplotlib.pyplot as plt
sizes = [50, 25, 12, 8, 5] # 크기 비율
labels = ['A', 'B', 'C', 'D', 'E']
plt.figure(figsize=(6,4))
squarify.plot(sizes=sizes, label=labels, alpha=0.7)
plt.axis('off')
plt.show()
===================================================
!pip install squarify -q
import pandas as pd
import squarify # 트리맵 생성 라이브러리
import matplotlib.pyplot as plt
# CSV 데이터 읽기
data = pd.read_csv("datasets/heart.csv")
# 데이터 준비 (콜레스테롤의 합계를 그룹별 계산)
grouped_data = data.groupby('age')['chol'].sum().reset_index()
# 트리맵 생성
plt.figure(figsize=(8, 6))
squarify.plot(
sizes=grouped_data['chol'], # 크기 값
label=grouped_data['age'], # 레이블 (성별)
color=['blue', 'orange','green','skyblue'
], # 색상
alpha=0.8
)
plt.title("Treemap of Cholesterol by Sex")
plt.axis('off') # 축 숨기기
plt.show()
레이더차트(Radar Chart)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# CSV 데이터 읽기
data = pd.read_csv("datasets/heart.csv")
# 데이터 준비 (변수별 평균값 계산)
categories = ['age', 'chol', 'thalachh']
values = [
data['age'].mean(), # 나이의 평균값
data['chol'].mean(), # 콜레스테롤 평균값
data['thalachh'].mean() # 최대 심박수 평균값
]
# 레이더 차트를 위해 시작점과 끝점 연결
values += values[:1]
angles = np.linspace(0, 2 * np.pi, len(categories) + 1)
# 레이더 차트 생성
fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(polar=True))
ax.plot(angles, values, label='Average Values', color='blue')
ax.fill(angles, values, color='skyblue', alpha=0.3)
# 축 설정
ax.set_xticks(angles[:-1])
ax.set_xticklabels(categories)
ax.set_title("Radar Chart")
ax.legend()
plt.show()
스트림차트(Stream Chart)
import pandas as pd
import matplotlib.pyplot as plt
# CSV 데이터 읽기
data = pd.read_csv("datasets/heart.csv")
# 데이터 준비 (각 열의 값 중 샘플 데이터 선택)
stream_data = data[['age', 'chol', 'thalachh']].head(10) # 앞 10개 데이터 사용
stream_data = stream_data.T # 전치(transpose)하여 행을 열로 변환
# 스트림 차트 생성
plt.stackplot(
range(len(stream_data.columns)), # X축 값
stream_data.values, # 데이터 값
labels=stream_data.index, # 레이블 (행 이름)
alpha=0.8
)
plt.title("Stream Chart")
plt.xlabel("Samples")
plt.ylabel("Values")
plt.legend(loc='upper left')
plt.show()
버블차트(Bubble Chart)
import pandas as pd
import matplotlib.pyplot as plt
# CSV 데이터 읽기
data = pd.read_csv("datasets/heart.csv")
# 데이터 준비
x = data['age'] # X축: 나이
y = data['chol'] # Y축: 콜레스테롤
sizes = data['thalachh'] * 5 # 버블 크기: 최대 심박수 * 2
colors = data['sex'] # 버블 색상: 성별
# 버블 차트 생성
plt.figure(figsize=(10, 6))
plt.scatter(x, y, s=sizes, c=colors, cmap='viridis', alpha=0.6, edgecolors='black')
plt.title("Bubble Chart of Age vs Cholesterol")
plt.xlabel("Age")
plt.ylabel("Cholesterol")
plt.colorbar(label="Sex")
plt.grid(True)
plt.show()
Joint Plot(조인트플롯)
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
# 샘플 데이터 생성
np.random.seed(42)
df = pd.DataFrame({
"X값": np.random.normal(50, 10, 100), # 평균 50, 표준편차 10
"Y값": np.random.normal(30, 5, 100) # 평균 30, 표준편차 5
})
# Joint Plot (산점도 + 분포)
sns.jointplot(data=df, x="X값", y="Y값", kind="scatter", marginal_kws=dict(bins=20))
plt.show()
워드클라우드(word cloud)
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from nltk.corpus import gutenberg # 내장 텍스트 데이터
import nltk
# NLTK 데이터 다운로드
nltk.download('gutenberg')
# 텍스트 데이터 로드 (제인 오스틴 "엠마")
text = gutenberg.raw("austen-emma.txt")
# 워드 클라우드 생성
wordcloud = WordCloud(
width=800,
height=400,
background_color='white',
colormap='viridis'
).generate(text)
# 그래프 출력
plt.figure(figsize=(10, 6))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off') # 축 숨기기
plt.title("Word Cloud: Jane Austen's Emma", fontsize=16)
plt.show()
카운터플롯(countplot)
# Seaborn을 이용한 Counter Plot (막대 그래프)
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 데이터 불러오기
data = pd.read_csv("datasets/heart.csv")
# 카테고리형 변수(범주형 데이터) 개수 시각화 (예: 'target' 컬럼)
sns.countplot(data=data, x="target")
# 그래프 제목 및 라벨 설정
plt.title("Target Distribution")
plt.xlabel("Target")
plt.ylabel("Count")
# 그래프 출력
plt.show()
'파이썬' 카테고리의 다른 글
12-1 데이터분할(분할, k-fold) (0) | 2025.03.18 |
---|---|
12-2. 머신러닝 지도학습 (0) | 2025.03.18 |
10. 탐색적 데이터 분석 (0) | 2025.03.18 |
9. Feature Engieneering (특성공학, 변수파생) (0) | 2025.03.18 |
8. 데이터 병합과 추가 (0) | 2025.03.18 |