目次
経緯
Pythonで外れ値(異常値)を検出しようと、quantile()
関数を使ったところ、
ValueError: No axis named 0.75 for object type DataFrame
というエラーが発生しました。
実際のコード
q = train_ds.quantile([1/4], 3/4)
原因
エラー原因は、カッコの位置ミスでした。
具体的には、quantile()
関数の引数の渡し方に問題があります。
- 誤ったコード
q = train_ds.quantile([1/4], 3/4)
- 正しいコード
q = train_ds.quantile([1/4, 3/4])
つまり、分位点をリスト [ ]
にまとめて一括指定する必要がありました。
間違ったコードでは、最初の [1/4]
をリストとして渡した後、さらに 3/4
を別の引数として渡してしまっています。
これにより、DataFrameが存在しない軸(ここでは0.75)を探しに行ってしまい、エラーが発生していました。
カッコの使い方に注意
Pythonでは、次のようにカッコを使い分けます。
()
→ タプル(tuple)や関数の引数指定[]
→ リスト(list){}
→ 辞書(dict)や集合(set)
今回の場合は、「複数の値(1/4, 3/4)をまとめて渡したい」ので、リスト []
を使う必要があったというわけです。
まとめ
quantile()
で複数の分位点を指定したいときは、リストでまとめて渡す- カッコの種類と使い方に細心の注意を払う
- エラーが出たときは、まずカッコと引数の数・位置を疑う