0. 데이터 가져오기
다음의 책을 참조하였습니다.
지하철 데이터를 다운받기 위해서 https://pay.tmoney.co.kr/index.dev 에 접속합니다.
데이터를 다운 받습니다.
1 ) subwayfee.csv 파일을 생성하겠습니다.
다운로드 받은 엑셀 파일을 열어 '지하철 유무임별 이용현황' tab으로 이동합니다.
pandas로 불러와서 int로 편하게 바꾸기 위해서 ctrl + F 로 콤마를 찾아 제거합니다.
이후, 작업일시 (I)는 사용하지 않으므로 삭제합니다.
2 ) subwaytime.csv 파일을 생성하겠습니다.
다운로드 받은 엑셀 파일을 열어 '지하철 시간대별 이용현황' tab으로 이동합니다.
pandas로 불러와서 int로 편하게 바꾸기 위해서 ctrl + F 로 콤마를 찾아 제거합니다.
이후, 작업일시(BA)는 사용하지 않으므로 삭제합니다.
1. subwayfee 데이터 살펴보기
import pandas as pd
data = pd.read_csv('/모두의 데이터 분석 with 파이썬/Unit4 subwayfee.csv', encoding='cp949')
# 문자열의 값을 정수로 바꿔줍니다.
data.loc[:,['유임승차','유임하차','무임승차','무임하차']].astype(int)
# 유임승차비율 column을 생성합니다.
data['유임승차비율'] = data['유임승차'] / (data['유임승차'] + data['무임승차'])
2. 유임 승차 비율이 가장 높은 역은 어디일까?
# data의 '유임승차비율' column을 기준으로 값을 정렬해보자
data.sort_values(by=['유임승차비율'], axis=0, ascending=False)
0인 값이 있기 때문에 요런 column은 제거해주자.
data = data[ data['유임승차비율'] != 1 ]
data.sort_values(by=['유임승차비율'], axis=0, ascending=False)
첫 번째 행을 확인해보니, 유임승차와 무임승차의 값이 다른 행과 차이나기 때문에 결과가 유의미하지 않다고 느껴진다.
따라서 유임승차 + 무임승차 값이 100,000 이상의 값만 남겨두고 나머지는 제거하자.
data = data[ (data['유임승차'] + data['무임승차']) > 100000 ]
data.sort_values(by=['유임승차비율'], axis=0, ascending=False)
결과 : 홍대입구에서의 유임승차비율이 가장 높음을 확인할 수 있었다 !
3. 유무임 승하차 인원이 가장 많은 역은 어디일까?
data.loc[data['유임승차'] == max(data['유임승차']), ['호선명', '지하철역', '유임승차'] ]
=> 유임승차 인원이 가장 많은 지역은 강남역이다 !
그럼 for문을 이용해서 유임승차, 유임하차, 무임승차, 무임하차인원이 가장 많은 곳을 확인해보자.
max_list = ['유임승차', '유임하차', '무임승차', '무임하차']
for col_name in max_list :
display(data.loc[data[col_name]==max(data[col_name]), ['호선명', '지하철역', col_name] ])
4. subwaytime 데이터 살펴보기
import csv
data = pd.read_csv('/content/drive/My Drive/도서 참고/모두의 데이터 분석 with 파이썬/Unit4 subwaytime.csv', encoding='cp949')
data
원본 데이터가 요렇게 생겼기 때문에
dataframe으로 불러오면 Unnamed : n 이 생기고, index=0에 승차와 하차가 반복되어 발생하였다.
Unnamed는 이전 열 이름 + '하차' 로 이름을 붙이고, index=0은 삭제한다.
# column을 list로 받은 뒤,
col_name = list(data.columns)
# index >= 4이고 숫자가 홀수이면 column명을 변경한다
for i in range(len(col_name)) :
if i >=4 and i % 2 == 1 :
col_name[i] = col_name[i-1]+'하차'
# 변경된 col_name을 data.columns에 저장한다
data.columns = col_name
# index=0 삭제
data.drop(index=0, inplace=True)
data
5. 출근 시간대 사람들이 가장 많이 타고 내리는 역은 어디일까?
출근시간승차, 하차 column을 새로 생성한다. 그리고 출근시간은 7시 ~ 9시로 정하였다 !
data['출근시간승차'] = data['07:00:00~07:59:59'].astype(int) + data['08:00:00~08:59:59'].astype(int)
data['출근시간하차'] = data['07:00:00~07:59:59하차'].astype(int) + data['08:00:00~08:59:59하차'].astype(int)
다음을 하나씩 실행하여 출력해보면,
data.loc[data['출근시간승차'] == max(data['출근시간승차']),['호선명', '지하철역','출근시간승차'] ]
data.loc[data['출근시간하차'] == max(data['출근시간하차']),['호선명', '지하철역','출근시간하차'] ]
요런 결과가 나온다 !
+ 보너스 ) 밤 11시에 사람들이 가장 많이 타고 내리는 역은 어디일까?
# 가장 많이 타는 역
max_11 = max(data['23:00:00~23:59:59'].astype(int))
show_col = ['호선명', '지하철역','23:00:00~23:59:59']
data.loc[data['23:00:00~23:59:59'].astype(int) == max_11, show_col]
# 가장 많이 내리는 역
max_11 = max(data['23:00:00~23:59:59하차'].astype(int))
show_col = ['호선명', '지하철역','23:00:00~23:59:59하차']
data.loc[data['23:00:00~23:59:59하차'].astype(int) == max_11, show_col]
6. 시간대별로 사람들이 가장 많이 타고 내리는 역은 어디일까?
import csv
import matplotlib.pyplot as plt
f = open('/모두의 데이터 분석 with 파이썬/Unit4 subwaytime.csv', encoding='cp949')
data = csv.reader(f)
# 처음 두 줄은 사용하지 않는다
next(data)
next(data)
# 저장할 변수 개수만큼 미리 만들어 둔다
mx = [0] * 24
mx_station = ['']*24
for row in data :
# map함수를 사용하여 row의 4번째 열부터 모두 int로 변경한다
row[4:] = map(int, row[4:])
for j in range(24):
# 전체 행을 돌면서 max값이 바뀔 때 마다 바꿔준다
b = row[5 + j * 2]
if b > mx[j] :
mx[j] = b
mx_station[j] = row[3] + '( ' + str(j+4) + ' )'
plt.rcParams['figure.figsize'] = [10,8]
plt.rc('font', family = 'NanumBarunGothic')
plt.bar(range(24), mx, color='b')
plt.xticks(range(24), mx_station, rotation=90)
plt.show()
강남, 홍대입구, 신림이 승하차 인원이 많은 것을 알 수 있었습니다.
'Programming > Python' 카테고리의 다른 글
f-string (0) | 2021.05.31 |
---|---|
통계분석_성별/혼인/피부/가격/재사용 등 (0) | 2020.05.24 |
[ 데이터 분석 실무 with python ] 1. 사드 배치의 영향으로 중국인 관광객이 얼마나 줄었을까? (0) | 2020.05.23 |
[ 모두의 데이터 분석 with python ] 2. 인구 데이터 (0) | 2020.05.05 |
[ 모두의 데이터 분석 with python ] 1. 기온 데이터 (0) | 2020.05.05 |