2016-05-09 2 views
5

In un ambiente, ho la versione 0.17.0 dei panda con la versione numpy 1.10.1. In un altro ambiente, ho la versione 0.18.1 dei panda con la versione numpy 1.10.4.panda descrivono 0.18.0 vs panda descrivono 0.17.0

ho eseguito questo pezzo di codice

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

con i panda versione 0.17.0 ottengo questo output:

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 

con i panda versione 0.18.1 ottengo questo output:

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

cosa dà?

+0

informazioni aggiuntive. l'installazione di python è la distribuzione di Anaconda. Ho creato gli ambienti con conda – cyth217

+1

'pd.Series ([1,2,3,4,5, np.NaN]). Describe()' nel mio sistema ('pd .__ versione__' restituisce' 0.18.0') restituisce i quantili appropriati ...? –

+0

qual è la tua versione numpy per i 2 esempi? Il mio è '1.10.4' –

risposta

4

Il tuo problema è che Series.describe() utilizza Series.quantile(), e non v'è attualmente un reported bug (#13098) in Pandas 0.18.1 dove Series.quantile() non tornerà percentili quando la serie contiene nan.

Bug demo dal # 13098:

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

Se si guarda pull #12752 sembra notnull usato per essere usato per rimuovere i valori nan prima percentili di calcolo, ma è stato rimosso.


Aggiornamento:

Questo problema ora sembra essere chiuso con this commit dopo di che Series.quantile() gestisce ancora una volta nan(2016/05/12).