我有一個 csv 資料集,其中有一個名為“事件型別”的列和另一個名為“單元數”的列。
使用 Python 和 Pandas 當事件型別的值為 111 時,我試圖找到“單位數”的平均值。(多次找到)。
我曾嘗試搜索多種 pandas 方法,但無法在龐大的資料集上找到它。
這是問題:
到達分類為“111 - 建筑火災”的事件現場的平均單位數量與到達“651 - 煙霧恐慌,煙味”的單位數量之比是多少?
uj5u.com熱心網友回復:
ML-Nielsen 的價值特定答案的替代方案:
df.groupby('Types of Incidents')['Number of units'].mean()
這將為Number of units所有Incident Types. 如果需要,您也可以指定多個列。
可重現的例子:
data = {
"Incident_Type": [111, 380, 390, 111, 651, 651],
"Number_of_units": [50, 40, 45, 99, 12, 13]
}
data = pd.DataFrame(data)
data
Incident_Type Number_of_units
0 111 50
1 380 40
2 390 45
3 111 99
4 651 12
5 651 13
data.groupby('Incident_Type')['Number_of_units'].mean()
Incident_Type
111 74.5
380 40.0
390 45.0
651 12.5
Name: Number_of_units, dtype: float64
現在,如果您希望找到單位的比率,您需要將此結果存盤為資料框。
average_units = data.groupby('Incident_Type')['Number_of_units'].mean().to_frame()
average_units = average_units.reset_index()
average_units
Incident_Type Number_of_units
0 111 74.5
1 380 40.0
2 390 45.0
3 651 12.5
所以我們將結果存盤在一個名為average_units.
incident1_units = average_units[average_units['Incident_Type']==111]['Number_of_units'].values[0]
incident2_units = average_units[average_units['Incident_Type']==651]['Number_of_units'].values[0]
incident1_units / incident2_units
5.96
uj5u.com熱心網友回復:
如果我理解正確,您可能必須先選擇正確的行,然后計算平均值。像這樣的東西:
df.loc[df['Types of Incidents']==111, 'Number of units'].mean()
這將為您提供Number of units條件df['Types of Incidents']==111為真的平均值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/515543.html
