繁体   English   中英

Pandas中浮点索引的目的是什么?

[英]What is the purpose of floating point index in Pandas?

s.index=[0.0,1.1,2.2,3.3,4.4,5.5]
s.index
# Float64Index([0.0, 1.1, 2.2, 3.3, 4.4, 5.5], dtype='float64')
s
# 0.0    141.125
# 1.1    142.250
# 2.2    143.375
# 3.3    143.375
# 4.4    144.500
# 5.5    145.125
s.index=s.index.astype('float32')
# s.index
# Float64Index([              0.0, 1.100000023841858, 2.200000047683716,
#               3.299999952316284, 4.400000095367432,               5.5],
#              dtype='float64')

浮点索引背后的直觉是什么? 努力理解我们何时会使用它们而不是 int 索引(似乎您可以拥有三种类型的索引:int64、float64 或 object,例如s.index=['a','b','c','d','e','f'] )。

从上面的代码中,看起来 Pandas 真的希望浮点索引为 64 位,因为这些 64 位浮点数被强制转换为 32 位浮点数,然后返回到 64 位浮点数,索引的dtype剩下'float64'

人们如何使用浮动指数?

您是否可能对数据进行一些统计计算并希望对其结果进行排名,但这些结果可能是浮动的? 我们想强制float64避免丢失分辨率?

由于一般浮点限制,浮点索引通常对基于标签的索引无用。 当然, pd.Float64Index存在于 API 中以确保完整性,但这并不总是意味着您应该使用它。 Jeff(核心库贡献者)在github上有这样的话:

[...] 很少需要实际使用浮点索引; 使用列通常会更好。 索引的重点是使单个元素更快,例如 df[1.0],但这很棘手; 这就是对此有问题的原因。

1.0 == 1.0的棘手部分并不总是正确的,这取决于您如何以位表示1.0

浮动索引在少数情况下很有用(如 github 问题中所引用的),主要用于记录时间轴(时间),或在天文数据中进行极其微小/准确的测量。 对于大多数其他情况,可以pd.cutpd.qcut对数据进行分箱,因为使用分类数据通常比连续数据更容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM