[私もコードします]データ分析と可視化-プロジェクト1

22174 ワード

1.人口ピラミッド
ID番号データリンク
1-1. 男性データの定義
import pandas as pd

df_m = pd.read_excel('201111_201111_연령별인구현황_월간.xlsx', skiprows=3, index_col='행정기관', usecols= 'B, E:Y') 
df_m.head()
#콤마가 있으면 str으로 읽을 수 도 있어서 지우고 정수형으로 바꾼다..
df_m.iloc[0] = df_m.iloc[0].str.replace(',','').astype(int)
df_m #콤마 사라짐
df_m.iloc[0]

1-2. 女性データの定義
df_w = pd.read_excel('201111_201111_연령별인구현황_월간.xlsx', skiprows=3, index_col='행정기관', usecols= 'B, AB:AV') 
df_w.head()
# 컬럼명의 구분을 위해 달라진 컬럼명을 다시 같게만들기 위한 작업이 필요
df_m.columns

>>> Index(['0~4세', '5~9세', '10~14세', '15~19세', '20~24세', '25~29세', '30~34세',
       '35~39세', '40~44세', '45~49세', '50~54세', '55~59세', '60~64세', '65~69세',
       '70~74세', '75~79세', '80~84세', '85~89세', '90~94세', '95~99세', '100세 이상'],
      dtype='object')

df_w.columns

>>> Index(['0~4세.1', '5~9세.1', '10~14세.1', '15~19세.1', '20~24세.1', '25~29세.1',
       '30~34세.1', '35~39세.1', '40~44세.1', '45~49세.1', '50~54세.1', '55~59세.1',
       '60~64세.1', '65~69세.1', '70~74세.1', '75~79세.1', '80~84세.1', '85~89세.1',
       '90~94세.1', '95~99세.1', '100세 이상.1'],
      dtype='object')

#컬럼명 통일
df_w.columns = df_m.columns 
df_w.columns

>>> Index(['0~4세', '5~9세', '10~14세', '15~19세', '20~24세', '25~29세', '30~34세',
       '35~39세', '40~44세', '45~49세', '50~54세', '55~59세', '60~64세', '65~69세',
       '70~74세', '75~79세', '80~84세', '85~89세', '90~94세', '95~99세', '100세 이상'],
      dtype='object')
      
df_w.iloc[0] = df_w.iloc[0].str.replace(',','').astype(int)
df_w #콤마 사라짐
df_w.iloc[0]
  • 男女データの準備->グラフ
  • の描画
    1-3. データの表示
    import pandas as pd
    import matplotlib.pyplot as plt
    import matplotlib
    matplotlib.rcParams['font.family'] = 'Malgun Gothic' # Windows
    # matplotlib.rcParams['font.family'] = 'AppleGothic' # Mac
    matplotlib.rcParams['font.size'] = 15
    matplotlib.rcParams['axes.unicode_minus'] = False
    
    plt.figure(figsize = (10,7))
    plt.barh(df_m.columns, -df_m.iloc[0] // 1000) #남자 데이터, 단위 : 천명
    plt.barh(df_w.columns, df_w.iloc[0] // 1000) # 여성데이터, 단위 : 천명
    plt.title('2011년도 대한민국 인구 피라미드')
    plt.savefig('2011_인구피라미드.png', dpi=100)
    plt.show()

    1-4.2021データ
    file_name = '202111_202111_연령별인구현황_월간.xlsx'
    df_m = pd.read_excel(file_name, skiprows=3, index_col='행정기관', usecols= 'B, E:Y') 
    
    df_m.iloc[0] = df_m.iloc[0].str.replace(',','').astype(int)
    
    df_w = pd.read_excel(file_name, skiprows=3, index_col='행정기관', usecols= 'B, AB:AV') 
    
    df_w.columns = df_m.columns 
    
    df_w.iloc[0] = df_w.iloc[0].str.replace(',','').astype(int)
    
    import pandas as pd
    import matplotlib.pyplot as plt
    import matplotlib
    matplotlib.rcParams['font.family'] = 'Malgun Gothic' # Windows
    # matplotlib.rcParams['font.family'] = 'AppleGothic' # Mac
    matplotlib.rcParams['font.size'] = 15
    matplotlib.rcParams['axes.unicode_minus'] = False
    
    plt.figure(figsize = (10,7))
    plt.barh(df_m.columns, -df_m.iloc[0] // 1000) #남자 데이터, 단위 : 천명
    plt.barh(df_w.columns, df_w.iloc[0] // 1000) # 여성데이터, 단위 : 천명
    plt.title('2021년도 대한민국 인구 피라미드')
    plt.savefig('2021_인구피라미드.png', dpi=100)
    plt.show()