![](/img/trans.png)
[英]Pandas: What are the cases when count returned by DataFrame describe is a floating point
[英]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.cut
或pd.qcut
对数据进行分箱,因为使用分类数据通常比连续数据更容易。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.