import foliumworld_map = folium.Map(location=[20.5937, 78.9629], zoom_start=4)
world_mapMake this Notebook Trusted to load map: File -> Trust Notebook
解决jupyter包中的一些问题
import pip
def install(packages):
pip.main(['install', packages])
install('package_name')
Stamen Toner graph
stamen toner图可快速的实现可视化,生产高对比度的图
world_map2=folium.Map(location=[28,77],zoom_start=4,tiles="Stamen Toner")
world_map2Make this Notebook Trusted to load map: File -> Trust Notebook
stamen Terrain图
world_map = folium.Map(location=[25,116.42], zoom_start=4, tiles = "Stamen Terrain")
world_mapMake this Notebook Trusted to load map: File -> Trust Notebook
latitude=25.04
longitude=116.04
sh=folium.Map(location=[latitude,longitude],zoom_start=10)
shMake this Notebook Trusted to load map: File -> Trust Notebook
地图的实际运用
#data import
import pandas as pd
df = pd.read_csv('data/Police_Department_Incidents_-_Previous_Year__2016_.csv')
df.head()| IncidntNum | Category | Descript | DayOfWeek | Date | Time | PdDistrict | Resolution | Address | X | Y | Location | PdId | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 120058272 | WEAPON LAWS | POSS OF PROHIBITED WEAPON | Friday | 01/29/2016 12:00:00 AM | 11:00 | SOUTHERN | ARREST, BOOKED | 800 Block of BRYANT ST | -122.403405 | 37.775421 | (37.775420706711, -122.403404791479) | 12005827212120 |
| 1 | 120058272 | WEAPON LAWS | FIREARM, LOADED, IN VEHICLE, POSSESSION OR USE | Friday | 01/29/2016 12:00:00 AM | 11:00 | SOUTHERN | ARREST, BOOKED | 800 Block of BRYANT ST | -122.403405 | 37.775421 | (37.775420706711, -122.403404791479) | 12005827212168 |
| 2 | 141059263 | WARRANTS | WARRANT ARREST | Monday | 04/25/2016 12:00:00 AM | 14:59 | BAYVIEW | ARREST, BOOKED | KEITH ST / SHAFTER AV | -122.388856 | 37.729981 | (37.7299809672996, -122.388856204292) | 14105926363010 |
| 3 | 160013662 | NON-CRIMINAL | LOST PROPERTY | Tuesday | 01/05/2016 12:00:00 AM | 23:50 | TENDERLOIN | NONE | JONES ST / OFARRELL ST | -122.412971 | 37.785788 | (37.7857883766888, -122.412970537591) | 16001366271000 |
| 4 | 160002740 | NON-CRIMINAL | LOST PROPERTY | Friday | 01/01/2016 12:00:00 AM | 00:30 | MISSION | NONE | 16TH ST / MISSION ST | -122.419672 | 37.765050 | (37.7650501214668, -122.419671780296) | 16000274071000 |
df.shape
limit=100
df=df.iloc[0:limit,:]
df| IncidntNum | Category | Descript | DayOfWeek | Date | Time | PdDistrict | Resolution | Address | X | Y | Location | PdId | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 120058272 | WEAPON LAWS | POSS OF PROHIBITED WEAPON | Friday | 01/29/2016 12:00:00 AM | 11:00 | SOUTHERN | ARREST, BOOKED | 800 Block of BRYANT ST | -122.403405 | 37.775421 | (37.775420706711, -122.403404791479) | 12005827212120 |
| 1 | 120058272 | WEAPON LAWS | FIREARM, LOADED, IN VEHICLE, POSSESSION OR USE | Friday | 01/29/2016 12:00:00 AM | 11:00 | SOUTHERN | ARREST, BOOKED | 800 Block of BRYANT ST | -122.403405 | 37.775421 | (37.775420706711, -122.403404791479) | 12005827212168 |
| 2 | 141059263 | WARRANTS | WARRANT ARREST | Monday | 04/25/2016 12:00:00 AM | 14:59 | BAYVIEW | ARREST, BOOKED | KEITH ST / SHAFTER AV | -122.388856 | 37.729981 | (37.7299809672996, -122.388856204292) | 14105926363010 |
| 3 | 160013662 | NON-CRIMINAL | LOST PROPERTY | Tuesday | 01/05/2016 12:00:00 AM | 23:50 | TENDERLOIN | NONE | JONES ST / OFARRELL ST | -122.412971 | 37.785788 | (37.7857883766888, -122.412970537591) | 16001366271000 |
| 4 | 160002740 | NON-CRIMINAL | LOST PROPERTY | Friday | 01/01/2016 12:00:00 AM | 00:30 | MISSION | NONE | 16TH ST / MISSION ST | -122.419672 | 37.765050 | (37.7650501214668, -122.419671780296) | 16000274071000 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 95 | 160014858 | OTHER OFFENSES | FRAUDULENT GAME OR TRICK, OBTAINING MONEY OR P... | Wednesday | 01/06/2016 12:00:00 AM | 06:00 | TARAVAL | NONE | 2000 Block of 29TH AV | -122.486926 | 37.749084 | (37.7490841729028, -122.486925960114) | 16001485809024 |
| 96 | 160015163 | NON-CRIMINAL | AIDED CASE | Wednesday | 01/06/2016 12:00:00 AM | 16:09 | MISSION | NONE | 14TH ST / FOLSOM ST | -122.415616 | 37.768536 | (37.7685360123583, -122.41561633832) | 16001516351040 |
| 97 | 160015276 | BURGLARY | BURGLARY, UNLAWFUL ENTRY | Tuesday | 01/05/2016 12:00:00 AM | 20:00 | PARK | NONE | 1000 Block of COLE ST | -122.449752 | 37.764430 | (37.7644297714074, -122.449751652563) | 16001527605073 |
| 98 | 160015276 | LARCENY/THEFT | GRAND THEFT FROM UNLOCKED AUTO | Tuesday | 01/05/2016 12:00:00 AM | 20:00 | PARK | NONE | 1000 Block of COLE ST | -122.449752 | 37.764430 | (37.7644297714074, -122.449751652563) | 16001527606224 |
| 99 | 160015282 | LARCENY/THEFT | GRAND THEFT FROM LOCKED AUTO | Tuesday | 01/05/2016 12:00:00 AM | 17:00 | TARAVAL | NONE | 0 Block of ARDENWOOD WY | -122.472716 | 37.735268 | (37.7352681469084, -122.472715759631) | 16001528206244 |
可视化
可视化发生在2016年的事件,绘制地图从默认开始,选择旧金山的经纬度,然后将缩放级别初始化在12。
la=37.77
lo=-122.42
sanmap = folium.Map(location=[la,lo],zoom_start=12)
sanmapMake this Notebook Trusted to load map: File -> Trust Notebook
将数据整合到地图上。可通过folium中的featuregroup()来完成。 可创建一个具有自己特征和样式的特征组并将其添加到地图上。
incidents=folium.map.FeatureGroup()for lat,lng, in zip(df.Y,df.X): #zip 接受一系列可迭代的对象作为参数,将对象中对应的元素打包一个tuple(元组)
incidents.add_child(
folium.CircleMarker(
[lat,lng],
radius=5,
color="yellow",
fill=True,
fill_color="blue",
fill_opacity=0.6
))
sanmap.add_child(incidents) #add_child 是将子元素添加到原来的部分Make this Notebook Trusted to load map: File -> Trust Notebook
for lat, lng in zip(df.Y, df.X):
incidents.add_child(
folium.CircleMarker(
[lat, lng],
radius=5,
color='yellow',
fill=True,
fill_color='blue',
fill_opacity=0.6
))
latitudes = list(df.Y)
longitudes = list(df.X)
labels = list(df.Category)
for lat, lng, label in zip(latitudes, longitudes, labels):
folium.Marker([lat,lng], popup=label).add_to(sanmap)
sanmap.add_child(incidents)Make this Notebook Trusted to load map: File -> Trust Notebook
删除位置标记
sanmap=folium.Map(location=[la,lo],zoom_start=12)
for lat,lng, label in zip(df.Y,df.X,df.Category):#遍历所有的标记
folium.CircleMarker(
[lat, lng],
radius=5,
color="yellow",
fill=True,
popup= label,#栈中弹出所有的label
fill_color="blue",
fill_opacity=0.6
).add_to(sanmap)
sanmapMake this Notebook Trusted to load map: File -> Trust Notebook