Квантильная функция в питоне игнорирует NaN? - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть dfAB

import pandas as pd
import random

A = [ random.randint(0,100) for i in range(10) ]
B = [ random.randint(0,100) for i in range(10) ]

dfAB = pd.DataFrame({ 'A': A, 'B': B })
dfAB

Мы можем взять функцию квантиля, потому что я хочу знать 75-й процентиль столбцов:

dfAB.quantile(0.75)

Но, скажем, теперь я поместил несколько NaN в dfAB и заново сделал функцию, очевидно, она отличается:

dfAB.loc[5:8]=np.nan
dfAB.quantile(0.75)

Обычно, когда я вычислял среднее значение dfAB, я пропускал skipna, чтобы игнорировать значения Na, поскольку я не хотел, чтобы они влияли на мою статистику (у меня есть довольно много в моем коде, намеренно, и obv, делающий их нулевыми, не делает ') t help)

dfAB.mean(skipna=True)

Итак, что я имею в виду, является ли / как квантильная функция адресом NaN?

1 Ответ

0 голосов
/ 04 сентября 2018

Да, похоже, pd.quantile обрабатывает значения NaN. Чтобы проиллюстрировать это, вы можете сравнить результаты с np.nanpercentile, который явно Вычисляет четвертый процентиль данных вдоль указанной оси, , игнорируя значения nan (процитировано из документы , мой акцент):

>>> dfAB
      A     B
0   5.0  10.0
1  43.0  67.0
2  86.0   2.0
3  61.0  83.0
4   2.0  27.0
5   NaN   NaN
6   NaN   NaN
7   NaN   NaN
8   NaN   NaN
9  27.0  70.0

>>> dfAB.quantile(0.75)
A    56.50
B    69.25
Name: 0.75, dtype: float64

>>> np.nanpercentile(dfAB, 75, axis=0)
array([56.5 , 69.25])

И видите, что они эквивалентны

...