티스토리 뷰
데이터 보기
df=pd.read_csv('서울시 지하철 호선별 역별 시간대별 승하차 인원 정보.csv',encoding='cp949')
df.head()
df.shape
(46552, 52)
#결측치확인
df.isnull().sum()
결측치가 없다.
df['사용월'].unique()
array([202108, 202107, 202106, 202105, 202104, 202103, 202102, 202101, 202012, 202011, 202010, 202009, 202008, 202007, 202006, 202005, 202004, 202003, 202002, 202001, 201912, 201911, 201910, 201909, 201908, 201907, 201906, 201905, 201904, 201903, 201902, 201901, 201812, 201811, 201810, 201809, 201808, 201807, 201806, 201805, 201804, 201803, 201802, 201801, 201712, 201711, 201710, 201709, 201708, 201707, 201706, 201705, 201704, 201703, 201702, 201701, 201612, 201611, 201610, 201609, 201608, 201607, 201606, 201605, 201604, 201603, 201602, 201601, 201512, 201511, 201510, 201509, 201508, 201507, 201506, 201505, 201504, 201503, 201502, 201501], dtype=int64)
연월일로 구분되어 있다.
인트형이니까 str로 바꾸면 메소드를 더 많이 쓸 수 있다.
df['사용월']=df['사용월'].astype('str')
#불필요한 컬럼 삭제
df.drop(columns=['작업일자'],inplace=True)
승차/하차를 나누고 이에 대해 시간대별로 분석해보자.
공통된 칼럼은 앞에 3개 날짜, 승선지하철, 역이름 등이다.
#승차/하차 테이블 분리
#공통 컬럼 가져오기
df1=df.iloc[:,:3]
#승차 칼럼 가져오기
df2=df.iloc[:,3::2]
df2.columns=df2.columns.str.split(' ').str[0]
df2
#공통칼럼과 승차칼럼 연결하기
df_in=pd.concat([df1,df2],axis=1)
df_in
하차도 똑같은 절차를 거친다.
df3=df.iloc[:,4::2]
df3.columns.str.split(' ')
df3.columns=df3.columns.str.split(' ').str[0]
df_out=pd.concat([df1,df3],axis=1)
df_out
특정 월을 분석해보자.
8월 분석
#8월만 뽑기
df_in_202108=df_in[df_in['사용월']=='202108']
df_out_202108=df_out[df_out['사용월']=='202108']
df_in_202108
출근시간에 가장 많이 승차하는 역 보기
#출근시간에 가장 많은 사람이 승차하는 역
df_in_202108.nlargest(10,'08시-09시')[['지하철역','08시-09시']]
신림, 구로디지털단지가 많다. 역시 공장이 많아서 그런가
#출근시간에 가장 많이 하차하는 역은?
df_out_202108.nlargest(10,'09시-10시')[['지하철역','09시-10시']]
퇴근시간도 똑같다.
df_out_202108.nlargest(10,'19시-20시')[['지하철역','19시-20시']]
df_gangnam_in=df_in_202108[df_in_202108['지하철역']=='강남'].iloc[:,3:]
df_gangnam_in
df_gangnam_in=df_gangnam_in.melt()
df_gangnam_in.columns=['시간대','승차건수']
df_gangnam_in.columns.sort_values('승차건수')
df_gangnam_in
시간대별로 확인해보자.
시각화
#시간대별 승차인원 시각화하기
df_gangnam_in
plt.barh(df_gangnam_in['시간대'],df_gangnam_in['승차건수'])
plt.show()
#시간대별 승차 현황
df_in_202108_agg=df_in_202108.copy()
#인덱스 변경
df_in_202108_agg.index=df_in_202108_agg['지하철역']
df_in_202108_agg
df_in_202108_agg.drop(columns=['사용월','호선명','지하철역'],inplace=True)
df_in_202108_agg.loc['sum']=df_in_202108_agg.apply('sum',axis=0)
df_in_202108_agg['sum']=df_in_202108_agg.apply('sum',axis=1)
df_in_202108_agg
각 행과 열의 합계를 구해보자.
s_in=df_in_202108_agg.loc['sum'][:-1].sort_values()
s_in=s_in.sort_index()
s_in
x=s_in.index
y=s_in.values
plt.bar(x,y)
plt.xticks(rotation=90)
plt.show()
퇴근시간과 출근시간에 가장 많다.
df_in_202108_agg['sum'][:-1].sort_values(ascending=False).to_frame()
df_out_202108_agg=df_out_202108.copy()
df_out_202108_agg.index=df_out_202108_agg['지하철역']
df_out_202108_agg.drop(columns=['사용월','호선명','지하철역'],inplace=True)
df_out_202108_agg.loc['sum']=df_out_202108_agg.apply('sum',axis=0)
df_out_202108_agg['sum']=df_out_202108_agg.apply('sum',axis=1)
df_out_202108_agg.loc['sum'].sort_values()
df_out_202108_agg['sum'][:-1].sort_values(ascending=False)[:10].to_frame()
강남이 가장 많다.
'새싹 > 새싹데이터' 카테고리의 다른 글
18. 내장함수, 문자/숫자/날짜 연산 이해 (0) | 2022.05.20 |
---|---|
16. SQL 스키마 생성하고 테이블 데이터 탐색하기 (0) | 2022.05.18 |
14. 서울시 생필품 농축수산물 가격 정보 분석 (0) | 2022.05.11 |
13. 서울시 공공자전거 이용 현황 (0) | 2022.05.10 |
12. 서울시 코로나 19현황 분석 (0) | 2022.05.08 |
- Total
- Today
- Yesterday
- 일본어
- 여인권
- c++
- 회계
- 통계
- 파이썬
- 티스토리챌린지
- 류근관
- stl
- 데이터분석
- 코딩테스트
- 강화학습
- 열혈프로그래밍
- C
- 사회심리학
- 인지부조화
- 일본어문법무작정따라하기
- 심리학
- 백준
- jlpt
- 일문따
- 통계학
- 보세사
- K-MOOC
- 오블완
- C/C++
- Python
- 뇌와행동의기초
- 윤성우
- 인프런
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |