python - 应用程序用户记录的地理位置 - 哪个位置最重要?

标签 python pandas geolocation folium

我正在使用一个记录所有用户地理位置的应用程序。现在重要的是,我要从每个用户在特定时间段内选择最重要的地理位置。例如;对于某个用户,我有上个月的以下位置。

    long    lat
2236    51.471899   5.471339
3432    51.461456   5.486195
3433    51.454544   5.487742
3434    51.471934   5.471232
3567    51.441648   5.464492
3568    51.398149   5.478717
3569    51.467318   5.470221
3570    51.467257   5.478014
3571    51.468200   5.477699
3572    51.443477   5.472390

仅选择此列表中的一个坐标非常重要,该坐标总结了用户最有可能打开应用程序的位置。这将是我们必须集中资源的地方。
主要问题:如何确定特定时间段内每个用户的哪个地理位置最重要?

这里,我在名为 folium 的 Python 库提供的 map 上绘制了一位用户的地理位置

包含一位特定用户的地理位置的 map : enter image description here

我目前解决这个问题的最佳想法
对于每个地理位置,我在地理位置周围取 x 米的半径。我计算了该特定用户有多少其他地理位置属于此范围。在其半径内具有最多其他地理位置的地理位置被视为该特定用户最重要的地理位置。

我向你们提出的问题
我是解决此类问题的新手,我不知道我的解决方案是否是最好的选择,或者是否有更好的解决方案来解决此类问题。如果你们对此问题有任何反馈,我们将不胜感激!

最佳答案

解决方案的开始,你必须安装geopy来简化距离的计算:我假设id是一个位置id,我计算所有位置id之间的所有距离(公里)

from geopy.distance import lonlat,distance

df= pd.DataFrame({'id': [2236, 3432, 3433, 3434, 3567, 3568, 3569, 3570, 3571, 3572],
                  'lon': [51.471899, 51.461456, 51.454544, 51.471934, 51.441648, 51.398149, 51.467318, 51.467257, 51.4682, 51.443477],
                  'lat': [5.471339, 5.486195, 5.487742, 5.471232, 5.464492, 5.478717, 5.470221, 5.478014, 5.477699, 5.47239]})

df_all = pd.merge(df.assign(key=0), df.assign(key=0),suffixes=('', '_loc') , on='key').drop('key', axis=1)

df_all['KM'] = df_all.apply(
    (lambda row:distance(lonlat(row['lon'], row['lat']),lonlat(row['lon_loc'], row['lat_loc'])).km),    axis=1)


print(df_all)

输出:

      id        lon       lat  id_loc    lon_loc   lat_loc        KM
0   2236  51.471899  5.471339    2236  51.471899  5.471339  0.000000
1   2236  51.471899  5.471339    3432  51.461456  5.486195  2.009507
2   2236  51.471899  5.471339    3433  51.454544  5.487742  2.643655
3   2236  51.471899  5.471339    3434  51.471934  5.471232  0.012452
:
10  3432  51.461456  5.486195    2236  51.471899  5.471339  2.009507
11  3432  51.461456  5.486195    3432  51.461456  5.486195  0.000000
12  3432  51.461456  5.486195    3433  51.454544  5.487742  0.784811
:
70  3570  51.467257  5.478014    2236  51.471899  5.471339  0.899710
71  3570  51.467257  5.478014    3432  51.461456  5.486195  1.109818
:
98  3572  51.443477  5.472390    3571  51.468200  5.477699  2.801878
99  3572  51.443477  5.472390    3572  51.443477  5.472390  0.000000

(100 rows)

希望能有所帮助,对我糟糕的英语感到抱歉

关于python - 应用程序用户记录的地理位置 - 哪个位置最重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54886525/

相关文章:

jquery - 如何使用延迟对象通过 HTML5 Geolocation API 检索经度和纬度?

python - 如何用 Pandas 读取json文件?

python - Pandas groupby 然后枢轴没有返回所需的输出

google-maps - W3C 地理定位 API 不适用于 Safari 5

indexing - 使用 Redis 和 Sinatra 为 Facebook 应用程序建立地理空间索引

python - 如何在 df pandas 的行之间删除或填充相等的单元格值 0?

python - 有进度地递归复制文件

python - 使用 tkinter 在直方图中显示出现次数

python - Pygame Colliderect 无法运行

python - Django 1.9 中的 Mysql 连接问题