以前までの記事はこちら
blog.gelehrte.com
私がやっているゲーム、FF14の嗜好品、ピュアホワイトとジェットブラックというアイテムの価格動向です。
移動平均線を出すところまではやっていましたが、CSVファイルを一旦ローカルPCにダウンロードしてから動かしていました。
今回は、URLを指定し、直接プログラム内でCSVファイルを使用しています。
そのやり方について紹介します。
使用するスプレッドシートの共有URL
以前までの記事ではURLを別名で書いていましたが、今回はURLそのものを書きます。
https://docs.google.com/spreadsheets/d/1Dhv9nZCDsnVvNQN1qCe6Y-YLbwEa6iH8pk9ik64gwIM/edit?usp=sharing
共有URLから直接CSVをダウンロードするURLに書き直す
ここで重要なのは上記URLのうち、「edit?usp=sharing」の部分です。
これを「export?format=csv&gid=0」と書き直します。
つまり
https://docs.google.com/spreadsheets/u/2/d/1Dhv9nZCDsnVvNQN1qCe6Y-YLbwEa6iH8pk9ik64gwIM/export?format=csv&gid=0
というURLになります。
Jupyter Notebookのソースコード
前回までとの変更点
CSVをURLから直接読み込む
df_white = pd.read_csv('https://docs.google.com/spreadsheets/u/2/d/1Dhv9nZCDsnVvNQN1qCe6Y-YLbwEa6iH8pk9ik64gwIM/export?format=csv&gid=0', index_col=0, parse_dates=True,usecols=['date', 'Aegis_white','Atomos_white','Carbuncle_white','Garuda_white','Gungnir_white','Kujata_white','Ramuh_white','Tonberry_white','Typhon_white','Unicorn_white'])
というように、read_csvの第一引数をファイル名からURLに書き直しました。
これでも動作するようです。
実際のソースコード
%matplotlib inline import pandas as pd import matplotlib.pyplot as plt SERVICE_NUM = 10 # エレメンタルDCのワールド数 ITEM_NUM = 2 # 分析対象の商品の個数(ピュアホワイトとジェットブラック) # グラフのサイズ設定 plt.figure(figsize=(15, 18)) # csv読み込み、1列目は日付型で読み込み、インデックスとする # ピュアホワイト df_white = pd.read_csv('https://docs.google.com/spreadsheets/u/2/d/1Dhv9nZCDsnVvNQN1qCe6Y-YLbwEa6iH8pk9ik64gwIM/export?format=csv&gid=0', index_col=0, parse_dates=True,usecols=['date', 'Aegis_white','Atomos_white','Carbuncle_white','Garuda_white','Gungnir_white','Kujata_white','Ramuh_white','Tonberry_white','Typhon_white','Unicorn_white']) # ジェットブラック df_black = pd.read_csv('https://docs.google.com/spreadsheets/u/2/d/1Dhv9nZCDsnVvNQN1qCe6Y-YLbwEa6iH8pk9ik64gwIM/export?format=csv&gid=0', index_col=0, parse_dates=True,usecols=['date', 'Aegis_black','Atomos_black','Carbuncle_black','Garuda_black','Gungnir_black','Kujata_black','Ramuh_black','Tonberry_black','Typhon_black','Unicorn_black']) # 説明変数設定 X_white = df_white.index.to_frame() X_black = df_black.index.to_frame() # 全日の各ワールドの平均 Y_white = df_white.mean(axis='columns').to_frame() Y_black = df_black.mean(axis='columns').to_frame() # 移動平均線 5日 Y_white_5 = pd.Series(df_white.mean(axis='columns')).rolling(5).mean().to_frame() Y_black_5 = pd.Series(df_black.mean(axis='columns')).rolling(5).mean().to_frame() # 移動平均線 20日 Y_white_20 = pd.Series(df_white.mean(axis='columns')).rolling(20).mean().to_frame() Y_black_20 = pd.Series(df_black.mean(axis='columns')).rolling(20).mean().to_frame() plt.subplot(ITEM_NUM, 1,1) plt.title('white') plt.plot(X_white, Y_white, label="average") plt.plot(X_white, Y_white_5, label="5days moving average") plt.plot(X_white, Y_white_20, label="20days moving average") plt.legend() plt.subplot(ITEM_NUM, 1,2) plt.title('black') plt.plot(X_black, Y_black, label="average") plt.plot(X_black, Y_black_5, label="5days moving average") plt.plot(X_black, Y_black_20, label="20days moving average") #凡例 plt.legend() plt.show()
結果
このようになりました
ピュアホワイト
ジェットブラック
ピュアホワイトもジェットブラックも値下がり傾向にあることがわかりますね。
今後も値下がりしてくれると嬉しいなぁ。