Как получить число из квантиля?
У меня есть ряд чисел, откуда я хочу получить квантиль, чтобы использовать его, как условие.
Что-то вроде:
import pandas as pd
df = pd.DataFrame([[1,'Bob', '15'],
[2,'John', '70'],
[3,'Bill', '15'],
[4,'Martin', '30'],
[5,'Clint', '40'],
[6,'Jeff', '100'],
[7,'Scott', '90']], columns=['id','name', 'score'])
q = df['score'].quantile(q=[0.33])
if 50 < q:
print('ура') else:
print('не ура')
Однако, получаю следующее:
The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Я понимаю, что результат функции квантиля я должен преобразовать в число, но как это сделать, я не могу понять.
Ответы (1 шт):
Как уже написал уважаемый @strawdog в комментарии, вы пытаетесь считать квантили для столбца со строковым типом данных и к тому же, если задать значения q в виде списка, то в результате вы получите Pandas.Series с заданными в списке значениями q в индексе Series. Поэтому в вашем случае используйте скалярное значение для q.
Пример:
In [54]: if pd.to_numeric(df["score"], errors="coerce").quantile(q=0.33) > 50:
...: print("ура!")
...: else:
...: print(":(")
...:
:(
Если же вы уверены, что в столбце score все значения могут быть преобразованы в целое значение, тогда можно использовать более короткий вариант из комментария @strawdog:
q = df['score'].astype("int").quantile(0.33)