目次
経緯
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()で複数の分位点を指定したいときは、リストでまとめて渡す- カッコの種類と使い方に細心の注意を払う
 - エラーが出たときは、まずカッコと引数の数・位置を疑う
 
