23.02.07

박무연·2023년 2월 7일
0

🟣EDA

목록 보기
7/9
post-thumbnail

Population

1. 배경

- 목표

    1. 인구 소멸 위기 지역 파악
    1. 인구 소묠 위기 지역의 지도 표현
    1. 지도 표현에 대한 카르토그램 표현

2. 데이터 읽고 인구 소멸 지역 계산하기

- 데이터 읽기

population = pd.read_excel('../data/07_population_raw_data.xlsx', header=1) # 1번은 없애자
population.fillna(method='pad',inplace=True) # pad??
population
  • 1번 행은 없애고 불러온다
  • 결합되어 있는 형태이므로 method='pad'를 사용해 밑으로 확장?

- 컬럼의 특정 내용 삭제

population = population[populationp['소계'] !='소계']
  • 소계에서 value 값이 소계인것 제거

- loc

population.loc[population['구분']=='총인구수 (명)','구분'] = '합계'
  • population['구분']=='총인구수 (명)','구분' 이것만 선택해줘!!!!

- 소멸비율 계산

  • 각 지역의 소멸비율을 계산 해야함
  • 그러니깐 당연히 지역형태의 테이블이 필요
  • pivot_table로 지역으로 바꿔주자

- 멀티인덱스 추출

.get_level_values()
  • index가 멀티 인덱스
  • 멀티인덱스중 하나를 가져와보자
  • 컬럼에서 사용하려면 columns를 붙여주면 된다

3. 지도 시각화를 위한 지역별 ID 만들기

for idx, row in pop.iterrows():
    if row["광역시도"][-3:] not in ["광역시", "특별시", "자치시"]:
        si_name[idx] = row["시도"][:-1]
    
    elif row["광역시도"] == "세종특별자치시":
        si_name[idx] = "세종"
    
    else:
        if len(row["시도"]) == 2:
            si_name[idx] = row["광역시도"][:2] + " " + row["시도"]
        else:
            si_name[idx] = row["광역시도"][:2] + " " + row["시도"][:-1]
  • 일반시도 두자로 줄이기
  • 광역시, 특별시, 자치시 두자로 줄이고 시도 붙이기

- 특이한거 손보기

#### 행정구

for idx, row in pop.iterrows():
    if row["광역시도"][-3:] not in ["광역시", "특별시", "자치시"]:
        for keys, values in tmp_gu_dict.items():
            if row["시도"] in values:
                if len(row["시도"]) == 2:
                    si_name[idx] = keys + " " + row["시도"]
                    
                elif row["시도"] in ["마산합포구", "마산회원구"]:
                    si_name[idx] = keys + " " + row["시도"][2:-1]
                
                else:
                    si_name[idx] = keys + " " + row["시도"][:-1]
  • 시도가 두자인거 그대로 붙이고
  • 마산 붙여주기

- 고성

#### 행정구

for idx, row in pop.iterrows():
    if row["광역시도"][-3:] not in ["광역시", "특별시", "자치시"]:
        if row['시도'][:-1] == '고성' and row['광역시도'] == '강원도':
            si_name[idx] = '고성(강원)'
        elif row['시도'][:-1] == '고성' and row['광역시도'] == '경상남도':
            si_name[idx] = '고성(경남)'

4. 지도 그리기(카르토 그램)

- stack()

업로드중..
밑 처럼 바꾼다
업로드중..

  • reset_index()주어서 colum을 x축 y축으로 바꿔준다

- 검증작업

  • 연결시킬 id 값이 서로에게 있는지 확인한다
set(draw_korea['ID'].unique()) - set(pop['ID'].unique()) # 차집합이 없어야 한다

set(pop['ID'].unique()) - set(draw_korea['ID'].unique()) # 차집합이 없어야 한다

tmp_list = list(set(pop['ID'].unique()) - set(draw_korea['ID'].unique()))

for tmp in tmp_list:
    pop = pop.drop(pop[pop['ID'] == tmp].index) # 드랍은 인덱스 기준?
print(set(pop['ID'].unique()) - set(draw_korea['ID'].unique()))
  • index를 지정한 이유 : drop의 default 값은 index 이다

- 아래 시각화

...?

profile
Easy day!

0개의 댓글