본문 바로가기
데이터 분석

서울 생활이동 데이터 분석 (1)

by 너굴맨_ 2021. 11. 15.

서울 생활이동 데이터 분석

서울시 생활이동 데이터란?

언제 어디서 어디로 얼마나 이동하였는지, 소요시간은 얼마나 걸렸는지에 대한 데이터

 

※ 동네산책과 같이 특정지점에서 체류시간이 짧은 이동 및 매우 가까운 근거리 이동은 제외

 

출처: 서울열린데이터광장
출처: 서울 생활이동데이터_사용설명서

 

데이터 살펴보기

데이터에 적혀있는 항목은 아래와 같이 구성되어 있음

- 대상연월 : 데이터의 기록 날짜
- 요일 : 요일
- 도착 시간 : 도착 시군구 코드에 도착한 시간
- 출발 시군구 코드 : 추후에 서울시에서 제공한 시군구로 변환 (ex) 11010 -> "서울특별시 종로구")
- 도착 시군구 코드 : 추후에 서울시에서 제공한 시군구로 변환 (ex) 11010 -> "서울특별시 종로구")
- 성별
- 나이 : 5세 별로 끊어서 기록
- 이동유형 : H: 야간상주지, W: 주간상주지, E: 기타지역
- 평균 이동시간
- 이동인구 : KT의 휴대폰 데이터를 이용하여 한 개 이동의 출발지에서 도착지 간 이동한 인구수

 

1. 시간별 데이터를 하나의 데이터로 설정

# upload data
data_1 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_01.csv", encoding='cp949')
data_2 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_02.csv", encoding='cp949')
data_3 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_03.csv", encoding='cp949')
data_4 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_04.csv", encoding='cp949')
data_5 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_05.csv", encoding='cp949')
data_6 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_06.csv", encoding='cp949')
data_7 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_07.csv", encoding='cp949')
data_8 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_08.csv", encoding='cp949')
data_9 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_09.csv", encoding='cp949')
data_10 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_10.csv", encoding='cp949')
data_11 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_11.csv", encoding='cp949')
data_12 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_12.csv", encoding='cp949')
data_13 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_13.csv", encoding='cp949')
data_14 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_14.csv", encoding='cp949')
data_15 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_15.csv", encoding='cp949')
data_16 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_16.csv", encoding='cp949')
data_17 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_17.csv", encoding='cp949')
data_18 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_18.csv", encoding='cp949')
data_19 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_19.csv", encoding='cp949')
data_20 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_20.csv", encoding='cp949')
data_21 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_21.csv", encoding='cp949')
data_22 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_22.csv", encoding='cp949')
data_23 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_23.csv", encoding='cp949')
data_24 = pd.read_csv("C:\\Users\\USER\\Desktop\\Project\Seoul_population_movement\\생활이동_자치구_202109\\sep_mov_24.csv", encoding='cp949')
## 데이터 합치기
data = pd.concat([data_1, data_2, data_3,data_4,data_5,data_6,data_7,data_8,data_9,data_10,data_11,data_12])
temp = pd.concat([data_13,data_14,data_15,data_16,data_17,data_18,data_19,data_20,data_21,data_22,data_23,data_24])
data = pd.concat([data,temp])
temp = None

 

2. 데이터 출발 시군구 코드, 도착 시군구 코드를 실제 지역구로 변환

# 구 코드
gu_code = pd.read_excel("C:\\Users\\USER\\Desktop\\Project\\Seoul_population_movement\\replace_code.xlsx")

gu_code.head(10)

# 구 코드를 이용해서 위의 자치구 코드를 실제 지역으로 변환
for i in range(0,len(gu_code)):
    data['출발 시군구 코드'] = data['출발 시군구 코드'].replace(gu_code['시군구'][i], gu_code['full name'][i])
    data['도착 시군구 코드'] = data['도착 시군구 코드'].replace(gu_code['시군구'][i], gu_code['full name'][i])

 

3. 이동 유형을 WH (출퇴근), HW(출퇴근)으로 하고 나머지를 이동으로 표기

data['이동유형'] = data['이동유형'].replace('WH', '출퇴근')
data['이동유형'] = data['이동유형'].replace('HW', '출퇴근')
data['이동유형'] = [re.sub('[A-Za-z]','이동',s) for s in data['이동유형']]
data['이동유형'] = data['이동유형'].replace('이동이동', '이동') # 이동문자열 중복으로 인해 변환

 

4. 이동인구(합)의 *를 알수없음으로 변경

data['이동인구(합)'] = data['이동인구(합)'].replace('*', '알수없음')

 

5. 컬럼명을 변경

data.columns = ['날짜','요일','도착한 시간','출발지','도착지','성별','나이','이동유형','이동 시간(분)', '이동인구']

6.  저장

data.to_csv("C:\\Users\\USER\\Desktop\\Project\\Seoul_population_movement\\seoul_sep_movement.csv")

 

데이터 출처

https://data.seoul.go.kr/dataVisual/seoul/seoulLivingMigration.do

 

열린데이터광장 메인

데이터분류,데이터검색,데이터활용

data.seoul.go.kr

 

'데이터 분석' 카테고리의 다른 글

서울 생활이동 데이터 분석 (3) - QGIS  (0) 2021.11.17
서울 생활이동 데이터 분석 (2)  (0) 2021.11.17
세계 GDP 분석(4)  (0) 2021.11.02
세계 GDP 분석 (3)  (0) 2021.11.01
세계 GDP 분석 (2)  (0) 2021.11.01

댓글