#概要(TL;DR)
ドラクエウォークのレベルアップに必要な経験値を題材にpythonの数値計算ライブラリを練習してみたときの記録です。(1)はデータを確認するで(2)で数式モデルを算出しようと思います。
(現在 勉強中なので間違い等をどんどん指摘してもらえたら嬉しいです。)
1.データを読込み可視化する
2.データを数式モデル化する(回帰分析)
まずはデータを眺める
必要なライブラリを読み込む。今回は使わないのもあるが、次回使うので読み込んでおく。
import pandas as pd
import numpy as np
import scipy as sp
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
%matplotlib inline
%precision 3
参考URLからレベル毎に必要な経験値をテキストファイルに転記する。
% head data.csv
0
9
23
50
105
192
346
599
962
1397
よし早速、read_csv()だ。
df = pd.read_csv('data.csv')
df.head()
王様「おお、ヘッダー列が無いデータをそのまま読み込んでしまうとは何事だ。」
read_csv()のオプションでheader=Noneにするか、names=[]でカラム名を設定する。
df = pd.read_csv('data.csv',names=['EXP'])
df.head()
indexが0から始まっているので、このままだとレベル0からレベル1になるために必要な経験値が9になってしまう。そこで、indexに1を加える。
df.index = df.index+1
df.head()
これだけだと、レベルアップに必要な経験値はわかるが、そのレベルに到達するまでに必要な経験値がわからないので累積和(Cumulative Sum)も算出しておく。
df['CUMSUM_EXP'] = df['EXP'].cumsum()
df.head()
次のレベルアップまでに必要な経験値をグラフに
plt.plot(df.index,df['EXP'])
plt.xlabel('LEVEL')
plt.ylabel('EXP')
plt.grid(True)
レベル50前後で、明らかにモデルが違うような気が・・・・。
累計で必要な経験値を折れ線グラフに
plt.plot(df['CUMSUM_EXP'],'x')
plt.xlabel('LEVEL')
plt.ylabel('EXP')
plt.grid(True)
こっちはきれいな指数関数のグラフになりそうな気がする。
要約統計量を確認する
pandasのdescribe()を使って要約統計量(descriptive statistics value)を確認してみる。
pd.options.display.float_format = '{:.2f}'.format
df.describe()
早速、先程のグラフに分位数の水平線を入れてみる。
次のレベルに必要な経験値のグラフに、累積経験値の分位数を当てはめる。(ここに違和感があるが、結果として正しいと思う。)
plt.plot(df['EXP'],label = 'EXP')
plt.axhline(df['CUMSUM_EXP'].quantile(0.25), ls = "-.", color = "magenta",label="25%")
plt.axhline(df['CUMSUM_EXP'].quantile(0.50), ls = "-.", color = "green",label="50%")
plt.axhline(df['CUMSUM_EXP'].quantile(0.75), ls = "-.", color = "Orange",label="75%")
plt.xlabel('LEVEL')
plt.ylabel('EXP')
plt.legend()
plt.grid(True)
ん?75%の線があんな場所にあるので、レベル50から55までを抜き出してグラフ化してみる。
plt.plot(df['EXP'][49:55],label = 'EXP')
plt.axhline(df['CUMSUM_EXP'].quantile(0.75), ls = "-.", color = "Orange",label="75%")
plt.xlabel('LEVEL')
plt.ylabel('EXP')
plt.legend()
plt.grid(True)
レベル55までに必要な経験値の25%はレベル54から55になるまでに経験値とほぼ等しい・・・・・・。先日リリースされた上級職は、レベル55にしないと永続スキルがつかないので、これは悲報ですね・・・・。
つづく
参考URL
ドラクエウォーク攻略wiki
https://gamerch.com/dq-walk/entry/102321