Anaylsis Seoul CCTV

1. 데이터 읽기

import pandas as pd

jupyter notebook을 통해 pandas 설치 방법 : !conda install -y pandas

기본 설정은 "01. Seoul_CCTV.csv" CSV 파일이 있다는 설정이다.

CCTV_Seoul = pd.read_csv("../data/01. Seoul_CCTV.csv")

그리고 잘 불러와졌는지 head()함수를 통해 알아본다.

CCTV_Seoul.head()

CCTV_Seoul.columns

columns를 통해 index를 확인할 수 있다.
Index(['기관명', '소계', '2013년도 이전', '2014년', '2015년', '2016년'], dtype='object')

CCTV_Seoul.rename(columns={CCTV_Seoul.columns[0]: "구별"}, inplace=True)

index 기관명을 구별로 변경한다.

pop_Seoul = pd.read_excel(
    "../data/01. Seoul_Population.xls", header=2,usecols="B,D,G,J,N"
)

다음 코드를 통해 "01. Seoul_Population.xls"라는 excel 파일을 불러온다.

header = 첫 행을 이름으로 쓸 건지 경정
usecols = 사용자가 원하는 행을 지정해서 불러올 수 있다

pop_Seoul.rename(
    columns={
        pop_Seoul.columns[0]: "구별",
        pop_Seoul.columns[1]: "인구수",
        pop_Seoul.columns[2]: "한국인",
        pop_Seoul.columns[3]: "외국인",
        pop_Seoul.columns[4]: "고령자",
    },
    inplace=True,
)
pop_Seoul.head()  

CCTV 데이터 훑어보기

#기존 컬럼이 없으면 추가 있으면 수정
CCTV_Seoul["최근증가율"] = (
    (CCTV_Seoul["2016년"]+ CCTV_Seoul["2015년"] + CCTV_Seoul["2014년"]) / CCTV_Seoul["2013년도 이전"] * 100
)

CCTV_Seoul.sort_values(by="최근증가율", ascending=False).head(5)

인구현황 데이터 훑어보기

pop_Seoul["구별"].unique()

unique => 한번 나온 값들이 무엇이 있는지 보여주는 코드

= array(['종로구', '중구', '용산구', '성동구', '광진구', '동대문구', '중랑구', '성북구', '강북구',
'도봉구', '노원구', '은평구', '서대문구', '마포구', '양천구', '강서구', '구로구', '금천구',
'영등포구', '동작구', '관악구', '서초구', '강남구', '송파구', '강동구'], dtype=object)

len(pop_Seoul["구별"].unique())

= 25

pop_Seoul["외국인비율"] =pop_Seoul["외국인"] / pop_Seoul["인구수"] *100
pop_Seoul["고령자비율"] =pop_Seoul["고령자"] / pop_Seoul["인구수"] *100
pop_Seoul.head()

위 코드를 통해 외국인 비율과 고령자 비율을 계산할 수 있다.

data_result.corr()

corr() : 상관계수가 0.2이상인 데이터를 비교해주는 코드

data_result["CCTV비율"]= data_result["소계"] / data_result["인구수"]
data_result["CCTV비율"] = data_result["CCTV비율"]*100

plot 그리기

import matplotlib.pyplot as plt
from matplotlib import rc


rc("font", family="Malgun Gothic")
#matplotlib inline
get_ipython().run_line_magic("matplotlib", " inline")

우선 matplotilib를 import해줘야한다.
위 코드를 실행시켜줘야 한글이 오류가 안난당!!

data_result["인구수"].plot(kind="bar", figsize=(10,10))

def drawGrapgh():
    plt.figure(figsize=(14,10))
    plt.scatter(data_result["인구수"], data_result["소계"], s = 50)
    plt.xlabel("인구수")
    plt.ylabel("CCTV")
    plt.grid(True)
    plt.show()
drawGrapgh()

def drawGrapgh():
    plt.figure(figsize=(14,10))
    plt.scatter(data_result["인구수"], data_result["소계"], s = 50, c=data_result["오차"], cmap = my_cmap)
    plt.plot(fx,f1(fx), ls="dashed", lw=3, color="g")
    
    for n in range(5):
        #상위 5개
        plt.text(
            df_sort_f["인구수"][n]* 1.02, # x좌표
            df_sort_f["소계"][n] *0.98,   # y좌표
            df_sort_f.index[n],
            fontsize=15)        #title
        # 하위 5개
        plt.text(
            df_sort_t["인구수"][n]* 1.02,
            df_sort_t["소계"][n] * 0.98,
            df_sort_t.index[n],
            fontsize=15)
    plt.xlabel("인구수")
    plt.ylabel("CCTV")
    plt.colorbar()
    plt.grid(True)
    plt.show()
drawGrapgh()


서울 cctv 공공데이터를 통해 데이터를 분석하고 시각화까지 해보았다.!

profile
문과생 데이터사이언티스트되기 프로젝트

0개의 댓글