簡體   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