web-dev-qa-db-fra.com

Faire un histogramme d'une série pandas

Je veux faire un histogramme d'une série pandas (prior_fails)) mais je reçois toujours la ValueError suivante:

ValueError: view limit minimum -36814.8560105 is less than 1 and is an 
invalid Matplotlib date value. This often happens if you pass a non-datetime 
value to an axis that has datetime units

Voici comment j'appelle l'histogramme

plt.hist(prior_fails)
plt.ylabel('Frequency')
plt.xlabel('Days of Failure (%)')

échoue avant est une série avec l'index suivant:

prior_fails.index
Out[85]: 
Index([u'prior110', u'prior113', u'prior118', u'prior141', u'prior144',
   u'prior16', u'prior217', u'prior223', u'prior245', u'prior29',
   u'prior352', u'prior360', u'prior370', u'prior438', u'prior55',
   u'prior59', u'prior60', u'prior68', u'prior74', u'prior88'],
  dtype='object')

Et le contenu:

prior_fails
Out[86]: 
prior110    13.962170
prior113    10.861125
prior118    21.304131
prior141    11.309109
prior144    11.363863
prior16     14.479841
prior217    10.403186
prior223    14.201095
prior245     7.974116
prior29     17.401692
prior352     9.860627
prior360    12.339472
prior370    16.207068
prior438    16.381284
prior55     20.587357
prior59     10.452962
prior60     15.828771
prior68     16.769537
prior74     16.918865
prior88      9.805874
dtype: float64

Toute aide serait grandement appréciée. Je suis assez nouveau sur python. Merci!

3
Emma

Eh bien, je ne reçois aucune erreur lors du traçage de l'histogramme avec matplotlib ou pandas (qui utilise matplotlib lui-même pour tracer).

import pandas as pd

data = {'ind': ['prior110', 'prior113', 'prior118', 'prior141', 'prior144', 'prior16', 'prior217', 'prior223', 'prior245', 'prior29', 'prior352', 'prior360', 'prior370', 'prior438', 'prior55', 'prior59', 'prior60', 'prior68', 'prior74', 'prior88'],
        'val': [13.96217, 10.861125, 21.304131, 11.309109, 11.363863, 14.479841, 10.403186, 14.201095, 7.974116, 17.401692, 9.860627, 12.339472, 16.207068, 16.381284, 20.587357, 10.452962, 15.828771, 16.769537, 16.918865, 9.805874]}

prior_fails = pd.DataFrame(data, columns=['ind', 'val'])

prior_fails.set_index('ind', inplace=True)

prior_fails

enter image description here

# with pandas
prior_fails.hist()
plt.ylabel('Frequency')
plt.xlabel('Days of Failure (%)')
plt.title('Histogram')

enter image description here

# with matplotlib
import matplotlib.pyplot as plt
plt.hist(prior_fails.val)
plt.ylabel('Frequency')
plt.xlabel('Days of Failure (%)')

enter image description here

Si l'erreur persiste, vous pouvez peut-être essayer %matplotlib inline juste avant de comploter. Cela changera le backend que matplotlib utilise en inline. Parfois, le backend par défaut peut être cassé ou corrompu pour une raison quelconque, vous pouvez donc essayer de changer les backends pour voir si cela est à l'origine du problème. Il existe également d'autres backends, comme qt5, agg, etc. Donc, si cela ne résout pas non plus votre problème, vous pouvez peut-être essayer certains de ces backends.

4
Kristada673

Pour faire un histogramme d'une série, j'appelle normalement .hist() directement sur la série, qui utilise matplotlib en arrière-plan:

import pandas as pd
import numpy as np

data = pd.Series(np.random.randn(1000))

data.hist(bins = 50)

Donnant:

enter image description here

C'est ce que tu cherches?

1
smj