Kaggle丨使用Python和R绘制数据地图的十七个经典案例(附资源)
目前,Kaggle用户在我们的开放数据科学平台上创建了近3万颗内核。这代表了惊人且不断增长的可再现知识。我发现我们的代码和数据库是目前了解Python和R最新技术和库的好地方。
在这篇博客中,我将一些优秀的用户内核变成迷你教程,作为在Kaggle上发布的数据集进行绘制地图的开始。这篇文章中,你将学习如何用Python和R,使用包括实际代码示例的几种方法来布局和可视化地理空间数据。我还列出了资源,以便你可以了解每个教程中突出显示的每个包以及进一步的用户分析,从而获得更多的灵感。
前言
为了探索目的而创建一个简单的地图不再需要你学习如何操作shapefile或想象投影。并且,无论你喜欢在R或Python,都有快速和简单的方法把你的数据展现在地图上。
注:Shapefile文件是描述空间数据的几何和属性特征的非拓扑实体矢量数据结构的一种格式
R 地图
对于R用户,Kaggler Umesh显示,你需要的是ggplot2和Hadley Wickham的地图包,借助CDC在Kaggle上发布的数据,以显示美国哪些州每日吸烟者的百分比最高。
数据包下载链接:http://docs.ggplot2.org/current/map_data.html
然后,创建地图本身就像创建任何其他ggplot可视化一样熟悉。
最终的成果清楚地描述了美国哪些州每天吸烟人数最多。
这里,还有一些更好的资源用于使用地图、mapsdata和ggplot2:
在R中绘制地图
http://eriqande.github.io/rep-res-web/lectures/making-maps-with-R.html
使用ggplot2软件包在R中绘制地图
http://zevross.com/blog/2014/07/16/mapping-in-r-using-the-ggplot2-package/
请注意,你目前无法在内核中使用ggmaps。在大多数情况下,你不能做诸如从我们的环境中调用API的事情。
Python 地图
对于Python用户来说, matplotlib底图工具包是绘制2D地图一个好的起始。你可以在底图文档中阅读更多内容,这里有各种示例。
数据包下载链接:http://matplotlib.org/basemap/
有很多用户编写的大内核,但Kaggler Dotman则显示了使用底图来很轻松地将纽约市近100万Uber行程的数据可视化:
有关演示如何使用Python中的底图来生成有效的地图可视化的更多示例,请查看以下这些用户内核:
美国宽带手机接入的地图可视化(Jesse Lieman-Sifry制作)。
https://www.kaggle.com/jliemansifry/d/census/2013-american-community-survey/making-a-map-easy-example-using-basemap/code
使用2014年美国社区调查数据处理shapefile(Phil Butcher分派的代码)。
https://www.kaggle.com/mrisdal/d/census/2014-american-community-survey/using-shapefiles-fork-of-2013-code/code
南非犯罪的Choropleth地图(Kostya Bahshetsyan制作)。
https://www.kaggle.com/kostyabahshetsyan/d/slwessels/crime-statistics-for-south-africa/choropleth-map-of-crime-south-afrika
互动地图
使用交互式地图(和一般的交互式数据可视化),你可以将颜色限制为只有你认为与你的受众更广泛相关的颜色,而且还可以让用户在需要更多信息的地方深入查看。在这里,我强调了使用Plotly,Leaflet和Highcharter创建的用户创建的地图。
Plotly
在FiveThirtyEight提供的数据集中,用户可以检查追溯到1971年的美国警察死亡原因。鉴于位置信息,Kaggler Abigail Larion比较了使用Python和Plotly状态的警察死亡地图。她的代码演示了如何简单地用计数(国家人口归一化)创建一个干净和互动的地图:
美国警察的死亡情况
有关使用Plotly的交互式拼版地图的更多示例,请查看其页面上的详细代码示例。有R和Python的样本适合你的映射需求。按照以下教程,使用Plotly也可以尝试其他任何地图类型:
县级choropleth
https://plot.ly/python/county-level-choropleth/
散点图
https://plot.ly/python/scatter-plots-on-maps/
气泡图
https://plot.ly/python/bubble-maps/
地图上的线条
https://plot.ly/python/lines-on-maps/
小倍数映射
https://plot.ly/python/map-subplots-and-small-multiples/
因为包括数据在内的代码是最好的学习方式,因为Plotly在Kaggle的Python用户中很流行,这里有一些更好的内核:
气温和全球变暖分析地图
https://www.kaggle.com/amelinvladislav/d/berkeleyearth/climate-change-earth-surface-temperature-data/map-of-temperatures-and-analysis-of-global-warming
出生时的全球预期寿命
https://www.kaggle.com/kostyabahshetsyan/d/worldbank/world-development-indicators/python-plotly-mapping-example
UFO在美国的报道
https://www.kaggle.com/abigaillarion/d/NUFORC/ufo-sightings/ufo-reports-in-united-states
Leaflet
在Kaggle Kernels中创建交互式地图的另一个方法是Leaflet。Leaflet是一个用于移动友好交互式地图的开源JavaScript库。有一个伟大的R Leaflet,使其易于集成和控制在R中的单张地图。你可以阅读Leaflet的小部件以及如何在他们的教程操作其属性。
EwenHenderson的一个梦幻般的内核使用超级简洁的Leaflet检查来自波士顿的Airbnb数据中的邻居列表和“超级主机”。
分析位于波士顿的Airbnb主机。
不是所有的Leaflet的教程都必须适用于在内核中专门制作地图,但这里有一些可能在开始使用:
单页快速入门指南
http://leafletjs.com/examples/quick-start/
互动Choropleth地图(案例研究)
http://leafletjs.com/examples/choropleth/
使用GeoJSON与Leaflet
http://leafletjs.com/examples/geojson/
在我的印象里,高分辨率R包是一个新的包。但是,它是我见过的最光滑的内核。如他们的主页上所述,“Highcharter是Highcharts Javascript库及其模块的R包装。你可以在这里找到他们的文档。在另一个Ewen Henderson的内核中,他分析了由FiveThirtyEight作为Kaggle数据集发布的2016年调查数据,使高速成像看起来超级容易使用。注意他使用恰当的Highcharter主题是FiveThirtyEight。
在2016年总统选举投票数据中,共和党与民主党的(平均)偏好。
要获得更多高级灵感,你可以在这里找到更多资源:
来自Highcharter的“展示”的鼓舞人心的可视化
http://jkunst.com/highcharter/showcase.html
更多“高地图”的例子
http://jkunst.com/highcharter/highmaps.html
动画地图
互动地图可以是很好的,当你想让读者在他们的休闲细节控制探索数据。如果你的目标是说明一个特定的故事,传达随着时间的变化作为数据中的一个新的维度,或只是添加一些引人注目的戏剧,你可以选择动画。是的,你可以在内核可视化动画gif图。
一个用户pavelevap使用记录历史全球气温的数据创建一个惊人的动画,显示世界各地城市的平均温度。当你观看动画展开,你急切希望更多的蓝色球体出现。这使得pavelevap的可视化和底图的使用相当有效。
动画地图的其他示例:
在中国的一天(Charles Darwin, 一个Kaggle用户, Python)。
https://www.kaggle.com/maddarwin/talkingdata-mobile-user-demographics/one-day-in-china-geolocation-animation/run/306864/code
将历史温度异常动画化。(Donyoe, R)
https://www.kaggle.com/donyoe/d/noaa/global-historical-climatology-network/animation-historical-temperature-anomalies/code
非常规地图
只是因为你有坐标数据并不意味着它属于传统的世界地图。你可以将你在这里学到的很多内容,包括地图制作、互动和动画,转移到足球场甚至是星际上。我会给你留下这些几个奖金的绘制坐标数据地图的例子:
利用martijn探索事件数据(R)。这个内核不仅可以显示你如何整理凌乱的XML文件,而且还可以显示如何绘制和映射在欧洲足球比赛期间发生的事件。
研究科比·布莱恩特的射门选位置择(Arjoonn Sharma, Python)。该作者显示,剩下的时间越少,科比在越远的投篮位置上越冒风险。
在科比布莱恩特的投篮选择的时间背后的探索。
利用DBenn绘制外太阳行星的3D空间位置的地图(R)。这个内核展示了Plotly中酷炫的3D绘图功能,将太阳系行星的位置可视化了。
使用Plotly在3D空间中绘制外行星。
检查此内核中的交互式代码。
所以,你看到了显示了数据绘图技术的十七个例子。任何这些内核的交叉和延伸,再佐以自己的天赋或通过选择“新脚本”或“新笔记本”,在Kaggle上发布的200多个功能数据集中get你的新的地图制作技能。
来源链接: http://blog.kaggle.com/2016/11/30/seventeen-ways-to-map-data-in-kaggle- kernels/
注:本稿件摘自数据观入驻自媒体- 大数据文摘 ,转载请注明来源,百度搜索“数据观”获取更多大数据资讯。
责任编辑:汤德正