[英]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.