파이썬 csv 그래프 그리기 - paisseon csv geulaepeu geuligi

이번 포스팅에서는 .csv 파일을 Pandas로 불러와서 만든 데이터프레임에서 간단하게 그래프를 Pie Chart(원 그래프) , Bar Chart (막대 그래프) 를 그리는 방법에 대해서 정리해보겠습니다.

먼저 데이터를 pandas를 이용해서 불러오겠습니다.

파이썬 csv 그래프 그리기 - paisseon csv geulaepeu geuligi

그 다음 데이터 구조를 한 번 확인해보겠습니다.

파이썬 csv 그래프 그리기 - paisseon csv geulaepeu geuligi

여기서 저희는 이산적인 속성인 sex 속성에 대해서 데이터를 시각화해보고자 합니다.

먼저 value_counts() 함수를 이용해서 각 속성의 갯수를 파악할 수 있습니다.

파이썬 csv 그래프 그리기 - paisseon csv geulaepeu geuligi

이를 이용해서 각 속성과 해당 속성의 대한 갯수를 값으로 해서 그래프를 그릴 수 있습니다.

plt.figure(figsize=(12,5))

plt.title('Data Sex Rate' , fontsize=20)

plt.ylabel('Counts' , fontsize=15)
plt.xlabel('Sex' , fontsize=15)

insurance['sex'].value_counts().plot.bar(color = ['lightblue', 'tomato'])

plt.show()
파이썬 csv 그래프 그리기 - paisseon csv geulaepeu geuligi

위에서 insurance['sex].value_counts().plot.bar() 을 함으로써 쉽게 막대 그래프를 그릴 수 있습니다.

plt.figure(figsize=(7,5))

plt.title('Data Sex Rate' , fontsize=20)

plt.xlabel('Counts' , fontsize=15)
plt.ylabel('Sex' , fontsize=15)

insurance['sex'].value_counts().plot.barh(color = ['lightblue', 'tomato'])

plt.show()
파이썬 csv 그래프 그리기 - paisseon csv geulaepeu geuligi

barh 를 함으로써 x , y 축을 반대로 해줄 수 도 있습니다.

이제 원형 그래프를 그려보겠습니다.

plt.figure(figsize=(7,7))

plt.title('Data Sex Rate' , fontsize=20)

plt.ylabel('Sex' , fontsize=15)

insurance['sex'].value_counts().plot.pie(autopct = '%.2f%%' , 
                                         colors = ['lightblue', 'tomato'] , 
                                         textprops = {'fontsize' : 12 , 
                                                      'weight' : 'bold'})

plt.show()
파이썬 csv 그래프 그리기 - paisseon csv geulaepeu geuligi

value_counts().plot.pie() 함수를 통해서 원 그래프를 매우 간단하게 그려볼 수 있었습니다.

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')

파이썬 csv 그래프 그리기 - paisseon csv geulaepeu geuligi

df1.index = ['월','화','수','목','금','토','일']

df1.columns.names = ['지점']

df1.index.names = ['요일']

파이썬 csv 그래프 그리기 - paisseon csv geulaepeu geuligi

fig, ax = plt.subplots(1,2)

df1.plot(kind='bar', ax=ax[0])    # bar(수직막대)

df1.plot(kind='barh', ax=ax[1])   # barh(수평막대)

파이썬 csv 그래프 그리기 - paisseon csv geulaepeu geuligi

#. Q1

# cctv 데이터를 불러오고

cctv = pd.read_csv('cctv.csv', encoding='cp949')

cctv['rate'] = round(cctv['검거'] / cctv['발생']*100,2)

파이썬 csv 그래프 그리기 - paisseon csv geulaepeu geuligi

# 각 구별 검거율의 평균이 가장 낮은 구의 각 년도별 검거율을 막대그래프로 표현

data = cctv.pivot_table(index='구', columns='년도', values='rate')

파이썬 csv 그래프 그리기 - paisseon csv geulaepeu geuligi

data.loc[data.mean(1).idxmin()].plot(kind='bar', title='관악구(검거율 평균이 가장 낮은 구) 검거율', ylim=[0,100])

plt.xticks(rotation=30)

파이썬 csv 그래프 그리기 - paisseon csv geulaepeu geuligi

#. Q2

# employment 데이터를 불러온 후

emp = pd.read_csv('employment.csv', encoding='cp949',na_values='-', index_col=0)

파이썬 csv 그래프 그리기 - paisseon csv geulaepeu geuligi

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')   # 천 단위 구분기호 제거

파이썬 csv 그래프 그리기 - paisseon csv geulaepeu geuligi

# 1) 각 근로자별로 월급여액의 년도별 증감 추이를 그래프로 ( row:년도, colums=근로자)

data1 = emp.xs('월급여액', level=1, axis=1).T

파이썬 csv 그래프 그리기 - paisseon csv geulaepeu geuligi

plt.rc('font', family='Malgun Gothic')

data1.index = data1.index.astype('int')   # 대소비교 가능한 정수형으로 변환해야 축 범위로 자동 지정

data1.plot(ylim=[0,4000])

파이썬 csv 그래프 그리기 - paisseon csv geulaepeu geuligi

# 2) 각 근로자별 초과근로시간의 평균을 구하고 막대 그래프로 비교할 수 있도록

data2 = emp.xs('초과근로시간', level=1, axis=1).dropna().mean(1)

파이썬 csv 그래프 그리기 - paisseon csv geulaepeu geuligi

data2.plot(kind = 'bar')

plt.xticks(rotation=50)

파이썬 csv 그래프 그리기 - paisseon csv geulaepeu geuligi

참고: KIC 캠퍼스 머신러닝기반의 빅데이터분석 양성과정