web-dev-qa-db-ja.com

pandasシリーズのヒストグラムを作成します

pandas series(prior_fails))のヒストグラムを作成したいのですが、次のValueErrorが発生し続けます。

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

これは私がヒストグラムを呼んでいる方法です

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

以前の失敗は次のインデックスを持つシリーズです:

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')

そして内容:

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

どんな助けでも大歓迎です。私はPythonにかなり慣れていません。ありがとう!

3
Emma

まあ、matplotlibまたはpandas(matplotlib自体を使用してプロットする)のいずれかでヒストグラムをプロットするときにエラーは発生しません。

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

それでもエラーが発生する場合は、プロットの直前に%matplotlib inlineを試すことができます。これにより、matplotlibが使用するバックエンドがinlineに変更されます。時々、デフォルトのバックエンドが何らかの理由で壊れたり壊れたりする可能性があるため、バックエンドを変更して、それが問題の原因であるかどうかを確認することができます。 qt5aggなどの他のバックエンドもあります。したがって、これでも問題が解決しない場合は、これらのバックエンドのいくつかを試すことができます。

4
Kristada673

シリーズのヒストグラムを作成するには、通常、シリーズで直接.hist()を呼び出します。これは、舞台裏でmatplotlibを使用します。

import pandas as pd
import numpy as np

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

data.hist(bins = 50)

与える:

enter image description here

これはあなたが求めているものですか?

1
smj