找回密码
 骑士注册

QQ登录

微博登录

搜索
❏ 站外平台:

构建你的数据科学作品集:用数据讲故事

2017-10-22 21:01    评论: 1    

设置上下文

在我们开始数据挖掘之前,我们将希望设置上下文,不仅为了我们自己,也是为了其它阅读我们分析的人。一个好的方法就是建立挖掘图表或者地图。因此,我们将在地图标出所有学校的位置,这将有助于读者理解我们所探索的问题。

在下面的代码中,我们将会:

  • 建立纽约市为中心的地图。
  • 为城市里的每所高中添加一个标记。
  • 显示地图。

In [82]:

import folium
from folium import plugins

schools_map = folium.Map(location=[full['lat'].mean(), full['lon'].mean()], zoom_start=10)
marker_cluster = folium.MarkerCluster().add_to(schools_map)
for name, row in full.iterrows():
    folium.Marker([row["lat"], row["lon"]], popup="{0}: {1}".format(row["DBN"], row["school_name"])).add_to(marker_cluster)
schools_map.create_map('schools.html')
schools_map

Out[82]:

这个地图十分有用,但是不容易查看纽约哪里学校最多。因此,我们将用热力图来代替它:

In [84]:

schools_heatmap = folium.Map(location=[full['lat'].mean(), full['lon'].mean()], zoom_start=10)
schools_heatmap.add_children(plugins.HeatMap([[row["lat"], row["lon"]] for name, row in full.iterrows()]))
schools_heatmap.save("heatmap.html")
schools_heatmap

Out[84]:

区域级别映射

热力图能够很好的标出梯度,但是我们将需要更结构化的画出不同城市之间的 SAT 分数差距。学区是一个图形化这个信息的很好的方式,就像每个区域都有自己的管理者。纽约市有数十个学区,并且每个区域都是一个小的地理区域。

我们可以通过学区来计算 SAT 分数,然后将它们画在地图上。在下面的代码中,我们将会:

  • 通过学区对 full 进行分组。
  • 计算每个学区的每列的平均值。
  • 去掉 school_dist 字段头部的 0,然后我们就可以匹配地理数据了。

In [ ]:

district_data = full.groupby("school_dist").agg(np.mean)
district_data.reset_index(inplace=True)
district_data["school_dist"] = district_data["school_dist"].apply(lambda x: str(int(x)))

我们现在将可以画出 SAT 在每个学区的平均值了。因此,我们将会读取 GeoJSON 中的数据,转化为每个区域的形状,然后通过 school_dist 列对每个区域图形和 SAT 成绩进行匹配。最终我们将创建一个图形:

In [85]:

def show_district_map(col):
    geo_path = 'schools/districts.geojson'
    districts = folium.Map(location=[full['lat'].mean(), full['lon'].mean()], zoom_start=10)
    districts.geo_json(
        geo_path=geo_path,
        data=district_data,
        columns=['school_dist', col],
        key_on='feature.properties.school_dist',
        fill_color='YlGn',
        fill_opacity=0.7,
        line_opacity=0.2,
    )
    districts.save("districts.html")
    return districts

show_district_map("sat_score")

Out[85]:

查看其它分页:

最新评论

我也要发表评论

海南老王 [Safari 11.0|Mac 10.11] 2017-10-23 00:04 26 回复
好长的文章,不过可以慢慢跟着做,要是有国内的数据源就好了

LCTT 译者

Yoo-4x 🌟 🌟
共计翻译: 2 篇 | 共计贡献: 97
贡献时间:2017-01-08 -> 2017-04-14
访问我的 LCTT 主页 | 在 GitHub 上关注我

收藏

返回顶部

分享到微信

打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。