Python 3.x 分组概率分布

Python 3.x 分组概率分布,python-3.x,pandas,numpy,scipy,probability-distribution,Python 3.x,Pandas,Numpy,Scipy,Probability Distribution,我有一个gps点的数据帧df。我将地理区域划分为网格。每个网格单元由数据帧中的两列(行、列)对表示。GPS点标有其运输方式。我想通过运输方式计算每个网格单元的概率分布。(有五种交通方式,即步行、自行车、汽车、火车、地铁) 例如,第8行的网格单元,第8列包含638个gps点。598个步行点和40个地铁点然后该特定网格单元的每种运输模式的概率变为 Row Col P(Walk) P(Bike) P(Car) P(Train) P(Subway

我有一个gps点的数据帧df。我将地理区域划分为网格。每个网格单元由数据帧中的两列(行、列)对表示。GPS点标有其运输方式。我想通过运输方式计算每个网格单元的概率分布。(有五种交通方式,即步行、自行车、汽车、火车、地铁)

例如,第8行的网格单元,第8列包含638个gps点。598个步行点和40个地铁点然后该特定网格单元的每种运输模式的概率变为

Row Col   P(Walk)        P(Bike)       P(Car)         P(Train)       P(Subway)
 8   8    598/638        0/638         0/638           0/638          40/638
 8   9      ...           ...           ...             ...            ...
 8   10     ...           ...           ...             ...            ...
... ...     ...           ...           ...             ...            ...
'''

一种方法是使用for循环逐个迭代每个组,以获得每个运输模式的频率。但我认为他们应该更容易,或者更具大众化的方式,或者只需几行就可以解决这个问题的图书馆

为了更好地理解将每个地理区域划分为由行和列表示的网格单元的问题,附上了地理区域的图像。每个网格单元包含多个标有其运输模式的gps点

数据框的csv文件在给定的链接中提供,以更清晰地显示数据。

如果我没有弄错的话,您正在寻找一种更优雅的方法来循环每个组对象,并为每个组对象生成二维概率分布

听起来您应该研究一下(更具体地说是
apply
函数)

您可以简单地对每个组应用一个可视化,比如这样,然后将各个图连接回您提供的网格中。使用一点
ax
magic,您可以为每种运输类型构建一个网格。我认为这些是手头最好的工具。我将把逻辑留给你

Row Col   P(Walk)        P(Bike)       P(Car)         P(Train)       P(Subway)
 8   8    598/638        0/638         0/638           0/638          40/638
 8   9      ...           ...           ...             ...            ...
 8   10     ...           ...           ...             ...            ...
... ...     ...           ...           ...             ...            ...
grp = df.groupby(['row','col','Transportation_Mode'])