Python (Glob)

Arsen·2022년 9월 29일
0

Python

목록 보기
7/12
post-thumbnail

glob 모듈

from glob import glob
glob('/content/drive/MyDrive/Colab Notebooks/seoul_crime/*')

파일들의 리스트를 뽑을 때 사용 파일의 경로명을 이용해서 필요한걸
뽑아올 수 있음
Google Colab으로 드라이브 마운트해서 진행했다

target_path = '/content/drive/MyDrive/Colab Notebooks/seoul_crime'
file_list = glob(target_path+'/20*.csv')
file_list
import pandas as pd
import numpy as np

crime_raw_data = pd.read_csv(file_list[0],
                             usecols=[0,1,2,3], encoding = 'euc-kr')

crime_station = crime_raw_data.pivot_table(
    crime_raw_data, index = ["구분"], columns = ["죄종", "발생검거"], aggfunc=[np.sum])

crime_station.columns = ['강간검거', '강간', '강도검거', '강도', '살인검거', '살인', '절도검거', '절도', '폭력검거', '폭력']

crime_station['year'] = 2000
crime_station.head()

파일명에서 연도를 가져오고

for each_file in file_list:
  print(each_file.split('/'))

split으로 분해하고

crime_station_t = []

for each_file in file_list:
  crime_raw_data = pd.read_csv(each_file, usecols=[0,1,2,3], encoding='euc-kr')

  crime_station = crime_raw_data.pivot_table(
      crime_raw_data, index=["구분"], columns=["죄종", "발생검거"], aggfunc=[np.sum])

  crime_station.columns = ['강간검거', '강간', '강도검거', '강도', 
                               '살인검거', '살인', '절도검거', '절도', '폭력검거', '폭력']

  crime_station['year'] = each_file.split('/')[-1][:4]

  crime_station.reset_index(inplace=True)
  crime_station_t.append(crime_station)

데이터를 구분해서 피봇테이블로 만든다

crime_total = pd.concat(crime_station_t)
crime_total.head()

concat로 합친다.

import matplotlib as mpl
import matplotlib.pyplot as plt

%config InlineBackend.figure_format = 'retina'

!apt -qq -y install fonts-nanum

import matplotlib.font_manager as fm
fontpath = '/usr/share/fonts/truetype/nanum/NanumBarunGothic.ttf'
font = fm.FontProperties(fname=fontpath, size=9)

mpl.font_manager._rebuild()
plt.rc('font', family = 'NanumBarunGothic')

한글이 나오게끔만들고

import seaborn as sns
plt.figure(figsize = (13,10))
sns.heatmap(crime_total_murder,
            annot = True, linewidths=.5, cmap='RdPu')
plt.title('2000년부터 2018년 서울시 구별 살인사건의수')
plt.autoscale()
plt.tight_layout(pad=5)
plt.show()

히트맵으로 보여지기까지 완료

profile
ML/AR/CV 공부

0개의 댓글