# 라이브러리 불러오기
import pandas as pd
import matplotlib.pyplot as plt
# 데이터 불러오기
df = pd.read_excel('/content/drive/MyDrive/hana1/data/남북한발전전력량.xlsx',
engine = 'openpyxl')
# 북한 데이터 추출
df_north = df.iloc[5:]
# 데이터 전처리
df_north = df_north.drop('전력량 (억㎾h)', axis = 1)
df_north = df_north.set_index('발전 전력별')
df_north = df_north.T
# 전력 증감율 계산
df_north = df_north.rename(columns = {'합계':'총발전량'})
df_north['전년총발전량'] = df_north['총발전량'].shift(1)
# 증감율 = ((금년총발전량 - 전년총발전량) / 전년총발전량)*100
# 총발전량 = 금년총발전량
df_north['증감율'] = ((df_north['총발전량'] - df_north['전년총발전량'])
/df_north['전년총발전량'])*100
보조축(2축 그래프)
# 한글 폰트 설정
plt.rc("font", family = "NanumGothic")
# 스타일 서식
plt.style.use("ggplot")
# 마이너스 기호 출력
plt.rcParams['axes.unicode_minus'] = False
# axe 객체
# 수력, 화력 발전에 대한 누적 막대 그래프
ax1 = df_north[['수력', '화력']].plot(kind = 'bar', stacked = True, figsize = (12,6))
ax2 = ax1.twinx() # x 축 공유
# 증감율에 대한 선 그래프
ax2.plot(df_north.index, df_north['증감율'], color = 'green', marker = 'o', label = '증감율')
# y 축 범위 조정
ax1.set_ylim(0, 500)
ax2.set_ylim(-60, 40)
# 차트 제목
plt.title("북한 전력 발전량")
# 축 이름
ax1.set_xlabel('기간(연도)')
ax1.set_ylabel('발전량')
ax2.set_ylabel('증감율')
# 범례
ax1.legend(loc = 'upper left')
ax2.legend(loc = 'best')
#
plt.show()
히스토그램
# kind = 'hist' 옵션 지정
# 라이브러리 불러오기
import pandas as pd
import matplotlib.pyplot as plt
# 데이터 불러오기
# csv 파일 불러오기 + 열 이름이 없음(header = None)
df = pd.read_csv('/content/drive/MyDrive/hana1/data/auto-mpg.csv', header = None)
# 열 이름 지정
df.columns = ['mpg', 'cylinders', 'displacement', 'horsepower', 'weight',
'acceleration', 'model_year', 'origin', 'car_name']
# 한글 폰트 설정
plt.rc("font", family = "NanumGothic")
# 스타일 서식
plt.style.use("ggplot")
# 히스토그램
df['mpg'].plot(kind = 'hist',
bins = 15, # 구간 개수
color = 'aquamarine',
figsize = (5,3))
# 차트 제목
plt.title("자동차 연비 히스토그램")
# x 축 이름
plt.xlabel("연비")
#
plt.show()
산점도
# kind = 'scatter' 옵션 지정
# c <- 점의 color 옵션
# s <- 점의 size 옵션
# 스타일 서식
plt.style.use("ggplot")
# 산점도
df.plot(kind = 'scatter',
x = 'mpg',
y = 'weight',
c = 'tomato', # 색상
s = 10, # 크기
figsize = (6,3))
# 차트 제목
plt.title("차중과 연비의 산점도")
#
plt.show()
버블 차트
# alpha 옵션으로 투명도 지정
# 버블 차트 = 원의 크기로 그리기
# 스타일 서식
plt.style.use("ggplot")
# 산점도
df.plot(kind = 'scatter',
x = 'mpg',
y = 'weight',
c = 'tomato', # 색상
s = 'displacement', # 크기
alpha = 0.2,
figsize = (8,5))
# 차트 제목
plt.title("차중, 연비, 배기량의 버블 차트")
#
plt.show()
# 연속형 변수
# 변수 3개 => 숫자형 변수 원의 색상으로 그리기 '
# 원의 색상으로 그리기
# 스타일 서식
plt.style.use("ggplot")
# 산점도
df.plot(kind = 'scatter',
x = 'mpg',
y = 'weight',
c = 'displacement', # 색상
cmap = 'plasma', # 컬러맵
s = 10, # 크기
alpha = 0.2,
figsize = (8,5))
# 차트 제목
plt.title("차중, 연비, 배기량의 버블 차트")
#
plt.show()
# 범주형 변수
# 원의 색상으로 그리기 - 범주형 변수
# 스타일 서식
plt.style.use("ggplot")
# 산점도
df.plot(kind = 'scatter',
x = 'mpg',
y = 'weight',
c = 'origin', # 색상
cmap = 'plasma', # 컬러맵
s = 10, # 크기
alpha = 0.2,
figsize = (8,5))
# 차트 제목
plt.title("차중, 연비, 배기량의 버블 차트")
#
plt.show()
파이 차트(원 그래프)
# origin 별로 sum 데이터 만들기
df['count'] = 1
df_origin = df.groupby('origin').sum()
df_origin.index = ["USA", "EU", "JAP"]
# 스타일 서식
plt.style.use("ggplot")
# 파이 차트
df_origin['count'].plot(kind = 'pie',
figsize = (10, 5),
# autopct = '%.1f', # 소수점 첫째자리 숫자만 표시
autopct = '%.1f%%', # 소수점 첫째자리로 % 와 함께 표시
colors = ['red','blue','yellow'], # 각 조각의 색상
startangle = 0) # 시작 위치
# 차트 제목
plt.title("origin 에 대한 원 그래프")
# 범례
plt.legend(loc = 'best')
#
plt.show()
상자 수염 그림(박스플롯)
# origin 별로 연비 데이터 만들기
mpg_1 = df[df['origin'] == 1]['mpg']
mpg_2 = df[df['origin'] == 2]['mpg']
mpg_3 = df[df['origin'] == 3]['mpg']
# 그림 객체
fig = plt.figure(figsize = (10, 5))
ax = fig.add_subplot(1,1,1)
# 수직 상자 그림
ax.boxplot(x = [mpg_1, mpg_2, mpg_3],
labels = ['USA', 'EU', 'JAP'])
plt.show()
# 수평 상자그림
# 그림 객체
fig = plt.figure(figsize = (10, 5))
ax = fig.add_subplot(1,1,1)
# 수평 상자 그림
ax.boxplot(x = [mpg_1, mpg_2, mpg_3],
labels = ['USA', 'EU', 'JAP'],
vert = False)
plt.show()
'Python > [시각화]' 카테고리의 다른 글
[folium] 지도 시각화, 단계 구분도 (0) | 2023.06.18 |
---|---|
[seaborn] 시각화(산점도, 히스토그램, 히트맵, 비율 막대 그래프, 빈도 막대 그래프, 상자 그림, 바이올린 그림, 조인트 그림, 그리드 분할, pairplot) (0) | 2023.06.18 |
[matplotlib] 그래프 시각화 2(선 그래프, 면적 그래프, 막대 그래프, 옵션 지정) (1) | 2023.06.18 |
[matplitlib] 그래프 시각화 (0) | 2023.06.16 |