【问题标题】:Make a histogram of a pandas series制作熊猫系列的直方图
【发布时间】:2019-04-02 23:41:59
【问题描述】:

我想制作熊猫系列 (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相当陌生。 谢谢!

【问题讨论】:

  • 每当我尝试使用 plt.hist 时都会出现该错误。这不是数据,它似乎是一个 plt 问题,因为当我尝试做示例时它给出了同样的错误:stackoverflow.com/questions/33203645/…
  • 你能发布你用来导入或定义plt的东西吗? matplotlib.__version__matplotlib.__file__ 的输出是什么?
  • 我是这样导入matplotlib的:import matplotlib.pyplot as plt
  • 我使用的matplotlib版本是“2.2.2”
  • 它可以使用更新的 matplotlib - 谢谢!

标签: python pandas matplotlib histogram series


【解决方案1】:

为了制作一个系列的直方图,我通常直接在系列上调用.hist(),它在后台使用matplotlib

import pandas as pd
import numpy as np

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

data.hist(bins = 50)

给予:

这就是你所追求的吗?

【讨论】:

  • 是的,这就是我所追求的,但是当我尝试您的示例时,我得到了相同的 ValueError。
  • 使用上面的 sn-p,这里没有显示直方图...不知道为什么。
【解决方案2】:

好吧,我在使用 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

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

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

如果您仍然遇到错误,也许您可​​以在绘图之前尝试%matplotlib inline。这会将 matplotlib 使用的后端更改为 inline。有时,无论出于何种原因,默认后端可能会损坏或损坏,因此您可以尝试更改后端以查看是否是导致问题的原因。还有其他后端,例如qt5agg 等。所以,如果这也不能解决您的问题,也许您可​​以尝试其中一些后端。

【讨论】:

    猜你喜欢
    • 2020-03-02
    • 2018-07-05
    • 2019-07-23
    • 2020-10-10
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    相关资源
    最近更新 更多