从Folium中的结果创建新列

如何解决从Folium中的结果创建新列

我一直在使用西雅图的事故数据库,其中包含大约200,000起事故的坐标。 例如,我要做的是将这些事故按地区进行地理分组。为此,我使用folium在地图上可视化了分组,但是现在我不知道如何将这些相同的组提取数据库中的新列中(甚至可能的话)。 我已经解决了这个问题很多时间了,但是我不知道如何解决它……请帮助!

这是我对folium所做的事情和结果:

from folium import plugins
#Using Seattle's latitude and longitude 
latitude = 47.608013 
longitude = -122.335167


seattle_map = folium.Map(location = [latitude,longitude],zoom_start = 12)

incidents = plugins.MarkerCluster().add_to(seattle_map)

for lat,lng,label,in zip(database.Y,database.X,database.SEVERITYCODE):
    folium.Marker(
        location=[lat,lng],icon=None,popup=folium.Popup(label),).add_to(incidents)

seattle_map

Output Folium

解决方法

如果要添加西雅图的地区,则可以将此Github存储库与有关西雅图的各种地理数据结合使用:https://github.com/seattleio/seattle-boundaries-data

例如,如果要在地图上添加邮政编码区域,则可以使用如下的geojson文件:

latitude = 47.608013 
longitude = -122.335167

url = "https://raw.githubusercontent.com/seattleio/seattle-boundaries-data/master/data/zip-codes.geojson"

seattle_map = folium.Map(location = [latitude,longitude],zoom_start = 12)
folium.GeoJson(
    url,name='zip_code'
).add_to(seattle_map)

seattle_map

如果要将邮政编码区域添加到碰撞数据中,最好是使用Folium中的Choropleth贴图。您需要对数据进行一些处理才能知道碰撞属于哪个邮政编码区域。我使用匀称的库来这样做。您可以创建这样的代码:

import json
import requests
import folium
import pandas as pd
from shapely.geometry import shape,Point

# Url of the geojson with zipcode of Seattle
url = "https://raw.githubusercontent.com/seattleio/seattle-boundaries-data/master/data/zip-codes.geojson"
# Import data of the collisions in Seattle
df = pd.read_csv("Collisions.csv")
# Keep only lat and long
df_clean = df.loc[:,["X","Y"]]
df_clean = df_clean.dropna()

r = requests.get(url)
for index,row in df_clean.iterrows():
    for feature in r.json()["features"]:
        polygon = shape(feature['geometry'])
        point = Point(row[0],row[1])
        if polygon.contains(point):
            df_clean.loc[index,'ZCTA5CE10'] = feature["properties"]['ZCTA5CE10']
            break
            
df_clean = df_clean.dropna()
result = df_clean.groupby(["ZCTA5CE10"])["X"].count()
result = pd.DataFrame(result)
result.reset_index(level=0,inplace=True)

#Using Seattle's latitude and longitude 
latitude = 47.608013 
longitude = -122.335167

seattle_map = folium.Map(location = [latitude,zoom_start = 12)
folium.Choropleth(
 geo_data=url,name='choropleth',data=result,columns=["ZCTA5CE10",'X'],key_on='feature.properties.ZCTA5CE10',fill_color='YlOrRd',).add_to(seattle_map)

seattle_map

就性能而言,您可以提高我的代码很多(使用for循环创建数据框的新列显然不是最佳选择)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?