这个项目运用Python的folium库来制作出地图可视化的数据分析图。我这次直接获取的已经下载好的一个城市犯罪嫌疑人的excel表格。
先是获取数据
import folium
import requests
import pandas
arrest_table = pandas.read_csv("https://cmsc320.github.io/files/BPD_Arrests.csv")
arrest_table = arrest_table[pandas.notnull(arrest_table["Location 1"])]
arrest_table["lat"], arrest_table["long"] = arrest_table["Location 1"].str.split(",").str
arrest_table["lat"] = arrest_table["lat"].str.replace("(", "").astype(float)
arrest_table["long"] = arrest_table["long"].str.replace(")", "").astype(float)
arrest_table.head()
运行结果
然后开始制作地图,我把每一个犯罪嫌疑人的犯罪地点在地图上标注了出来,并且根据人种划分标记点的颜色,黑色为黑人,灰色为白人,红色为亚裔,绿色为拉丁裔。
sample = arrest_table.sample(1000)
for idx, row in sample.iterrows():
if (row['sex'] == 'M'):
fillColor = 'blue'
else:
fillColor = 'red'
if (row['race'] == 'B'):
folium.Circle(
radius=50,
location=[row['lat'], row['long']],
popup=row['arrestLocation'],
color='black',
fill=True,
fill_color=fillColor,).add_to(map_osm)
elif (row['race'] == 'A'):
folium.Circle(
radius=50,
location=[row['lat'], row['long']],
popup=row['arrestLocation'],
color='yellow',
fill=True,
fill_color=fillColor,).add_to(map_osm)
elif (row['race'] == 'I'):
folium.Circle(
radius=50,
location=[row['lat'], row['long']],
popup=row['arrestLocation'],
color='green',
fill=True,
fill_color=fillColor,).add_to(map_osm)
elif (row['race'] == 'W'):
folium.Circle(
radius=50,
location=[row['lat'], row['long']],
popup=row['arrestLocation'],
color='grey',
fill=True,
fill_color=fillColor,).add_to(map_osm)
else:
folium.Circle(
radius=50,
location=[row['lat'], row['long']],
popup=row['arrestLocation'],
color='crimson',
fill=True,
fill_color=fillColor,).add_to(map_osm)
map_osm
效果图