ICP-USD / ICP-JPY データ取得の備忘録・改 (グーグルコラボ)

以前行ったものをシンプルにした。

# 以前

*   ICP-USD / ICP-JPY データ取得の備忘録<br><https://hide.ac/articles/OBUA_JwNC>

グーグルコラボで実行した例。

***

# 今回

**"ICP-USD価格と為替レートを利用してICP-JPYを計算するPythonチュートリアル"**

はじめに:
暗号通貨市場は、その急速な変動とグローバルな性質から、多くの投資家や研究者にとって魅力的な研究対象となっています。このブログでは、特定の暗号通貨であるInternet Computer (ICP)のUSD価格データと、USD-JPYおよびEUR-USDの為替レートデータを用いて、ICPのJPY価格を計算する方法について、Pythonを使って詳しく解説します。

### ステップ1: 必要なライブラリのインストールとインポート

まず、このチュートリアルで使用するPythonライブラリをインストールし、インポートします。主に`historic_crypto`ライブラリを使ってICP-USDの価格データを取得し、`pandas_datareader`ライブラリで為替レートデータを取得します。

```python
!pip install historic_crypto

from Historic_Crypto import HistoricalData
import pandas as pd
from datetime import datetime
import pandas_datareader.data as web
from google.colab import files
```

### ステップ2: ICP-USDの価格データの取得

`HistoricalData`クラスを使用して、指定された期間のICP-USDの価格データを取得します。この例では、2020年5月10日から現在までのデータを取得しています。

```python
start_date = '2020-05-10-00-00'
end_date = datetime.now().strftime('%Y-%m-%d-%H-%M')
icp_data = HistoricalData('ICP-USD', 86400, start_date, end_date).retrieve_data()
```

### ステップ3: 為替レートデータの取得

`pandas_datareader`ライブラリを使って、USDJPYとEURUSDの為替レートデータを取得します。

```python
df_rates = web.DataReader(['DEXJPUS', 'DEXUSEU'], 'fred', start='2020-05-10')
```

### ステップ4: データの統合とICP-JPYの計算

取得したICP-USD価格データと為替レートデータを統合し、ICPのJPY価格を計算します。

```python
df = pd.DataFrame(icp_data)
df.reset_index(inplace=True)
df.rename(columns={'index': 'time', 'close': 'close(ICP-USD)'}, inplace=True)
df['time'] = pd.to_datetime(df['time']).dt.strftime('%Y-%m-%d')

df_merged = pd.merge(df, df_rates, how='left', on='time')
df_merged['ICP-JPY'] = df_merged['close(ICP-USD)'] * df_merged['DEXJPUS']
```

### ステップ5: 日付の連続性を確保し、データの補完

データが存在する最終日までの日付の連続性を保証し、欠損データを前方で補完します。

```python
last_date = min(df_merged['time'].max(), df_rates['time'].max())
date_range = pd.date_range(start=df_merged['time'].min(), end=last_date)
df_merged.set_index('time', inplace=True)
df_merged.index = pd.to_datetime(df_merged.index)
df_final = df_merged.reindex(date_range).rename_axis('time').reset_index()
df_final['time'] = df_final['time'].dt.strftime('%Y-%m-%d')
df_final.fillna(method='ffill', inplace=True)
```

### ステップ6: 結果の保存とダウンロード

最終的なデータフレームをCSVファイルとして保存し、ダウンロードします。

```python
filename = 'ICP_data_' + datetime.now().strftime('%Y-%m-%d

') + '.csv'
df_final.to_csv(filename, index=False)
files.download(filename)
```

### 完全なコード:

完全なコードを示します。

```python
# 必要なライブラリのインストール
!pip install historic_crypto

# 必要なライブラリのインポート
from Historic_Crypto import HistoricalData
import pandas as pd
from datetime import datetime
import pandas_datareader.data as web
from google.colab import files

# ICP-USDの過去データ取得
start_date = '2020-05-10-00-00'  # ICPの取引開始日
end_date = datetime.now().strftime('%Y-%m-%d-%H-%M')  # 現在の日付と時刻
icp_data = HistoricalData('ICP-USD', 86400, start_date, end_date).retrieve_data()

# ICP-USDデータフレームの作成
df_icp = pd.DataFrame(icp_data)
df_icp.reset_index(inplace=True)
df_icp.rename(columns={'index': 'time', 'close': 'close(ICP-USD)'}, inplace=True)
df_icp['time'] = pd.to_datetime(df_icp['time']).dt.strftime('%Y-%m-%d')

# 為替レートデータの取得
df_rates = web.DataReader(['DEXJPUS', 'DEXUSEU'], 'fred', start='2020-05-10')
df_rates.reset_index(inplace=True)
df_rates.rename(columns={'DATE': 'time'}, inplace=True)
df_rates['time'] = pd.to_datetime(df_rates['time']).dt.strftime('%Y-%m-%d')

# ICP-USDと為替レートの統合
df_merged = pd.merge(df_icp, df_rates, how='left', on='time')

# ICP-JPYの計算
df_merged['ICP-JPY'] = df_merged['close(ICP-USD)'] * df_merged['DEXJPUS']

# データが存在する最後の日までの日付範囲を作成
last_date = min(df_merged['time'].max(), df_rates['time'].max())
date_range = pd.date_range(start=df_merged['time'].min(), end=last_date)
df_merged.set_index('time', inplace=True)
df_merged.index = pd.to_datetime(df_merged.index)

# 日付の連続性を保証し、データが存在しない日は含めない
df_final = df_merged.reindex(date_range).rename_axis('time').reset_index()
df_final['time'] = df_final['time'].dt.strftime('%Y-%m-%d')

# 欠損データを前方で埋める
df_final.fillna(method='ffill', inplace=True)

# 指定されたカラムだけを選択してCSVファイルとして保存し、ダウンロード
filename = 'ICP_data_' + datetime.now().strftime('%Y-%m-%d') + '.csv'
df_final[['time', 'close(ICP-USD)', 'ICP-JPY']].to_csv(filename, index=False)
files.download(filename)

# 結果の表示
print(df_final[['time', 'close(ICP-USD)', 'ICP-JPY']].head(10))
print(df_final[['time', 'close(ICP-USD)', 'ICP-JPY']].tail(10))
```

![](https://pbs.twimg.com/media/GIUFI36aMAEgXgj?format=png\&name=small)

***

# 補足:グーグルコラボの使い方

グーグルコラボ Google Colabの使い方について説明

## Google Colabの使い方

Google Colaboratory、通称Google Colabは、ブラウザ上でPythonを書いて実行できる無料のJupyterノートブック環境です。Googleドライブと密接に統合されており、GPUやTPUの使用も無料で可能です。特にデータサイエンスや機械学習のプロジェクトに非常に便利です。

### 基本的な使い方

1.  **Google Colabにアクセス**: Googleアカウントにログインした状態で、[Google Colab](https://colab.research.google.com/)にアクセスします。
2.  **新しいノートブックを作成**: 「新しいノートブック」をクリックして新しいノートブックを開始します。または、Googleドライブ内で新しいノートブックを作成することもできます。
3.  **コードの記述と実行**: セルにPythonコードを記述し、セルを実行して結果を確認します。セルはコードセルとテキストセルがあり、テキストセルではMarkdown形式で文書を記述できます。
4.  **ライブラリのインストール**: 必要に応じて、`!pip install`や`!apt-get install`を使用してライブラリをインストールします。
5.  **ファイルの保存と共有**: 編集したノートブックは自動的にGoogleドライブに保存されます。右上の「共有」ボタンから他のユーザーとノートブックを共有することも可能です。