亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PANDAS 分位數根據我們的提問方式給出不同的答案

PANDAS 分位數根據我們的提問方式給出不同的答案

MMTTMM 2023-01-04 15:46:52
兩天前的新問題。當您擁有大量數據時,PANDAS 可以讓您在生成統計數據的同時就地過濾內容,因此您不必為所有內容創建新的數據框?,F在,我懷疑這樣做有細微差別,因為以兩種不同的方式做事 - 一種是“智能”方式,一種是“明確”方式,給了我非常不同的答案,一種顯然是正確的(明確的),一個顯然是錯誤的(聰明的方式)。有人可以指出我所缺少的方向。這是細節。我有 250 萬行數據,描述了一系列不同設備類型的故障時間。其中兩個的描述性統計數據如下。(請注意,這些實際上是采礦設備,但我必須清理一些東西,所以我已經替換了名稱)。                                   Count        Min        Mean          MaxCC_CauseLocationEquipmentType                                           Coffee Machines                    204136  0.000556   71.797146  23407.41667Blenders                            52424  0.008333  750.880591  23077.79167如果我嘗試獲取設備故障時間的分位數,使用print(df2.groupby("CC_CauseLocationEquipmentType").quantile([.1, .25, .5, .75,0.9,0.95,0.99,0.99999]))然后我看到以下分位數。
查看完整描述

2 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

很有意思。至少在我的 Pandas (0.25.1) 版本中顯然存在一個 bug df.groupby(...).quantile(<array-like>)。該代碼路徑是不同的,甚至在非常簡單的例子中似乎也被打破了,比如:


df = pd.DataFrame(

    {"A": [0., 0., 0.], "B": ["X", "Y", "Z"]}

)

result = df.groupby("B").quantile([0.5, 0.9])

雖然它適用于 2 元素版本:


df = pd.DataFrame(

    {"A": [0., 0.], "B": ["X", "Y"]}

)

result = df.groupby("B").quantile([0.5, 0.9])

我會避免在類似數組的對象上使用 groupby 和分位數,直到代碼被修復,即使在它現在可以工作的情況下也是如此,因為它很可能容易出錯。


Blame 還顯示了很多相當新鮮的更新(10 個月、16 個月)也正是處理這些代碼片段。


查看完整回答
反對 回復 2023-01-04
?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

您在兩個示例中都看不到分位數在起作用。只有零,每個組只有一個元素,所以結果總是零。還是我在這里錯了?


我有 pandas 0.25.3 并獲得有用的結果


import pandas as pd


df = pd.DataFrame(

    {"A": [1., 2., 3., 4., 5., 6.], "B": ["X", "X", "Y", "Y", "Z", "Z"]}

)

result = df.groupby("B").quantile([0.5, 0.9])

print(result)

輸出:


        A

B         

X 0.5  1.5

  0.9  1.9

Y 0.5  3.5

  0.9  3.9

Z 0.5  5.5

  0.9  5.9

如果它適用于傳遞給你的單個數字,quantiles()你可以破解類似


q = [0.2, 0.5, 0.9]

res = [df.groupby("B").quantile(_).loc['X', 'A'] for _ in q]


df_q = pd.DataFrame({'A':res, 'quantiles':q})


print(df_q)

輸出:


     A  quantiles

0  1.2        0.2

1  1.5        0.5

2  1.9        0.9

直到它被修復。


查看完整回答
反對 回復 2023-01-04
  • 2 回答
  • 0 關注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號