Pandas.unique() Returning an Arrary with None type Value

Viewed 1152

I´ve created a new column in a Dataframe that contains the categorical feature 'QD' which describes in which "decile" (the 10%, 20, 30% lower values) the value of another feature of the DataFrame is positioned. You can see the DF head below:

    EPS CPI POC Vendeu          Delta       QD
1   20692   1   19185.30336 0   -1506.69664 QD07
8   20933   1   20433.27115 0   -499.72885  QD08
10  20393   1   20808.04948 0   415.04948   QD10
18  20503   1   19153.45978 0   -1349.54022 QD07
19  20587   1   20175.31906 1   -411.68094  QD09

Data Frame Head

The 'QD' column was created through the function below:

minimo = DF['EPS'].min()
passo = (DF['EPS'].max() - DF['EPS'].min())/10

def get_q(value):
    for i in range(1,11):        
        if value < (minimo + (i*passo)):
            return str('Q' + str(i).zfill(2))

Function applied on 'Delta'

Analyzing this column, I noticed something strange:

AUX2['QD'].unique()

out:

array(['QD07', 'QD08', 'QD10', 'QD09', 'QD06', 'QD05', 'QD04', 'QD03',
       'QD02', 'QD01', None], dtype=object)

'QD' unique values

de .unique() method returns an array with an none value on it. At first I thought there was something wrong with the function, but when I tried to grab the position of the none value, look:

AUX2['QD'].value_counts()

out:

QD05    852
QD04    848
QD06    685
QD03    578
QD07    540
QD08    377
QD02    318
QD09    209
QD10     68
QD01     61
Name: QD, dtype: int64

.value_counts()

len(AUX2[AUX2['QD'] == None]['QD'])

out:

0

len()

What am I missing here?

1 Answers

When you are using .value_counts() add dropna=False

df[df['name column'].isnull()]
Related