我有一个 gps 点的数据框 df。我有划分为网格的地理区域。每个网格单元由数据框中的一对两列(行、列)表示。GPS 点标有其交通方式。我想通过其运输方式计算每个网格单元的概率分布。(有五种交通方式,即步行、自行车、汽车、火车、地铁)。
Row Col P(Walk) P(Bike) P(Car) P(Train) P(Subway)
8 8 Freq(walk)/n Freq(bike)/n Freq(car)/n Freq(train)/n Freq(subway)/n
8 9 Freq(walk)/n Freq(bike)/n Freq(car)/n Freq(train)/n Freq(subway)/n
8 10 Freq(walk)/n Freq(bike)/n Freq(car)/n Freq(train)/n Freq(subway)/n
例如,第 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 ... ... ... ... ...
... ... ... ... ... ... ...
'''
grp = df.groupby(['row','col','Transportation_Mode'])
一种方法是使用 for 循环逐个迭代每个组以获取每种运输方式的频率。但我认为他们应该是更容易或更可推广的方式 或库,只需几行就可以解决这个问题。
附上地理区域的图像,以便更好地理解将每个地理区域划分为由行和列表示的网格单元的问题。每个网格单元包含多个标有其运输方式的 GPS 点。
数据框的 csv 文件可在给定的链接中获得,以使数据更加清晰。 https://drive.google.com/open?id=1R_BBL00G_Dlo-6yrovYJp5zEYLwlMPi9