티스토리 뷰
import pandas as pd
import numpy as np
from pandas import Series, DataFrame
from numpy import nan as NA
import matplotlib.pyplot as plt
%matplotlib qt
#. 막대 그래프(Bar Plot) 그리기
- 각 로우별 막대 그래프 출력
- 각 컬럼이름이 범례로 지정
df1 = pd.read_csv('plot_test.csv')
df1.index = ['월','화','수','목','금','토','일']
df1.columns.names = ['지점']
df1.index.names = ['요일']
fig, ax = plt.subplots(1,2)
df1.plot(kind='bar', ax=ax[0]) # bar(수직막대)
df1.plot(kind='barh', ax=ax[1]) # barh(수평막대)
#. Q1
# cctv 데이터를 불러오고
cctv = pd.read_csv('cctv.csv', encoding='cp949')
cctv['rate'] = round(cctv['검거'] / cctv['발생']*100,2)
# 각 구별 검거율의 평균이 가장 낮은 구의 각 년도별 검거율을 막대그래프로 표현
data = cctv.pivot_table(index='구', columns='년도', values='rate')
data.loc[data.mean(1).idxmin()].plot(kind='bar', title='관악구(검거율 평균이 가장 낮은 구) 검거율', ylim=[0,100])
plt.xticks(rotation=30)
#. Q2
# employment 데이터를 불러온 후
emp = pd.read_csv('employment.csv', encoding='cp949',na_values='-', index_col=0)
col1 = emp.columns.str[:4] # 컬럼 이름 정제
col2 = emp.iloc[0].str.split(' ').str.get(0) # 첫 번째 행 정제 후 제거
emp = emp.iloc[1:]
emp.columns = [col1, col2] # 정제한 컬럼을 컬럼 이름으로
emp.columns.names = ['년도','구분']
emp = emp.applymap(lambda x : str(x).replace(',','')).astype('float') # 천 단위 구분기호 제거
# 1) 각 근로자별로 월급여액의 년도별 증감 추이를 그래프로 ( row:년도, colums=근로자)
data1 = emp.xs('월급여액', level=1, axis=1).T
plt.rc('font', family='Malgun Gothic')
data1.index = data1.index.astype('int') # 대소비교 가능한 정수형으로 변환해야 축 범위로 자동 지정
data1.plot(ylim=[0,4000])
# 2) 각 근로자별 초과근로시간의 평균을 구하고 막대 그래프로 비교할 수 있도록
data2 = emp.xs('초과근로시간', level=1, axis=1).dropna().mean(1)
data2.plot(kind = 'bar')
plt.xticks(rotation=50)
참고: KIC 캠퍼스 머신러닝기반의 빅데이터분석 양성과정
'Python > Visualize' 카테고리의 다른 글
[Python 시각화] 선 그래프 그리기 (matplotlib API) (6) | 2019.02.18 |
---|