グラフを日本語する準備
pip install japanize-matplotlib
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import seaborn as sns
sns.set(font="IPAexGothic") #日本語フォント設定
データの大枠を確認
train = pd.read_csv("./train.csv")
test = pd.read_csv("./test.csv")
sample = pd.read_csv("./sample.csv",header=None)
print("Data Shapes")
print("Train:",train.shape, "Test:",test.shape, "Sample:",sample.shape)
Data Shapes Train: (207, 12) Test: (40, 11) Sample: (40, 2)
データの詳細を確認
train.index = pd.to_datetime(train["datetime"])
train.head()
train.describe()
train.describe(include="O")
↓結果はこちら
データをグラフ化して確認(売り上げ分布)
train["payday"] = train["payday"].fillna(0)
train["precipitation"] = train["precipitation"].apply(lambda x : -1 if x == "--" else float(x))
train["event"] = train["event"].fillna("なし")
train["remarks"] = train["remarks"].fillna("なし")
train["month"] = train["datetime"].apply(lambda x : int(x.split("-")[1]))
train["y"].plot(figsize=(15,4))
・右肩下がりなことがわかる
・所々にスパイクが見られるため、このタイミングで強く影響する因子があると考えられる
目的変数と説明変数との散布図を確認
fig, ax = plt.subplots(2,3,figsize=(9,6))
train.plot.scatter(x="soldout", y="y", ax=ax[0][0])
train.plot.scatter(x="kcal", y="y", ax=ax[0][1])
train.plot.scatter(x="precipitation", y="y", ax=ax[0][2])
train.plot.scatter(x="payday", y="y", ax=ax[1][0])
train.plot.scatter(x="temperature", y="y", ax=ax[1][1])
train.plot.scatter(x="month", y="y", ax=ax[1][2])
plt.tight_layout()
※月と気温はyと相関が高そう。
しかし、日数が経過するにつれてyが減少していることから代替変数である可能性が高い
目的変数と説明変数の箱ひげ図を確認
fig, ax = plt.subplots(2,2,figsize=(12,7))
sns.boxplot(x="week",y="y",data=train,ax=ax[0][0])
sns.boxplot(x="weather",y="y",data=train,ax=ax[0][
1])
sns.boxplot(x="remarks",y="y",data=train,ax=ax[1][0])
ax[1][0].set_xticklabels(ax[1][0].get_xticklabels(),rotation=30)
sns.boxplot(x="event",y="y",data=train,ax=ax[1][1])
plt.tight_layout()
・天気が快晴の時にyが大きくなる
・お楽しみメニューの時にyが大きくなる
【メモ(やったこと)】
下記URLからipaexg.ttfファイルをインストールする
https://ipafont.ipa.go.jp/node193#jp