본문 바로가기
카테고리 없음

[Python] 결측값 처리 - 시도별 전출입 인구수 분석

by byeolsub 2023. 4. 25.

 📌

### 시도별 전출입 인구수 분석하기
#1 excel 파일 읽기
import pandas as pd
df = pd.read_excel("data/시도별 전출입 인구수.xlsx")
df.info()
df["전출지별"].head()

#2 결측값 처리 : 앞데이터로 치환
# fillna : 결측값을 다른값으로 변경하는 함수
df = df.fillna(method="ffill") # 앞의 데이터로 결측값 채움
df.head()
df.tail()

# 전출지가 서울이고, 전임지는 서울이 아닌 데이터만 추출하기
# df_seoul에 저장
mask = (df["전출지별"] == '서울특별시') & (df["전입지별"] != '서울특별시')
mask

# mask의 true/false 갯수 구하기
mask.unique()
mask.value_counts()
df_seoul = df[mask]
df_seoul.info()
df_seoul.head()

#4 컬럼명을 전임지별 => 전임지 변경하기
df_seoul.rename(columns={"전입지별":"전임지"},inplace=True)
df_seoul

#5 전출지별 컬럼을 제거하기
del df_seoul["전출지별"]
df_seoul = df_seoul.drop("전출지별",axis=1)
df_seoul.head()

#6 전입지 컬럼을 인덱스로 변경하기
df_seoul.set_index("전입지",inplace=True)

#7 경기도로 이동한 데이터만 sr1에 저장하기
sr1 = df_seoul.loc["경기도"] # Sereis 객체
sr1.plot() # 선그래프로 

#8-1 경기도, 전국으로 이동한 데이터만 df1에 저장하기
df1 = df_seoul.loc[["전국","경기도"]] # DataFrame 객체
df1.info()
df1.plot() 정상적으로 출력되지 않음

#8-2 경기도, 전국으로 이동한 데이터만 df1에 저장하기
df1.T.plot() # 행과 열이 바꿔야 한다.


📌

# matplot : 시각화 모듈
import matplotlib.pyplot as plt
# 한글이 가능한 폰트로 설정 : 맑은 고딕. 기본폰트 : 한글 불가
# 맥에서 가능한 폰트로 바꿔줘야 한글이 표시된다.
plt.rc("font",family="Malgun Gothic")

plt.plot(sr1)
plt.title("서울=>경기 인구 이동")
plt.xlabel("년도")
plt.ylabel("이동인구수")
plt.xticks(rotation = "vertical") # x축의 레이블을 세로로 표시