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_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
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 공공데이터를 통해 데이터를 분석하고 시각화까지 해보았다.!