La raison pour laquelle vous avez un tas de valeurs nan
est parce que vous n'avez pas la colonne homogène les types. Par exemple, lorsque vous essayez de faire la moyenne sur les colonnes, cela n'a aucun sens car pandas.read_csv
ne convertira en une colonne numérique que si cela a du sens, par exemple, vous n'avez pas de date de chaîne ou d'autre texte dans la même colonne .
Je vous recommande également de faire un simple df.head()
pour vérifier vos données avant même d'effectuer des analyses simples. Cela vous fera économiser beaucoup de temps dans le futur lorsque vous vous demanderez pourquoi votre production est "bizarre".
Cela dit, vous pouvez faire ce qui suit pour convertir des choses à des valeurs numériques, mais cela ne garantit pas nécessairement à donner un sens:
In [35]: df = read_csv('GOOG Key Ratios.csv', skiprows=2, index_col=0, names=['Y%d' % i for i in range(11)])
In [36]: df.head() # not homogeneously typed columns
Out[36]:
Y0 Y1 Y2 Y3 Y4 \
NaN 2003-12 2004-12 2005-12 2006-12 2007-12
Revenue USD Mil 1,466 3,189 6,139 10,605 16,594
Gross Margin % 57.3 54.3 58.1 60.2 59.9
Operating Income USD Mil 342 640 2,017 3,550 5,084
Operating Margin % 23.4 20.1 32.9 33.5 30.6
Y5 Y6 Y7 Y8 Y9 Y10
NaN 2008-12 2009-12 2010-12 2011-12 2012-12 TTM
Revenue USD Mil 21,796 23,651 29,321 37,905 50,175 55,797
Gross Margin % 60.4 62.6 64.5 65.2 58.9 56.7
Operating Income USD Mil 6,632 8,312 10,381 11,742 12,760 12,734
Operating Margin % 30.4 35.1 35.4 31.0 25.4 22.8
In [37]: df.convert_objects(convert_numeric=True).head()
Out[37]:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Revenue USD Mil NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Gross Margin % 57.3 54.3 58.1 60.2 59.9 60.4 62.6 64.5 65.2 58.9 56.7
Operating Income USD Mil 342.0 640.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
Operating Margin % 23.4 20.1 32.9 33.5 30.6 30.4 35.1 35.4 31.0 25.4 22.8
Si vous avez 'nan' dans votre sortie, alors cela signifie généralement il était seulement 'nan' dans l'entrée, modulo un bug. –
Comment puis-je vérifier Si mon entrée est NaN? Parce que quand j'imprime le GrossMargin j'ai obtenu une valeur numérique .. – abuteau
En appelant 'pandas.isnull' sur n'importe quel objet. Par exemple, vous pouvez appeler 'pandas.isnull (the_frame)'. –