#第4回コード例 #################################################### #p7 #データ解析用モジュール import pandas as pd #日本語フォントのインストール !pip install japanize-matplotlib #グラフ描画用モジュール import matplotlib.pyplot as plt import japanize_matplotlib #################################################### #p9 #pandasのインポート import pandas as pd file = pd.ExcelFile("kaiki.xlsx") data = file.parse("宿泊者数") data.head() #################################################### #p10 #plot.scatterメソッドで散布図が描けます。 #xはx軸の列名、yはy軸の列名、figsizeはグラフの横縦のサイズです。 #axにはグラフのオブジェクト(サブプロットと呼ばれる)が代入されます。 ax = data.plot.scatter(x="日本人宿泊者数", y="外国人宿泊者数", figsize=(10, 5)) #################################################### #p12 #LinearRegressionクラスのインポート from sklearn.linear_model import LinearRegression #LinearRegressionオブジェクトの生成 reg = LinearRegression() #xは日本人宿泊者数のデータ #x = pd.DataFrame(x) x = data["日本人宿泊者数"].values.reshape(-1, 1) #yは外国人宿泊者数のデータ y = data["外国人宿泊者数"] #学習してパラメータを計算 reg.fit(x, y) #傾きと切片の表示 print("傾き", reg.coef_[0]) print("切片", reg.intercept_) #################################################### #p13 #傾きをa、切片をbに代入 a = reg.coef_[0] b = reg.intercept_ #xが0でのyの値を計算 x0 = 0 y0 = a * x0 + b #xが1500万人でのyの値を計算 x1 = 1.5e7 y1 = a * x1 + b ax = data.plot.scatter(x="日本人宿泊者数", y="外国人宿泊者数", figsize=(10, 5)) ax.plot([x0, x1], [y0, y1]) #xが0とx が1500万人で直線を描く #################################################### #p14 print(a * 10000000 + b) #################################################### #p16 #傾きをa、切片をbに代入 a = reg.coef_[0] b = reg.intercept_ #xが0でのyの値を計算 x0 = 0 y0 = a * x0 + b #xが1500万人でのyの値を計算 x1 = 1.5e7 y1 = a * x1 + b ax = data.plot.scatter(x="日本人宿泊者数", y="外国人宿泊者数", figsize=(10, 5)) ax.plot([x0, x1], [y0, y1]) #xが0とx が1500万人で直線を描く for k, v in data.iterrows(): ax.annotate(v[0], xy=(v[1], v[2]), size=12) #################################################### #p18 #傾きをa、切片をbに代入 a = reg.coef_[0] b = reg.intercept_ #xが0でのyの値を計算 x0 = 0 y0 = a * x0 + b #xが1500万人でのyの値を計算 x1 = 1.5e7 y1 = a * x1 + b ax = data.plot.scatter(x="日本人宿泊者数", y="外国人宿泊者数", figsize=(10, 5)) ax.plot([x0, x1], [y0, y1]) #xが0とx が1500万人で直線を描く for k, v in data.iterrows(): if v[2] > 1000000: ax.annotate(v[0], xy=(v[1], v[2]), size=12)