为啥使用 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】:0
和 1023
恰好是 10 位整数的最小值和最大值。
因此,您可能正在获取对象的某些限制的最小值/最大值(例如,缓冲区往往会以 2 的幂次方增长,而 1024 就是其中之一)。
您需要检查ECG_data
是否是正确的对象类型,以及您是否以正确的方式使用min()
/max()
函数。
【讨论】:
你可能是对的。但即使在导出最大值和最小值之前,我也使用了 myECG.describe() 函数,该函数通常会告诉所有关于数据的信息(平均值、中值、最大值、最小值和计数等)。在这个结果摘要中,我还观察到最大值和最小值分别为 1023.00 和 0!正如我在原始帖子中提到的那样,此显示是在使用 pd.read_csv() 命令读取 csv 文件之后立即显示的。在我的其他程序中似乎没有问题!奇怪……我还在挖掘……以上是关于为啥使用 Pandas 的 max 和 min 函数会返回意外结果?的主要内容,如果未能解决你的问题,请参考以下文章
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)