Datetype型への変換
扱っているデータ
(投信の)基準価額のヒストリカルデータ
date 0 1 2 3 ... 6 7 8 9 10 0 20110104 8227 11282 7527 10879 ... 7620 10396 443 8833 14122 1 20110105 8335 11391 7529 10960 ... 7705 10394 444 8769 14090 2 20110106 8476 11465 7532 10868 ... 7561 10359 450 8737 14488 3 20110107 8467 11366 7537 10906 ... 7614 10368 451 8682 14319 4 20110111 8315 11111 7534 10829 ... 7232 10375 449 8752 14317 ... ... ... ... ... ... ... ... ... ... ... ... 2218 20200127 20593 32664 7245 9691 ... 20419 10492 928 21272 8659 2219 20200128 20506 31948 7239 9694 ... 20191 10489 922 21314 8538 2220 20200129 20660 32232 7232 9640 ... 20232 10492 926 21385 8605 2221 20200130 20428 32352 7236 9653 ... 20391 10509 912 21478 8598 2222 20200131 20141 32117 7231 9660 ... 20144 10508 916 21646 8477 [2223 rows x 12 columns]
やりたいこと
date列に入っている変数をdatetype型へ変更
date列をインデックスに設定
基準価額のヒストリカルデータを、収益率(変化率)で置き換える
やったこと
date列に入っている変数をdatetype型へ変更
データの型をいじるには、まずはいじろうとしている変数の型を知ろうということで、次の関数を使用
type()
変数を引数として、そのデータ型を戻り値とする関数
今回の扱っているデータのdate列の要素の一つを例に関数を実行すると、
print (df.at[0,'date']) print (type(df.at[0,'date']))
結果
20110104 <class 'numpy.int64'>
ほう、数値型なのか
本当であれば今すぐにでもdatetype型へ変換したい気持ちはだが、数値型を直接datetype型へ変換するような方法は小職には見つけられず、泣く泣く一度文字列へ変換する次第
数値型→文字型への変換は以下のメソッド
.astype()
pandas
の要素のデータ型を変換するならこれ
文字型へ変換したいなら、.astype(str)
以下のようにすると、列ごと変換できた
df['date']=df['date'].astype(str)#数値型を文字型へ print (df.at[0,'date']) print (type(df.at[0,'date']))
結果
20110104 <class 'str'>
目的はあくまでdatetype型へ変換するので、ここで満を辞して変換するメソッドの登場
pandas.to_datetime()
これも以下のように列ごと変換できた
df['date']=pd.to_datetime(df['date'])#文字列型をdatetypeへ print (type(df.at[0,'date']))
結果
20110104 <class 'pandas._libs.tslibs.timestamps.Timestamp'>
これにて無事datetypeへの変換を完了
date列をインデックスに設定
pandasデータフレーム.set_index(列名)
これだけなので、特に説明なし
基準価額のヒストリカルデータを、収益率(変化率)で置き換える
pandasデータフレーム.pct_change()
pandasデータフレーム.dropna()
まとめ
なんかほんとにただのメモみたいになってしまった
まとめは、困ったらググること
最後に、今回の分のコードのまとめとできたデータフレーム
コード
df['date']=df['date'].astype(str)#数値型を文字型へ df['date']=pd.to_datetime(df['date'])#文字列型をdatetypeへ df=df.set_index('date') df_return0=df.pct_change() df_return=df_return0.dropna()
得られたdf_return
0 1 2 ... 8 9 10 date ... 2011-01-05 0.013128 0.009661 0.000266 ... 0.002257 -0.007246 -0.002266 2011-01-06 0.016917 0.006496 0.000398 ... 0.013514 -0.003649 0.028247 2011-01-07 -0.001062 -0.008635 0.000664 ... 0.002222 -0.006295 -0.011665 2011-01-11 -0.017952 -0.022435 -0.000398 ... -0.004435 0.008063 -0.000140 2011-01-12 0.008058 0.026640 0.000664 ... 0.002227 -0.000114 0.022700 ... ... ... ... ... ... ... ... 2020-01-27 -0.007327 0.002794 -0.000414 ... -0.012766 -0.001971 -0.028933 2020-01-28 -0.004225 -0.021920 -0.000828 ... -0.006466 0.001974 -0.013974 2020-01-29 0.007510 0.008889 -0.000967 ... 0.004338 0.003331 0.007847 2020-01-30 -0.011229 0.003723 0.000553 ... -0.015119 0.004349 -0.000813 2020-01-31 -0.014049 -0.007264 -0.000691 ... 0.004386 0.007822 -0.014073 [2222 rows x 11 columns]