2022年8月28日日曜日

線形回帰を求める(1)

 色々なデータに触れると、相関関係があるのか確かめたくなります。

最も簡単な分析が線形回帰でよく使われています。

今回は、こちらのデータを使い都道府県と平均年収の関係を使って簡単なテストをしてみます。

import pandas as pd

data1 = "prefecture1.csv"
data2 = "income_pref.csv"

df1 = pd.read_csv(data1)
df2 = pd.read_csv(data2)

print(df1.head())
print(df2.head())

  都道府県 県庁所在地          人口          面積     人口密度
0  北海道   札幌市  5,181,776   83,424.41    66.08 
1  青森県   青森市  1,221,288    9,645.62   126.62 
2  岩手県   盛岡市  1,196,277   15,275.01    78.32 
3  宮城県   仙台市  2,290,036    7,282.29   314.47 
4  秋田県   秋田市    944,902   11,637.52    81.19 

   順位  都道府県       平均年収
0  1位   東京都  584万9300円
1  2位  神奈川県  541万5500円
2  3位   愛知県   524万400円
3  4位   大阪府  511万8600円
4  5位   兵庫県  495万2100円


データフレームをマージし、数値で処理出来るようにコンマなど取り払います。
説明変数xは人口、目的変数yは平均年収の関係を調べましょう。



# データのマージ
df3 = pd.merge(df1, df2)



#日本円表示を数値に
def currencyToNumber(val):
    # 万と千以下に分ける
    man, sen = val.split("万")

    #円を取り除き,千以下を0埋め
    sen = sen.replace("円", "")
    sen = sen.zfill(4)

    man += sen
    return int(man)
    

# 数値のカンマを取り除く
def dropComma(val):
    val = val.replace(",", "")

    return float(val)
    
    
    
# 関数を適用して数値にする
df3['平均年収'] = df3['平均年収'].apply(currencyToNumber)
df3['人口'] = df3['人口'].apply(dropComma)

# プロットする場合はSeriesで小文字のx
x = df3['人口']
# 線形回帰する場合はDataFrameで大文字のX
X = df3[['人口']]

# 目的変数y
y = df3['平均年収']


出来上がったデータを散布図としてプロットします。

import matplotlib.pyplot as plt
import japanize_matplotlib


# 県名が見やすいように大きめのグラフに
plt.figure(figsize=(16, 10))


plt.title("人口と平均年収のグラフ", fontsize=24)

#散布図
plt.scatter(x, y)
plt.grid()

plt.xlabel("人口(人)", fontsize=18)
plt.ylabel("平均年収(円)", fontsize=18)

# 点それぞれに中訳を入れる annotate
pref_name = df3['都道府県']

for i, pref in enumerate(pref_name):
    plt.annotate(pref, (x[i], y[i]))

# 数値が大きいと指数表示になるので、分かりやすく整数表示にする
nums = plt.gca().get_yticks()
plt.gca().set_yticklabels(['{:,.0f}'.format(i) for i in nums])
nums = plt.gca().get_xticks()
plt.gca().set_xticklabels(['{:,.0f}'.format(i) for i in nums])


plt.show()

0 件のコメント:

コメントを投稿

Pythonで地図空間データを扱う⑤

ベースの地図が出来た所で、他のデータを被せてみます。 国土地理院の  500mメッシュ別将来推計人口データ  を使用します。 同じく神奈川県のデータ  500m_mesh_suikei_2018_shape_14.zip をダウンロードします。 ベースの地図データと同じ場所に展開...