05_Pandas

07_서울교통공사_에스컬레이터 설치 정보(1~9호선)

chuu_travel 2025. 3. 27. 22:26
728x90
서울교통공사 에스컬레이터 설치 정보 전처리 및 csv로 저장
(1~8호선 정보 + 9호선 정보)

 

import pandas as pd

 

01. 1~8호선 정보

...

서울교통공사_에스컬레이터 설치 정보(1-8호선).xlsx

 

# 첫 1행과 마지막 1행을 제외하고 엑셀파일을 읽어들임
df = pd.read_excel("./data/서울교통공사_에스컬레이터 설치 정보(1-8호선).xlsx", header = 1, skipfooter = 1)

 

df.head()

 

 

df.tail()

 

df.columns
Index(['연번\n(총괄정렬용)', '연번', '호선', '역명', '호기', '승강기번호', '설치위치', '운행구간(자체조사)',
       '운행방향'],
      dtype='object')

 

# 호선 -> 노선명
df.columns = ['연번\n(총괄정렬용)', '연번', '노선명', '역명', '호기', '승강기번호', '설치위치', '운행구간(자체조사)',
       '운행방향']
df.dtypes
연번\n(총괄정렬용)    float64
연번               int64
노선명             object
역명              object
호기               int64
승강기번호           object
설치위치            object
운행구간(자체조사)      object
운행방향            object
dtype: object

 

 

# 데이터 타입을 확인
type(df.iloc[0, 0])
numpy.float64

 

# string타입으로 변경
df["노선명"] = df["노선명"].astype(str)
# (연)을 모두 삭제
df["노선명"]  = df["노선명"].str.replace("(연)", "")

 

df["노선명"].unique()
array(['1', '2', '3', '4', '5', '6', '7', '8'], dtype=object)

 

# 호선명 뒤에 "호선" 붙이기
df["노선명"] = df["노선명"] + "호선"
df.columns = ['연번\n(총괄정렬용)', '연번', '노선명', '역명', '호기', '승강기번호', '설치위치', '운행구간(자체조사)',
       '운행방향']
# 불필요한 컬럼 삭제
df = df.drop(columns=["연번\n(총괄정렬용)", "연번", "승강기번호", "설치위치", "운행구간(자체조사)", "운행방향"])

 

df.head()

 

df.tail()

 

# 역명 뒤의 (숫자) 삭제
for i in range(1, 10):
    df["역명"] = df["역명"].str.replace(f'({i})', '')
df.head()

df["노선명"].unique()
array(['1호선', '2호선', '3호선', '4호선', '5호선', '6호선', '7호선', '8호선'],
      dtype=object)

 

df["노선명"].str.replace("(연)", "")
0       1호선
1       1호선
2       1호선
3       1호선
4       1호선
       ... 
1866    8호선
1867    8호선
1868    8호선
1869    8호선
1870    8호선
Name: 노선명, Length: 1871, dtype: object

 

# 노선명 8호선 뒤의 (연) 삭제
df["노선명"] = df["노선명"].str.replace("(연)", "")
df.head()

 

 

df["역명"].unique()
array(['서울역', '시청', '종각', '종로3가', '동대문', '동묘앞', '제기동', '청량리', '을지로입구',
       '을지로4가', '동대문역사문화공원', '신당', '상왕십리', '왕십리', '한양대', '뚝섬', '성수', '용두',
       '건대입구', '구의', '강변', '잠실나루', '잠실', '잠실새내', '종합운동장', '삼성', '선릉',
       '역삼', '교대', '서초', '방배', '사당', '낙성대', '서울대입구', '봉천', '신림', '신대방',
       '구로디지털단지', '대림', '신도림', '양천구청', '신정네거리', '문래', '영등포구청', '당산', '합정',
       '홍대입구', '신촌', '이대', '아현', '충정로', '구파발', '연신내', '불광', '녹번', '독립문',
       '경복궁', '안국', '을지로3가', '동대입구', '약수', '금호', '옥수', '압구정', '신사',
       '고속터미널', '남부터미널', '양재', '매봉', '도곡', '대치', '학여울', '대청', '일원', '수서',
       '가락시장', '경찰병원', '오금', '당고개', '상계', '노원', '창동', '쌍문', '수유', '미아',
       '미아사거리', '길음', '성신여대입구', '한성대입구', '혜화', '충무로', '명동', '회현', '삼각지',
       '신용산', '이촌', '총신대입구', '남태령', '방화', '김포공항', '송정', '마곡', '우장산', '화곡',
       '까치산', '신정', '목동', '오목교', '양평', '영등포시장', '신길', '여의도', '여의나루', '마포',
       '공덕', '애오개', '서대문', '광화문', '신금호', '행당', '마장', '답십리', '장한평', '군자',
       '아차산', '광나루', '천호', '강동', '길동', '굽은다리', '명일', '고덕', '상일동', '둔촌동',
       '올림픽공원', '방이', '개롱', '거여', '마천', '강일', '미사', '하남풍산', '하남시청',
       '하남검단산', '응암', '역촌', '독바위', '구산', '새절', '증산', '디지털미디어시티', '월드컵경기장',
       '마포구청', '망원', '상수', '광흥창', '대흥', '효창공원앞', '녹사평', '이태원', '한강진',
       '버티고개', '청구', '창신', '보문', '안암', '고려대', '월곡', '상월곡', '돌곶이', '석계',
       '태릉입구', '화랑대', '봉화산', '신내', '수락산', '마들', '중계', '하계', '공릉', '먹골',
       '중화', '상봉', '면목', '사가정', '용마산', '중곡', '어린이대공원', '자양', '청담', '강남구청',
       '학동', '논현', '반포', '내방', '이수', '남성', '숭실대입구', '상도', '장승배기',
       '신대방삼거리', '보라매', '신풍', '남구로', '가산디지털단지', '철산', '광명사거리', '천왕', '온수',
       '암사역사공원', '암사', '강동구청', '몽촌토성', '송파', '문정', '장지', '복정', '남위례',
       '산성', '남한산성입구', '단대오거리', '모란'], dtype=object)

 

 

df.head()

 

ndf = df.groupby(["노선명", "역명"])[["호기"]].max()
# 컬럼명 변경
ndf = ndf.rename(columns={"호기" : "에스컬레이터 대수"})
# 인덱스 초기화
ndf = ndf.reset_index()
ndf

# csv파일로 저장(인덱스는 저장안함, 한글 글자깨짐 안되게)  - 1~8호선 정보만 임시저장
ndf.to_csv("escalator_cnt.csv", index=False, encoding="utf-8-sig")

escalator_cnt.csv

 

02. 9호선 정보

9호선 편의시설 개수 정보_v2.xlsx

 

df9 = pd.read_excel("./data/9호선 편의시설 개수 정보_v2.xlsx")
df9.head()

 

 

# 특정 컬럼만 추출
df9 = df9[["노선명","역명","에스컬레이터"]]

 

df9.head()

 

# 정보를 합치기 위해 컬럼명을 일치시킴
df9 = df9.rename(columns = {"에스컬레이터":"에스컬레이터 대수"})
# 정보 합치기(1~8호선 + 9호선)
escalator_count = pd.concat([ndf,df9],axis=0,ignore_index=True)
escalator_count

 

# csv파일로 저장(인덱스는 저장안함, 한글 글자깨짐 안되게)

escalator_count.to_csv("./result_files/escalator_cnt_include9.csv", index=False, encoding="utf-8-sig")

 

728x90