Различное поведение функций numy sum min max при агрегировании или при применении к списку или массиву - PullRequest
0 голосов
/ 24 апреля 2019

Я вижу другое поведение при применении одной и той же функции numpy в качестве функции агрегирования groupby или к одному и тому же списку значений, когда задействованы значения nan.

Это относится к np.sum np.min np.max и np.mean Поведение в качестве функции агрегирования выглядит так же, как если бы использовались np.nansum, np, nanmin и т. Д.

Например

import pandas as pd
import numpy as np
xx = pd.DataFrame([['A', 1.,  2.,      3.],
                   ['A', 3.,  np.nan,  4.],
                   ['B', 5.,  6.,      np.nan],
                   ['B', 7.,  8.,      9.]])

xx.groupby(0).agg(np.sum)

Придает

       1     2     3
0           
A    4.0   2.0   7.0
B   12.0  14.0   9.0

Но np.array([np.nan,9.]).sum() или np.sum(np.array([np.nan,9])) или np.sum([np.nan,9]) они все выводят nan

Я бы ожидал, что функция агрегации также выдаст nan, в то время как вывод, который я должен генерировать с использованием np.nansum

Панды 0.24.2, numpy 1.16.2

1 Ответ

1 голос
/ 24 апреля 2019

Разница проистекает из поведения панд, а не numpy.sum(). np.NaN автоматически исключаются в pandas.groupby

import pandas as pd
import numpy as np
xx = pd.DataFrame([['A', np.nan],
                   ['A', 4.],
                   ['B', 1],
                   ['B', 2]])

xx.groupby(0).count()

OUTPUT

   1
0   
A  1
B  2
...