Pythonでやってみた1:年収推移分析
概要
Python応用編としてやってみたシリーズ作ってみました。第一回目はデータ分析として世界の平均年収の推移を可視化しました。
(というか、気になったので作ってみました。)
1.データの出典元
データはOECDから参照しました。
2.使用するライブラリ
Pandasで処理して、Matplotlibで土台をつくりSeabornで可視化します。
※Seabornは今後記事をつくりたいです。
3.コード
[In]
import glob
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import japanize_matplotlib
#事前調整
pd.set_option("max_columns",100)
#データ読み込み
filepath = glob.glob('./*.csv')[0]
df = pd.read_csv(filepath)
#欠損値の確認
df.isnull().sum() #Flag Codes以外欠損値無し
df = df.drop(columns=['Flag Codes'])
# df.info()
#国名を略称からフルネームに変更
names_abb = df['LOCATION'].unique() #DataFrame内の略称を取得
dfs_countrynames = pd.read_html('http://fmwww.bc.edu/ec-p/data/oecd/oecd.ctylist.html') #OECD Database Country AbbreviationsのTableタグから表を取得
df_countrynames = dfs_countrynames[0] #Listからdfを取得
abb_fullnames = dict(zip(df_countrynames[0], df_countrynames[1]))
display(pd.DataFrame(abb_fullnames, index=[0]))
df['LOCATION'] = df['LOCATION'].map(abb_fullnames)
#フルネームの記載がなかった国はマイナーとみなして削除
df = df.dropna()
#可視化 plt.style.use('default')
japanize_matplotlib.japanize()
plt.figure(figsize=(16, 8))
palette = sns.color_palette(n_colors=24)
ax = sns.lineplot(x='TIME', y='Value', data=df, hue='LOCATION', palette=palette)
ax.set(title='世界の平均年収推移_OECD',
xlabel='年月',
ylabel='平均年収',
ylim = [10000, 75000],
yticks=[10000+i*5000 for i in range(14)]
)
plt.grid()
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0, fontsize=18)
plt.show()
【簡易説明】
Pandasでcsv読み込み->欠損値確認->不要カラム除去->データ確認します
次に下記のOECD Database Country Abbreviationsからテーブルデータをpd.read_html()で取得して国名の略称を正式名に変更します。
最後にseabornで可視化しました。(matplotはhueの機能がないので)
4.結果
日本は1990初めはトップ国と比較しても35%程度の差しかなかったが今や2倍近くの差になっている。大きな要因は他国は年収の増加があるのに日本はほとんど上昇がみられていない。
では年収が上がらない原因は??というのは記事の内容から逸脱するので語らないですが、少し泣きそうです
display(df[df['LOCATION']=='Japan'].head(3))
display(df[df['LOCATION']=='Japan'].tail(3))
参考資料
あとがき
久しぶりにSeaborn使ってみたけどまだかゆいところに手が届かなかった(JapanとOECD平均だけ強調させて線を太くしたかった)ので、もう一度勉強しなおして記事作りたい。
この記事が気に入ったらサポートをしてみませんか?