下準備
processor.csv
はその年の最高性能のものを抽出
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import statsmodels.api as sm
#CPU性能と職業別労働者数をデータフレームする
p_df = pd.read_csv('data/input/processor.csv')
p_df = p_df.groupby('year', group_keys=False).apply(lambda x: x.loc[x['MOS transistor count'].idxmax()])
w_df = pd.read_csv('data/input/worker2.csv')
#マージする
p_df.reset_index(drop = True, inplace = True)
w_df.reset_index(drop = True, inplace = True)
df = pd.merge(w_df, p_df, on="year", how="left")
#目的変数のリスト
objective_vars = ['agriculture', 'fisheries', 'mining', 'construction', 'manifacture', 'infrastructure', 'infomation', 'transport', 'retail', 'finance', 'real-estate', 'research', 'accommodations-service','personal-service', 'education', 'medical','compound','etc','gov']
複合グラフの作成
折れ線グラフが目的変数、棒グラフが説明変数
fig, ax1 = plt.subplots(1,1,figsize=(10,8))
ax2 = ax1.twinx()
ax1.bar(df.index,df["MOS transistor count"], color="lightblue")
ax2.plot(df[objective_vars], linestyle="solid")
handler1, label1 = ax1.get_legend_handles_labels()
handler2, label2 = ax2.get_legend_handles_labels()
ax1.legend(handler1+handler2,label1+label2,borderaxespad=0)
ax1.grid(True)
ax1.set_xticklabels(df['year'])
fig.savefig('data/output/graph/graph.png')
ヒートマップの作成
objective_vars.append('MOS transistor count')
fig = sns.heatmap(df[objective_vars].corr(), annot=True, cmap='Blues')
plt.gcf().set_size_inches(15, 8)
fig.figure.savefig('data/output/graph/heatmap.png')
objective_vars.remove('MOS transistor count')
単回帰分析
目的変数のリストをひとつずつ説明変数MOS transistor count
を使って計算、プロットする
for var in objective_vars:
x = df.loc[:, 'MOS transistor count'] #説明変数
y = df.loc[:, var] #目的変数
#全要素が1の列を説明変数の先頭に追加
X = sm.add_constant(x)
#モデルの設定
model = sm.OLS(y, X)
#回帰分析
results = model.fit()
#回帰係数と切片の推定値
a = results.params[0]
b = results.params[1]
#標本値と回帰直線をプロット
plt.plot(x, y,"o")
plt.plot(x, a+b*x)
#タイトルつけて保存
title = f"const: {results.params[0]}, R-squared: {results.rsquared}"
plt.title(title)
plt.savefig(f'data/output/sra/{var}.png')
plt.clf()
結果
agriculture.png(農業 林業の就業者数xCPUの性能)
fisheries.png(漁業の就業者数xCPUの性能)
mining.png(鉱業の就業者数xCPUの性能)
construction.png(建設業の就業者数xCPUの性能)
manifacture.png(製造業の就業者数xCPUの性能)
infrastructure.png(電気 ガス 熱供給 水道の就業者数xCPUの性能)
infomation.png(情報通信の就業者数xCPUの性能)
transport.png(運輸の就業者数xCPUの性能)
retail.png(卸売 小売の就業者数xCPUの性能)
finance.png(金融業 保険の就業者数xCPUの性能)
real-estate.png(不動産業 物品賃貸業の就業者数xCPUの性能)
research.png(学術研究の就業者数xCPUの性能)
accommodations-service.png(宿泊業 飲食サービス業の就業者数xCPUの性能)
personal-service.png(生活関連サービス業 娯楽業の就業者数xCPUの性能)
education.png(教育 学習支援業の就業者数xCPUの性能)
medical.png(医療福祉業の就業者数xCPUの性能)
compound.png(複合サービスの就業者数xCPUの性能)
etc.png(その他サービス業の就業者数xCPUの性能)
gov.png(公務の就業者数xCPUの性能)