서울 생활이동 데이터 분석
서울시 생활이동 데이터란?
언제 어디서 어디로 얼마나 이동하였는지, 소요시간은 얼마나 걸렸는지에 대한 데이터
※ 동네산책과 같이 특정지점에서 체류시간이 짧은 이동 및 매우 가까운 근거리 이동은 제외
데이터 살펴보기
데이터에 적혀있는 항목은 아래와 같이 구성되어 있음
- 대상연월 : 데이터의 기록 날짜
- 요일 : 요일
- 도착 시간 : 도착 시군구 코드에 도착한 시간
- 출발 시군구 코드 : 추후에 서울시에서 제공한 시군구로 변환 (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 |
댓글