Python / / 2022. 9. 30. 16:43

Python - Pandas 여러 그래프 시각화

from turtle import bgcolor
import matplotlib
import pandas as pd 
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc

df = pd.read_csv("C:/Users/Hoon/Desktop/엔코아 파이썬/데이터 시각화/auto-mpg.csv")
df.columns = ['mpg','cylinders','displacement','horsepower','weight','acceleration','model year','origin','name']
df.fillna(method='ffill',inplace=True)

# 한글 폰트 세팅
font_path = "./malgun.TTF"
font = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font)



df.mpg.plot(kind='hist',color='coral',figsize=(6,3),bins=30)
df.plot(x='weight', y='mpg' ,kind='scatter',c ='coral',s=10,figsize=(6,3))
df[(df.weight > 3000) & (df.mpg > 300)]
#데이터 전치
df = df.T
plt.title('SCATTER')
plt.xlabel('mpg')
plt.ylabel('frequency')
plt.show()

'''산점도 3개의 변수 비교'''
#x축 weight, y축 mpg , 3번째변수 : cylinders
#cylinders 열 최댓값 대비 상대적 크기 비율을 계산하여 cylinders_size 변수에 저장 
#cylinders_size는 최솟값 0 최댓값 1 (s옵션에 cylinders_size를 입력)

cylinders_size = df.cylinders / df.cylinders.max() * 300
df.plot(kind='scatter', x='weight',y='mpg',c='coral',figsize=(10,5),s=cylinders_size, alpha=0.3)
plt.title('Scatter Plot:mpg-weight-cylinders')
plt.show()

'''---------------------------------------'''

df.plot(kind='scatter', x='weight',y='mpg',marker='+',figsize=(10,5),cmap='viridis',c=cylinders_size,s=50,alpha=0.3)
plt.title('Scatter Plot:mpg-weight-cylinders')
plt.savefig("./scatter.png")
plt.savefig("./scatter_transparent.png",transparent=True)
plt.show()

'''PIE 차트

piechart는 원을 파이 조각처럼 나누어 표현 
조각의 크기는 해당 변수에 속하는 데이터 값의 크기에 비례 

-mpg데이터 프레임 제조국가 
'''

df_origin = df.origin.value_counts()
df_origin.rename({1:'USA',2:'EU',3:'JP'},inplace=True)
df_origin.plot(kind='pie',figsize=(6,4),autopct='%1.1f%%',startangle=90)
plt.title('Model Origin')
plt.axis('equal')
plt.legend(df_origin.index)
plt.show()

'''박스 플롯

box plot는 범주형 데이터 분포 파악에 적합

'''
mpg_1 = df.loc[df.origin==1, 'mpg']
mpg_2 = df.loc[df.origin==2, 'mpg']
mpg_3 = df.loc[df.origin==3, 'mpg']
plt.style.use('ggplot')
fig = plt.figure(figsize=(15,5))
ax1 = fig.add_subplot(1,2,1)
ax2 = fig.add_subplot(1,2,2)
ax1.boxplot(x=[mpg_1, mpg_2, mpg_3], labels=['USA', 'EU', 'JAPAN'])
ax2.boxplot(x=[mpg_1, mpg_2, mpg_3], labels=['USA', 'EU', 'JAPAN'], vert=False)
ax1.set_title('제조국가별 연비 분포 (수직)')
ax2.set_title('제조국가별 연비 분포 (수평)')
plt.show()
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유