【44日目】欠損値の処理をする【Python】
今日の写真のテーマは「欠ける」です。
欠損値がある状態では、エラーが出てしまいチャートが表示されません。そこで、色々な条件でもチャートが表示できるように、欠損値の処理をしていこうと思います。
0.どこでエラーが出ているかの確認
中身のデータを見たりして、とりあえず以下の2つの内容でエラーが出ていることが分かった。
1.数値が欠損していて、NaNになっている。
2.OHLCの関係が保てていない。
ここでOHLCの関係ってなんだよってことですが、OHLCが意味するところは以下の通り。
O:オープン(始値)
H:ハイ(高値)
L:ロー(安値)
C:クローズ(終値)
なので、OHLCの中で一番高いのは、Hだし、一番安いのはLでないといけない。この条件が満たせていないとき、Plotly側でエラーを出力するみたい。
1.数値の欠損について
まず一つ目の純粋な欠損値については、補間する方法と削除する方法がある。
補間する方法にもいろいろあって、時系列を参照して、そのIndexに対してうまいこと補間するものや、前後の数値をそのまま引っ張ってくるなど。
一番手っ取り早く、とりあえず欠損値を含むレコードは削除することにしてみる。
df = df_row.dropna()
2.OHLCの条件
OHLCの条件を満たしているかチェックする関数を作成して、それをかませることにしようと思う。
def check_ohlc(df_row):
df_li = []#pd.DataFrame()
df_max = df_row.max(axis=1)
df_min = df_row.min(axis=1)
for i in range(len(df_row)):
if df_max[i] == df_row.iat[i,1]:
if df_min[i] == df_row.iat[i,2]:
df_li.append(df_row.iloc[i,:])
df_df = pd.DataFrame(df_li)
return df_df
これで一応エラーをはかずに、チャートを表示させることが出来るようになりました。
ただ欠損値でDropした項目が多すぎる気がして、まともに解析できるのか・・・?という感じです。
あなたによって僕は生かされている。 私もあなたを生かせられますように。