Pandas の文字列型の数値を数値型に変換
import pandas as pd import investpy import altair as alt import datetime economic_data2 = investpy.economic_calendar(time_zone=None, time_filter='time_only', countries=['japan', 'united states'], from_date='01/01/2021', to_date='31/01/2021') ISM =economic_data[economic_data['event'].str.contains('ISM Non-Manufacturing PMI')] date2 =[] for i in ISM['date']: new_date = datetime.datetime.strptime(i,"%d/%m/%Y").strftime("%Y-%m-%d") date2.append(new_date) ISM['date']=ISM['date'].str.replace('/','-') ISM['date'] = date2 ISM.fillna(0)
これで取得した経済指標のデータを計算できるように数値変換する
previous_score = ISM['actual'].tail(1) previous_score
でみると
2598 64.0 Name: actual, dtype: object
となるが数値ではなくオブジェクトになっている
Pandasで欠損のある列の文字列型の数値を数値型に変換する
を参考に数値に変換する
文字列を数値にするには
padas.to_numeric() を使う
errors には
raise がデフォルトで例外が発生
ignore は例外を抑えるが何も変換せずにそのままのオブジェクトを返す
coerce は数値変換できるものだけ変換しあとはNaN にする
これを利用して
previous_score2 =pd.to_numeric(ISM['actual'],errors="coerce") previous_score2.tail(1)
とすれば
2598 64.0 Name: actual, dtype: float64
となる
これで数値化できたので
計算もできるようになる
print(previous_score2.tail(1) -1) print( 62 - previous_score2.tail(1))
とすると結果は
2598 63.0 Name: actual, dtype: float64 2598 -2.0 Name: actual, dtype: float64
となった
これで経済指標の結果と前回の予測値との差分を計算して表示できる