为啥使用 Pandas 的 max 和 min 函数会返回意外结果?

Posted

技术标签:

【中文标题】为啥使用 Pandas 的 max 和 min 函数会返回意外结果?【英文标题】:Why max and min functions are returning unexpected results using Pandas?为什么使用 Pandas 的 max 和 min 函数会返回意外结果? 【发布时间】:2016-05-21 17:18:20 【问题描述】:

我正在使用 csv 格式的心电图数据并将数据读取为:

myECG = pd.read_csv('ECG_MIT.csv');

然后我从上述读取数据中提取了一个名为“ECG”的列(我将其称为 ECG_data)并尝试导出一些有用的指标。​​这些指标包括以下内容。

print 'Max val in ECG: ', ECG_data.max();  #reports 1023

print 'Min val in ECG: ', ECG_data.min(); # reports 0

结果是错误的,因为我通过 Excel 的 max 和 min 函数看到最大值本身是 800,最小值是 474。我还打印了样本值并进行了检查。我还使用了“max(ECG_data)”和“min()”等替代形式。

另外,当我使用时:

print  "Data Summary: \n",myECG.describe() 

我似乎在报告的统计数据中看到了相同的错误值。我在这里做错了什么?请帮忙。谢谢。

【问题讨论】:

你能附上你的数据框的一部分吗?因为没有数据很难判断出了什么问题。 如果您展示了如何提取 ECG_data 列会有所帮助 【参考方案1】:

给小鸟的几点建议: 1.根据您的示例,我将假设您的数据都是整数。 2. 下一步将是验证这一点。如果不是整数,则转换它。 3. 以 excel 升序对您的数据进行排序,以确认您的 excel 最小值和最大值函数产生的结果。 4. 这和熊猫有什么区别? 5. 在 pandas 中,尝试使用列名调用 min 或 max 函数。

这有什么帮助!

【讨论】:

正是如此。我只有整数。正如我提到的,我使用 excel 来提取最大值和最小值。我也使用 pandas 的 max 和 min 函数——myECG 是从 csv 文件中读取的值。它具有 ECG 作为具有所有整数的列。所以我将这些 ECG 值提取到一个名为 ECG_data 的 df 中。然后我使用了各种 max 和 min 函数 - ECG_data.max() 并尝试了 max(ECG_data) 等。所有这些都打印 1023 作为值,并且 csv 文件中的 ECG 列在生成时的最大值仅为 800通过excel。 以下是我的 csv 文件中的 ECG 列。我已经提取并正确打印了它,如下所示。 (样本值在这里) 575 573 572 573 575 576 578 578 579 579【参考方案2】:

01023 恰好是 10 位整数的最小值和最大值。

因此,您可能正在获取对象的某些限制的最小值/最大值(例如,缓冲区往往会以 2 的幂次方增长,而 1024 就是其中之一)。

您需要检查ECG_data 是否是正确的对象类型,以及您是否以正确的方式使用min()/max() 函数。

【讨论】:

你可能是对的。但即使在导出最大值和最小值之前,我也使用了 myECG.describe() 函数,该函数通常会告诉所有关于数据的信息(平均值、中值、最大值、最小值和计数等)。在这个结果摘要中,我还观察到最大值和最小值分别为 1023.00 和 0!正如我在原始帖子中提到的那样,此显示是在使用 pd.read_csv() 命令读取 csv 文件之后立即显示的。在我的其他程序中似乎没有问题!奇怪……我还在挖掘……

以上是关于为啥使用 Pandas 的 max 和 min 函数会返回意外结果?的主要内容,如果未能解决你的问题,请参考以下文章

根据 max 和 min 填写缺失的日期 pandas

Java 8 流的 .min() 和 .max():为啥会编译?

告诉我为啥使用“max,min,sum=arr[0];”这段代码

pandas使用max函数和min函数计算dataframe日期(时间)数据列中最大日期和最小日期(maximum and minimum date or time in dataframe)

pandas使用max函数和min函数计算dataframe日期(时间)数据列中最大日期和最小日期对应的数据行(maximum and minimum date or time row)

为啥 min() (或 max()) 不能与无单位 0 一起使用?