現在私はFF14というゲームをやっているのですが、以前このような記事を書きました。
blog.gelehrte.com
FF14の中で出てくる競売商品をJupyter Notebookで分析しようという試みです。
前回の記事と同じく、以下の雑誌を参考にしました。プログラムも引用しています。
日経ソフトウエア 2019年 7 月号 |
読み込ませたデータ
こちらも以前の記事にも書いたのですが、再掲します。
また読む時期によっては引き続きデータを更新しているため値が変わっているかもしれませんが、本記事を書いたのは2019/07/27で、そこまでのデータを用いています。
docs.google.com
テスト環境
Jupyter Notebook
今回はJupyter Notebookの使い方の勉強の一環として触りました。
動作させたプログラム
雑誌に書かれていたプログラムを一部改変して使用しました。
一応添付します。
%matplotlib inline import pandas as pd import matplotlib.pyplot as plt from pandas.plotting import register_matplotlib_converters from sklearn import linear_model SERVICE_NUM = 10 # エレメンタルDCのワールド数 ITEM_NUM = 2 # 分析対象の商品の個数(ピュアホワイトとジェットブラック) RECENT_DAYS = 5 # 直近5日で分析 register_matplotlib_converters() # グラフのサイズ設定 plt.figure(figsize=(15, 18)) # 線形回帰モデルの生成 clf = linear_model.LinearRegression() # csv読み込み、1列目は日付型で読み込み、インデックスとする df = pd.read_csv('20190727.csv', index_col=0, parse_dates=True) # 今回は20190727.csv # 説明変数設定 X = df.index.to_frame() # 全日 X_recent = X.tail(RECENT_DAYS) # 直近 # プロット先の番号の初期化 no = 1 # 商品ごとにDC内のワールドのデータ分析とグラフの生成 for i, (col_name, Y) in enumerate(df.iteritems()): # 商品同じグラフにプロット if i % ITEM_NUM == 0: no = 1; # 1つ目のプロットに plt.subplot(ITEM_NUM, 1,no) # プロット先を設定 plt.title('item' + str(no)) else: no += 1 # プロット先を1つ進める plt.subplot(ITEM_NUM, 1,no) # プロット先を設定 plt.title('item' + str(no)) # 全日のグラフ作成 plt.plot(X, Y, label=col_name) # 全日で分析 clf.fit(X, Y) plt.plot(X, clf.predict(X.values.astype(float)),linestyle='dashed', label=col_name + '_reg') # 回帰直線描画 #直近で分析 clf.fit(X_recent, Y.tail(RECENT_DAYS)) # 学習 label_recent = f'{col_name}_reg_recent_{RECENT_DAYS}days' plt.plot(X_recent, clf.predict(X_recent.values.astype(float)), linestyle='dotted', label=label_recent) # 回帰直線描画 plt.legend() # 凡例表示 plt.show()
プログラムの実行
Jupyter Notebook上で動作させます。
結果
ピュアホワイト
計測し始めたのが漆黒アーリーの時期からなので、アーリーから嗜好品がどのように動いたのかがわかるかと思います。
分析
全体的に値上がり傾向にあります。特にTonberryワールドは高値をキープしていますね。最安値はGungnirでしょうか。
いずれにせよ、値上がり傾向です。
漆黒が始まって安定してから、みんな比較的ギルの使い道がなくなって、嗜好品に手を出すようになってきたのかもしれませんね。
ただここ直近5日間に関してはGarudaワールドで値下がり
ジェットブラック
分析
こちらは比較的値動きが少ないですね。ピュアホワイトに比べて使用用途が少ないのでしょうか。
終わりに
今回は練習として線形回帰での分析を行いました。
本当なら各ワールドの比較より全ワールドの平均から、値下がりしそうな日にちを探し出したり、株価変動のような移動平均線を出せればいいのかなとか思っていたりします。
この辺りはまだまだ勉強不足ですね。
もっとJupyter Notebookになれる必要がありそうです。
それでは今回はここまで。