2016-05-09 2 views
5

В одной среде у меня есть версия pandas 0.17.0 с numpy версии 1.10.1. В другой среде у меня есть версия pandas 0.18.1 с numpy версии 1.10.4.pandas описать 0.18.0 vs pandas описать 0.17.0

я запускаю этот кусок кода

from pandas import Series 
import numpy as np 
Series([1,2,3,4,5,np.NaN]).describe() 

С пандами версии 0.17.0 Я получаю этот выход:

count 5.000000 
mean  3.000000 
std  1.581139 
min  1.000000 
25%  2.000000 
50%  3.000000 
75%  4.000000 
max  5.000000 
dtype: float64 

с пандами версии 0.18.1 я получаю этот выход:

count 5.000000 
mean  3.000000 
std  1.581139 
min  1.000000 
25%   NaN 
50%   NaN 
75%   NaN 
max  5.000000 
dtype: float64 

Что дает?

+0

Дополнительная информация. Установка python - это дистрибутив Anaconda. Я создал среды с conda – cyth217

+1

'pd.Series ([1,2,3,4,5, np.NaN]). Описать()' в моей системе ('pd .__ version__' возвращает' 0.18.0') возвращает правильные квантили ...? –

+0

какая у вас версия numpy для двух примеров? Шахта «1.10.4» –

ответ

4

Ваш вопрос в том, что Series.describe() использует Series.quantile(), и в настоящее время в панд 0.18.1 reported bug (#13098) где Series.quantile() не вернется процентили, когда ряд содержит nan.

Bug демо от # 13098:

>>> import pandas as pd 
>>> import numpy 
>>> s = pd.Series([1, 2, 3, 4, numpy.nan]) 
>>> s.quantile(0.5) 
nan 

Если посмотреть на pull #12752 это выглядит как notnull используется для использования для удаления nan значений перед вычислением процентили, однако она была удалена.


Update:

Этот вопрос сейчас, похоже, закрыт с this commit, после чего Series.quantile() еще раз обрабатывает nan(2016/05/12).