반응형

안녕하세요, 츄르 사려고 코딩하는 집사! 코집사입니다.


1. 빅데이터 분석 프로젝트 데이터 시각화 2일 차

> 하드 코딩을 한 탓에 코드량이 점점 늘어나고 있다.

> 어느 정도 진행하고, 나중에 코드를 줄이던가 해야지.

2. BigZAMi를 이용한 공공 빅데이터 분석

> 파이썬으로 먼저 코드를 할 줄 알고 툴을 이용해서 하는게 더 도움이 되지 않을까 생각한다.

> 거의 툴키디가 되는 느낌.


빅데이터 분석 프로젝트 데이터 시각화 2일 차


#라이브러리 불러오기
import pandas as pd 
import folium # 지도 불러오기 위한 라이브러리
import matplotlib.pyplot as plt

#plot 한글 깨짐
plt.rc('font', family='Malgun Gothic')

#csv 파일 불러오기
parking_lot_wanju = pd.read_csv("C:/Users/User/Desktop/project/완주주차장.csv", encoding="CP949")
parking_lot_jeonju = pd.read_csv("C:/Users/User/Desktop/project/전주주차장.csv", encoding="CP949")
localspot= pd.read_csv("C:/Users/User/Desktop/project/로컬푸드위치.csv", encoding="CP949")

#완주주차장 컬럼변수 확인
parking_lot_wanju.columns

#완주주차장 shape 확인
parking_lot_wanju.shape

#전주주차장 컬럼변수 확인
parking_lot_jeonju.columns

#전주주차장 shape 확인
parking_lot_jeonju.shape

#로컬푸드 컬럼변수 확인
localspot.columns

# shape 확인
localspot.shape

#완주주차장 컬럼변수와 전주주차장 컬럼변수가 일치한지 확인
#데이터프레임을 합치기 위해서 사용
parking_lot_wanju.columns == parking_lot_jeonju.columns

#데이터프레임 합치기
parking_lot = pd.concat([parking_lot_wanju,parking_lot_jeonju])
parking_lot.shape #데이터 프레임 합쳐진 결과 확인

#필요없는 컬럼변수 삭제
parking_lot = parking_lot.drop(["소재지도로명주소","부제시행구분","운영요일","평일운영시작시각","평일운영종료시각","토요일운영시작시각","토요일운영종료시각","공휴일운영시작시각","공휴일운영종료시각"], axis=1)
localspot = localspot.drop(["번호","지역","시군구","사업장명","개장일"], axis=1)

################################################시각화##################################################
#주차장 위도, 경도를 리스트에 저장
parking_lot_lat = [] #주차장 위도
parking_lot_lon = [] #주차장 경도
parking_lot_lat = pd.DataFrame(parking_lot['위도'])
parking_lot_lon = pd.DataFrame(parking_lot['경도'])

#loc를 사용하게 되면, concat을 하면서 no가 섞여 1~20까지 위도, 경도가 2개씩 나오므로, iloc를 통해 사용
#이건 나중에 지워도 됩니다.
for i in range(len(parking_lot_lat)) :
    m = folium.Map([parking_lot_lat.iloc[i], parking_lot_lon.iloc[i]],
                  tiles = "OpenStreetMap",
                  zoom_start = 10)

#지도에 써클 및 마커 생성
for i in range(len(parking_lot_lat)) :
    #주차장 써클
    folium.CircleMarker(location=[parking_lot_lat.iloc[i], parking_lot_lon.iloc[i]],
                       radius = 5,
                       color = "#FF0000",
                       fil_color = "#ffffff",
                       popup = "parking").add_to(m)
    
    #주차장 마커
    folium.Marker(location=[parking_lot_lat.iloc[i], parking_lot_lon.iloc[i]],
                 icon = folium.Icon(color='red')).add_to(m)
    
for i in localspot.index :
    #로컬푸드 써클
    folium.CircleMarker(location=[localspot['위도'][i], localspot['경도'][i]],
                       radius = 5,
                       color = "#0000FF",
                       fil_color = "#ffffff",
                       popup = "local").add_to(m)

    #로컬푸드 마커
    folium.Marker(location=[localspot['위도'][i], localspot['경도'][i]],
                 icon = folium.Icon(color='blue')).add_to(m)

m

#덕진구, 완산구, 완주군 유입/유출 원형그래프 시각화
#각 csv 파일에 쉼표 제거
덕진구_주중=pd.read_csv('C:/Users/User/Desktop/project/덕진구주중.csv',encoding="CP949")
덕진구_주말=pd.read_csv('C:/Users/User/Desktop/project/덕진구주말.csv',encoding="CP949")
완산구_주중=pd.read_csv('C:/Users/User/Desktop/project/완산구주중.csv',encoding="CP949")
완산구_주말=pd.read_csv('C:/Users/User/Desktop/project/완산구주말.csv',encoding="CP949")
완주군_주중=pd.read_csv('C:/Users/User/Desktop/project/완주군주중.csv',encoding="CP949")
완주군_주말=pd.read_csv('C:/Users/User/Desktop/project/완주군주말.csv',encoding="CP949")

덕진구_주중_유입 = list(덕진구_주중['전주 덕진구 유입'])
덕진구_주중_유출 = list(덕진구_주중['전주 덕진구 유출'])
덕진구_주중_지역 = list(덕진구_주중['지역'])
덕진구_주말_유입 = list(덕진구_주말['전주 덕진구 유입'])
덕진구_주말_유출 = list(덕진구_주말['전주 덕진구 유출'])
덕진구_주말_지역 = list(덕진구_주말['지역'])
완산구_주중_유입 = list(완산구_주중['전주 완산구 유입'])
완산구_주중_유출 = list(완산구_주중['전주 완산구 유출'])
완산구_주중_지역 = list(완산구_주중['지역'])
완산구_주말_유입 = list(완산구_주말['전주 완산구 유입'])
완산구_주말_유출 = list(완산구_주말['전주 완산구 유출'])
완산구_주말_지역 = list(완산구_주말['지역'])
완주군_주중_유입 = list(완주군_주중['완주군 유입'])
완주군_주중_유출 = list(완주군_주중['완주군 유출'])
완주군_주중_지역 = list(완주군_주중['지역'])
완주군_주말_유입 = list(완주군_주말['완주군 유입'])
완주군_주말_유출 = list(완주군_주말['완주군 유출'])
완주군_주말_지역 = list(완주군_주말['지역'])

#덕진구 주중 유입 원형그래프
plt.rcParams["font.size"] = 12 #원형그래프 글자 크기ㅅ4
plt.figure(figsize=(15, 15)) #원형그래프 크기
plt.pie(덕진구_주중_유입, labels=덕진구_주중_지역, autopct='%1.1f%%', shadow=True, startangle=90)
plt.title('덕진구 주중 유입 현황')
plt.show()

##덕진구 주중 유출 원형그래프
plt.rcParams["font.size"] = 12 #원형그래프 글자 크기
plt.figure(figsize=(15, 15)) #원형그래프 크기
plt.pie(덕진구_주중_유출, labels=덕진구_주중_지역, autopct='%1.1f%%', shadow=True, startangle=90)
plt.title('덕진구 주중 유출 현황')
plt.show()

#덕진구 주말 유입 원형그래프
plt.rcParams["font.size"] = 12 #원형그래프 글자 크기ㅅ4
plt.figure(figsize=(15, 15)) #원형그래프 크기
plt.pie(덕진구_주말_유입, labels=덕진구_주말_지역, autopct='%1.1f%%', shadow=True, startangle=90)
plt.title('덕진구 주말 유입 현황')
plt.show()

##덕진구 주말 유출 원형그래프
plt.rcParams["font.size"] = 12 #원형그래프 글자 크기
plt.figure(figsize=(15, 15)) #원형그래프 크기
plt.pie(덕진구_주말_유출, labels=덕진구_주말_지역, autopct='%1.1f%%', shadow=True, startangle=90)
plt.title('덕진구 주말 유출 현황')
plt.show()

#완산구 주중 유입 원형그래프
plt.rcParams["font.size"] = 12 #원형그래프 글자 크기ㅅ4
plt.figure(figsize=(15, 15)) #원형그래프 크기
plt.pie(완산구_주중_유입, labels=완산구_주중_지역, autopct='%1.1f%%', shadow=True, startangle=90)
plt.title('덕진구 주말 유입 현황')
plt.show()

##완산구 주중 유출 원형그래프
plt.rcParams["font.size"] = 12 #원형그래프 글자 크기
plt.figure(figsize=(15, 15)) #원형그래프 크기
plt.pie(완산구_주중_유출, labels=완산구_주중_지역, autopct='%1.1f%%', shadow=True, startangle=90)
plt.title('완산구 주중 유출 현황')
plt.show()

#완산구 주말 유입 원형그래프
plt.rcParams["font.size"] = 12 #원형그래프 글자 크기ㅅ4
plt.figure(figsize=(15, 15)) #원형그래프 크기
plt.pie(완산구_주말_유입, labels=완산구_주말_지역, autopct='%1.1f%%', shadow=True, startangle=90)
plt.title('완산구 주말 유입 현황')
plt.show()

##완산구 주말 유출 원형그래프
plt.rcParams["font.size"] = 12 #원형그래프 글자 크기
plt.figure(figsize=(15, 15)) #원형그래프 크기
plt.pie(완산구_주말_유출, labels=완산구_주말_지역, autopct='%1.1f%%', shadow=True, startangle=90)
plt.title('완산구 주말 유출 현황')
plt.show()

#완주군 주중 유입 원형그래프
plt.rcParams["font.size"] = 12 #원형그래프 글자 크기ㅅ4
plt.figure(figsize=(15, 15)) #원형그래프 크기
plt.pie(완주군_주중_유입, labels=완주군_주중_지역, autopct='%1.1f%%', shadow=True, startangle=90)
plt.title('완주군 주말 유입 현황')
plt.show()

##완주군 주중 유출 원형그래프
plt.rcParams["font.size"] = 12 #원형그래프 글자 크기
plt.figure(figsize=(15, 15)) #원형그래프 크기
plt.pie(완주군_주중_유출, labels=완주군_주중_지역, autopct='%1.1f%%', shadow=True, startangle=90)
plt.title('완주군 주중 유출 현황')
plt.show()

#완주군 주말 유입 원형그래프
plt.rcParams["font.size"] = 12 #원형그래프 글자 크기ㅅ4
plt.figure(figsize=(15, 15)) #원형그래프 크기
plt.pie(완주군_주말_유입, labels=완주군_주말_지역, autopct='%1.1f%%', shadow=True, startangle=90)
plt.title('완주군 주말 유입 현황')
plt.show()

##완주군 주말 유출 원형그래프
plt.rcParams["font.size"] = 12 #원형그래프 글자 크기
plt.figure(figsize=(15, 15)) #원형그래프 크기
plt.pie(완주군_주말_유출, labels=완주군_주말_지역, autopct='%1.1f%%', shadow=True, startangle=90)
plt.title('완주군 주말 유출 현황')
plt.show()

#덕진구 유입(주중)
덕진구_주중_유입_버블 = px.scatter(data_frame=덕진구_주중,x='전주 덕진구 유입순위', y='전주 덕진구 유입', color='지역'
                 ,hover_name='지역', size='전주 덕진구 유입',size_max=100)
#덕진구 유출(주중)
덕진구_주중_유출_버블 = px.scatter(data_frame=덕진구_주중,x='전주 덕진구 유출순위', y='전주 덕진구 유출', color='지역'
                 ,hover_name='지역', size='전주 덕진구 유출',size_max=100)

#덕진구 유입(주말)
덕진구_주말_유입_버블=px.scatter(data_frame=덕진구_주말,x='전주 덕진구 유입순위', y='전주 덕진구 유입', color='지역'
                 ,hover_name='지역', size='전주 덕진구 유입',size_max=100)
#덕진구 유출(주말)
덕진구_주말_유출_버블=px.scatter(data_frame=덕진구_주말,x='전주 덕진구 유출순위', y='전주 덕진구 유출', color='지역'
                 ,hover_name='지역', size='전주 덕진구 유출',size_max=100)

덕진구_주중_유입_버블.show() #덕진구 유입(주중)
덕진구_주중_유출_버블.show() #덕진구 유출(주중)

덕진구_주말_유입_버블.show()  #덕진구 유입(주말)
덕진구_주말_유출_버블.show()  #덕진구 유출(주말)

#완산구 유입(주중)
완산구_주중_유입_버블 = px.scatter(data_frame=완산구_주중,x='유입순위', y='전주 완산구 유입', color='지역'
                 ,hover_name='지역', size='전주 완산구 유입',size_max=100)
#완산구 유출(주중)
완산구_주중_유출_버블 = px.scatter(data_frame=완산구_주중,x='유출순위', y='전주 완산구 유출', color='지역'
                 ,hover_name='지역', size='전주 완산구 유출',size_max=100)

#완산구 유입(주말)
완산구_주말_유입_버블 = px.scatter(data_frame=완산구_주말,x='유입순위', y='전주 완산구 유입', color='지역'
                 ,hover_name='지역', size='전주 완산구 유입',size_max=100)
#완산구 유출(주말)
완산구_주말_유출_버블 = px.scatter(data_frame=완산구_주말,x='유출순위', y='전주 완산구 유출', color='지역'
                 ,hover_name='지역', size='전주 완산구 유출',size_max=100)

완산구_주중_유입_버블.show() #완산구 유입(주중)
완산구_주중_유출_버블.show() #완산구 유출(주중)

완산구_주말_유입_버블.show()  #완산구 유입(주말)
완산구_주말_유출_버블.show()  #완산구 유출(주말)

#완주군 유입(주중)
완주군_주중_유입_버블 = px.scatter(data_frame=완주군_주중,x='완주군 유입순위', y='완주군 유입', color='지역'
                 ,hover_name='지역', size='완주군 유입',size_max=100)
#완주군 유출(주중)
완주군_주중_유출_버블 = px.scatter(data_frame=완주군_주중,x='완주군 유출순위', y='완주군 유출', color='지역'
                 ,hover_name='지역', size='완주군 유출',size_max=100)

#완주군 유입(주말)
완주군_주말_유입_버블 = px.scatter(data_frame=완주군_주말,x='완주군 유입순위', y='완주군 유입', color='지역'
                 ,hover_name='지역', size='완주군 유입',size_max=100)
#완주군 유출(주말)
완주군_주말_유출_버블 = px.scatter(data_frame=완주군_주말,x='완주군 유출순위', y='완주군 유출', color='지역'
                 ,hover_name='지역', size='완주군 유출',size_max=100)

완주군_주중_유입_버블.show() #완주군 유입(주중)
완주군_주중_유출_버블.show() #완주군 유출(주중)

완주군_주말_유입_버블.show()  #완주군 유입(주말)
완주군_주말_유출_버블.show()  #완주군 유출(주말)

plt.bar(range(10), 덕진구_주중_유입)
plt.bar([i for i in range(10)], 덕진구_주중_유출, bottom=덕진구_주중_유입)
ax = plt.subplot()
plt.title('전주시 덕진구 주중 유입유출', fontsize=15)
plt.ylabel('유입유출수', fontsize=10)
ax.set_xticks(range(10))
ax.set_xticklabels(덕진구_주중_지역, fontsize=10, rotation= 45)

plt.bar(range(10), 덕진구_주말_유입)
plt.bar([i for i in range(10)], 덕진구_주말_유출, bottom=덕진구_주말_유입)
ax = plt.subplot()
plt.title('전주시 덕진구 주말 유입유출', fontsize=15)
plt.ylabel('유입유출수', fontsize=10)
ax.set_xticks(range(10))
ax.set_xticklabels(덕진구_주말_지역, fontsize=10, rotation= 45)

plt.bar(range(10), 완산구_주중_유입)
plt.bar([i for i in range(10)], 완산구_주중_유출, bottom=완산구_주중_유입)
ax = plt.subplot()
plt.title('전주시 완산구 주중 유입유출', fontsize=15)
plt.ylabel('유입유출수', fontsize=10)
ax.set_xticks(range(10))
ax.set_xticklabels(완산구_주중_지역, fontsize=10, rotation= 45)

plt.bar(range(10), 완산구_주말_유입)
plt.bar([i for i in range(10)], 완산구_주말_유출, bottom=완산구_주말_유입)
ax = plt.subplot()
plt.title('전주시 완산구 주말 유입유출', fontsize=15)
plt.ylabel('유입유출수', fontsize=10)
ax.set_xticks(range(10))
ax.set_xticklabels(완산구_주말_지역, fontsize=10, rotation= 45)

plt.bar(range(10), 완주군_주중_유입)
plt.bar([i for i in range(10)], 완주군_주중_유출, bottom=완주군_주중_유입)
ax = plt.subplot()
plt.title('완주군 주중 유입유출', fontsize=15)
plt.ylabel('유입유출수', fontsize=10)
ax.set_xticks(range(10))
ax.set_xticklabels(완주군_주중_지역, fontsize=10, rotation= 45)

plt.bar(range(10), 완주군_주말_유입)
plt.bar([i for i in range(10)], 완주군_주말_유출, bottom=완주군_주말_유입)
ax = plt.subplot()
plt.title('완주군 주말 유입유출', fontsize=15)
plt.ylabel('유입유출수', fontsize=10)
ax.set_xticks(range(10))
ax.set_xticklabels(완주군_주말_지역, fontsize=10, rotation= 45)



반응형

'자기개발 > TIL' 카테고리의 다른 글

TIL(Today I Learned) 20200919 ~ 20200921  (0) 2020.09.21
TIL(Today I Learned) 20200918  (0) 2020.09.18
TIL(Today I Learned) 20200917  (0) 2020.09.18
TIL(Today I Learned) 20200916  (0) 2020.09.16
TIL(Today I Learned) 20200914  (0) 2020.09.14
TIL(Today I Learned) 20200912 - 20200913  (0) 2020.09.14
TIL(Today I Learned) 20200911  (0) 2020.09.11
TIL(Today I Learned) 20200910  (0) 2020.09.10
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기