csv 查找多行或所有行的panda Dataframe 列的平均值

oug3syen  于 2022-12-15  发布在  其他
关注(0)|答案(2)|浏览(145)

我有一个csv数据集,其中有一个列名为“事件类型”,另一个列名为“单位数量”。
使用Python和Pandas,我试图找到当事件类型的值为111时“单位数”的平均值。(它被多次找到)。
我尝试过多种搜索Pandas的方法,但无法找到如何在一个庞大的数据集中找到它。
问题是这样的:

到达归类为“111 -建筑物火灾”的事故现场的单位平均数量与到达归类为“651 -烟雾恐慌、烟味"的事故现场的单位平均数量之比是多少?

bzzcjhmw

bzzcjhmw1#

ML-Nielsen价值观特定答案的替代答案:
df.groupby('Types of Incidents')['Number of units'].mean()
这将提供所有Incident Types的平均值Number of units。如果需要,您也可以指定多个列。
可重现示例:

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

现在,如果您希望找到单元的比率,则需要将此结果存储为 Dataframe 。

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的 Dataframe 中。

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
pobjuy32

pobjuy322#

如果我没理解错的话,你可能需要先选择正确的行,然后计算平均值。

df.loc[df['Types of Incidents']==111, 'Number of units'].mean()

这将给予Number of units的平均值,其中条件df['Types of Incidents']==111为真。

相关问题