시작에 앞서
해당 내용은 <파이썬으로 데이터 주무르기> -민형기 저, BJPUBLIC 출판사 의 내용을 토대로 작성되었습니다.
보다 자세한 내용은 해당 교재를 확인하여 주시기 바랍니다.
이전 분석 내용
Beaufiful Soup 으로 필요한 수치 획득하기
먼저 BeautifulSoup Import를 하고
from bs4 import BeautifulSoup
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
원하는 수치가 위치하는 곳의 태그를 알기 위해 개발자도구를 이용
확인결과 td 태그에서 alignR class 를 확인하면 된다는 것 파악
하단의 코드를 이용하여 '서울특별시'의 투표수와 당시 후보(문재인, 홍준표, 안철수)의 득표수 획득
tmp = soup.find_all('td', 'alignR')
tmp[2:5]
19대 대선 개표 결과 데이터 획득하기
해당 부분은 교재 집필 당시 사이트와 현재 사이트가 달라졌기 때문에, 교재 내용과 동일한 진행이 어려워서 생략
각 후보의 득표율과 지역 ID 정리하기
저자가 교재에서 작성한 csv 파일을 다운로드 받는다 (data 폴더에 저장)
다운로드 받은 파일을 불러온다
election_result = pd.read_csv('../data/05. election_result.csv', encoding='utf-8', index_col=0)
election_result.head()
광역시도 이름 정리
sido_candi = election_result['광역시도']
sido_candi = [name[:2] if name[:2] in ['서울','부산','대구','광주','인천','대전','울산']
else '' for name in sido_candi]
함수 하나를 정의
'중구', '남구'와 같은 두 글자 이름은 그대로 보내고,
'중랑구', '서초구', '의왕시' 와 같은 입력은 '중랑', '서초', '의왕' 처럼 줄이기 위함
def cut_char_sigu(name):
return name if len(name)==2 else name[:-1]
광역시가 아닌데 행정구를 가지고 있는 '수원' 등의 도시에 대해 '수원 권선' 등과 같이 정리하기 위한 코드 작성
import re
sigun_candi = ['']*len(election_result)
for n in election_result.index:
each = election_result['시군'][n]
if each[:2] in ['수원','성남','안양','안산','고양','용인','청주','천안','전주','포항','창원']:
sigun_candi[n] = re.split('시', each)[0]+' '+cut_char_sigu(re.split('시', each)[1])
else:
sigun_candi[n] = cut_char_sigu(each)
sigun_candi
광역시도 이름이 저장된 변수 sido_candi와 sigun_candi를 합치는데, 여기서 sido_candi 변수에서 공란이 있으면 첫 글자가 띄어쓰기 될 수 있어서 첫 글자가 공백인 경우에 대응하도록 코드를 작성. '세종시'는 예외로 처리
ID_candi = [sido_candi[n]+' '+sigun_candi[n] for n in range(0,len(sigun_candi))]
ID_candi = [name[1:] if name[0]==' ' else name for name in ID_candi]
ID_candi = [name[:2] if name[:2]=='세종' else name for name in ID_candi]
ID_candi
이렇게 만든 ID_candi 변수를 election_result에 합침
election_result['ID'] = ID_candi
election_result.head()
각 후보의 득표율 계산
각 후보의 득표수에서 투표자수를 나눠서 득표율을 계산
election_result[['rate_moon','rate_hong','rate_ahn']] = \
election_result[['moon','hong','ahn']].div(election_result['pop'], axis=0)
election_result[['rate_moon','rate_hong','rate_ahn']] *= 100
election_result.head()
안철수 후보가 높은 비율로 득표한 지역을 확인하면
election_result.sort_values(['rate_ahn'], ascending=[False]).head(10)
다음 시간에는 이전에 진행했던 draw_Korea 파일(csv)을 불러와서 전국지도를 그리고 대선득표율을 시각화하는 작업을 진행
다음글
'[파이썬 Projects] > <파이썬 데이터 분석>' 카테고리의 다른 글
[파이썬] 19대 대선 결과 분석 -4 (0) | 2024.05.04 |
---|---|
[파이썬] 19대 대선 결과 분석 -3 (0) | 2024.05.04 |
[파이썬] 19대 대선 결과 분석 -1 (1) | 2024.05.01 |
[파이썬] 우리나라 인구 소멸 위기 지역 분석 - 4 (0) | 2024.05.01 |
[파이썬] 우리나라 인구 소멸 위기 지역 분석 - 3 (0) | 2024.04.30 |