【问题标题】:Seaborn pairplot ValueError: max must be larger than min in range parameterSeaborn pairplot ValueError:最大值必须大于范围参数中的最小值
【发布时间】:2018-05-05 02:58:13
【问题描述】:

在 Python 中使用 seaborn 库绘制 pairplot 时出现此错误。参考之前针对同一主题提出的问题,我清理了我的数据并验证了我是否有任何空值,

train_data.isnull().values.any()
Out[91]: False

import seaborn as sns
sns.pairplot(train_data)

对于 seaborn 情节,我仍然收到此值错误。我不确定除了清理数据之外,我们还能做些什么来避免这个错误。添加有关数据的更多信息,我总共有 81 列和大约 50 万行。我删除了一行具有所有空值并且没有剩余数据是空的。现在的问题是如何处理这个错误。有什么建议吗?

【问题讨论】:

  • @rickert 我看到了同样的错误,建议的解决方案是清理数据并释放空值。我确实清理并从 null 中释放出来,仍然收到此错误。
  • @yan 您可能内存不足并出现此错误。切片数据集并检查它是否有效

标签: python pandas seaborn


【解决方案1】:

您的数据框可能有 NaN 值。删除这些行或将 NaN 替换为 0,它应该可以工作。

【讨论】:

  • @StephenRauch,您可以将 NaN 替换为 0,如 train_data = train_data.fillna(0)。要删除 NaN,您可以执行 train_data.dropna(inplace=True)
【解决方案2】:

我收到了同样的错误。我建议你做几件事。首先,检查您是否有string 数据类型并将其转换为float 或不添加pairplot,分割您的数据集然后在其中工作。我的意思是,dimensional reduction。 81 列可能不是实验的最佳选择。正如您提到的,您有 50 万行和 81 列。首先尝试较小的数据集,然后再尝试较大的数据集。 Seaborn plot 有时无法在本地系统上容纳如此多的行和列。如果您尝试使用更大 RAM 的集群,它可能会正常工作,但此错误并不新鲜。努力工作

exp = test_data[0:10][:1000]
sns.pairplot(exp)

在应用此之前,首先删除所有字符串列并仅在 floatint 值列上进行试验。我希望这有帮助。

【讨论】:

  • 谢谢!我删除了所有字符串并且它起作用了。我只是想知道为什么一些浮点值在清理时被转换为对象类型(字符串)。
  • 发生这种情况是因为您可能分配了字符串的默认值而不是 int。
【解决方案3】:

您需要删除 oririn DataFrame 中的所有 NaN 值。使用方法df.dropna()

【讨论】:

    【解决方案4】:

    面对同样的问题,df.fillna() 不会在我们的数据框中用 NaN 替换值。请使用 df.replace(np.nan, your_value)

    【讨论】:

      猜你喜欢
      • 2017-06-20
      • 1970-01-01
      • 2014-03-22
      • 1970-01-01
      • 2014-11-14
      • 2020-01-30
      • 1970-01-01
      • 1970-01-01
      • 2012-05-12
      相关资源
      最近更新 更多