从地址数据创建图表

数据挖掘 Python 图表
2022-03-01 13:32:37

从地址数据创建图表的最佳/最简单方法是什么?例如,如果我在一个城市有 100 座房子,有没有什么简单的方法可以确定两座房子之间的最短距离以及所有这些好东西?这是否需要将数据更改为坐标并使用 GIS 软件,或者我可以使用 Python 或 R 吗?

3个回答

作为 Graph/Complex Networks 的人,我推荐Python 中的Networkx包。这是我过去两年用于硕士论文和研究的主要图书馆。只要您的图表不是巨大的(数百万个节点),您就可以使用 Networkx 来处理它。

但是您需要的不仅是库,还需要一种将数据转换为图表的理念。你的数据到底是什么?如果你有一些地址,节点是什么,边缘是什么?这实际上很重要。除非您有顶点和边的定义,否则图形不是根据您的地址构建的。

当您将数据转换为图形时,Networkx 为您提供所有精美的算法(最短路径、社区检测、统计分析等)。

如果您在此处的评论中提供信息,我将详细回答您的问题。

这是使用 R 包的简单解决方案ggmap

start <- '95 clark st, new haven, ct'
end <- 'maison mathis, new haven, ct'
legs <- route(start,end, alternatives = TRUE)

start将找到从到 的路线end

      m    km     miles seconds   minutes       hours  startLon startLat    endLon   endLat leg route
1    60 0.060 0.0372840       7 0.1166667 0.001944444 -72.91617 41.31511 -72.91678 41.31541   1     A
2   718 0.718 0.4461652      95 1.5833333 0.026388889 -72.91678 41.31541 -72.92100 41.30979   2     A
3   436 0.436 0.2709304      64 1.0666667 0.017777778 -72.92100 41.30979 -72.92555 41.31171   3     A
4   431 0.431 0.2678234      68 1.1333333 0.018888889 -72.92555 41.31171 -72.92792 41.30829   4     A
5    60 0.060 0.0372840       7 0.1166667 0.001944444 -72.91617 41.31511 -72.91678 41.31541   1     B
6  1276 1.276 0.7929064     179 2.9833333 0.049722222 -72.91678 41.31541 -72.92430 41.30543   2     B
7   421 0.421 0.2616094      62 1.0333333 0.017222222 -72.92430 41.30543 -72.92869 41.30729   3     B
8   129 0.129 0.0801606      28 0.4666667 0.007777778 -72.92869 41.30729 -72.92792 41.30829   4     B
9    60 0.060 0.0372840       7 0.1166667 0.001944444 -72.91617 41.31511 -72.91678 41.31541   1     C
10  421 0.421 0.2616094      58 0.9666667 0.016111111 -72.91678 41.31541 -72.91924 41.31211   2     C
11  522 0.522 0.3243708     101 1.6833333 0.028055556 -72.91924 41.31211 -72.92502 41.31382   3     C
12  240 0.240 0.1491360      33 0.5500000 0.009166667 -72.92502 41.31382 -72.92555 41.31171   4     C
13  431 0.431 0.2678234      68 1.1333333 0.018888889 -72.92555 41.31171 -72.92792 41.30829   5     C

然后我们可以找到估计步行到那里的时间长度。

tapply(legs$minutes, legs$route, max)

希望这可以帮助!

如果您有纬度/经度坐标数据,那么使用大圆计算来完成这一点应该没有问题,这确实可以在 Python、R 或基本上任何其他语言中完成。

这是一篇关于几种方法和计算的文章:

计算纬度/经度点之间的距离、方位等

仅街道地址数据的主要问题当然是缺乏关于街道物理布局的上下文信息。给定足够完整的相关区域比例图,您还可以计算距离。也就是说,除非提到的比例图也被绘制为球体的表面,否则上面文章中讨论的半正弦公式将具有更高的准确性。