【问题标题】:Seaborn tsplot not showing CI bandsSeaborn tsplot 未显示 CI 波段
【发布时间】:2015-05-23 06:26:14
【问题描述】:

我有一个示例数据框here(它是df 的泡菜)。当我执行以下操作时:

df = pd.read_pickle('test.pickle')
sns.tsplot(data=df.sort('time', ascending=True), time='time', unit='entity', condition='prior_type', value='perf')

我得到以下输出(无):

当我将其更改为使用 unit_traces 时,我实际上可以看到数据

sns.tsplot(data=df.sort('time', ascending=True), time='time', unit='entity', condition='prior_type', value='perf', err_style='unit_traces')

我的问题是为什么我看不到 CI?数据在某些地方有点脱节,但我仍然认为它应该能够得出某种置信区间。我在这里遗漏了什么吗?

【问题讨论】:

  • 您的坐标轴相差近四个数量级...缩放是否以某种方式中断,您只需将第一个图重新缩放为 0-400?
  • @AN6U5 我试过了,我实际上是想重新缩放第一个图,我的数据中有一些非常大的异常值,但绝大多数都在第二个图的范围内,所以我希望看看那里的一些置信区间
  • 这看起来像当 y 轴限制设置为 None 时会发生什么,也许尝试设置 ylim 到 pyplot 例如plt.ylim((0, 400)),虽然我不确定为什么一开始就没有设置限制。
  • 顺便说一下,pickle 文档 (docs.python.org/2/library/pickle.html) 建议“永远不要解开从不受信任或未经身份验证的来源收到的数据”。所以在未来,最好只提供几行数据框。
  • @exp1orer 注意,我这样做主要是为了确保有足够的数据用于绘图,但将来会考虑到这一点,感谢您的注意

标签: python pandas dataframe confidence-interval seaborn


【解决方案1】:

如果缺少数据,默认估计器 (numpy.mean) 会生成 NaN,而 matplotlib 只是避免了绘图(通常很有帮助,但在这里可能会造成混淆)。使用 nan-safe 估计器,例如 scipy.stats.nanmean 应该可以工作。抱歉,这在文档中并不明显。

【讨论】:

    【解决方案2】:

    scipy.stats.nanmean 从 scipy 0.15.0 开始被弃用,取而代之的是 numpy.nanmean。在scipy 0.15.0 documentation 中阅读更多内容。

    【讨论】:

      猜你喜欢
      • 2017-08-14
      • 2017-05-11
      • 2015-09-24
      • 2016-07-22
      • 1970-01-01
      • 2016-03-14
      • 1970-01-01
      • 2015-02-10
      相关资源
      最近更新 更多