Hello大家好,欢迎来到【统计GO】,本公众号定期分享一些好用的数据分析工具,帮助大家花更少的时间学更多的知识。
如果本期内容(用Python制作出租车出发点的延时热力图)。如果对您有所帮助,记得及时关注。
背景介绍
对于数据分析汇报来说,将地理空间数据进行可视化是一个非常强大的工具。
本期内容,小编用2016年的打车数据集制作了一个Gif动画,展示了纽约市周一到周日每一小时的打车地点。
数据集来自一个以前的Kaggle竞赛。在这个数据集中,大约有145万条目包含了2016年1月到6月纽约市的出租车出行信息。
Step1:利用Panda读取数据
原始的数据集已经进行了预清理,不包含任何空值,共有11列,如下图所示:
考虑到本文出发点,小编只选取了原始数据中三个变量:
pickup_datetime
pickup_longitude
pickup_latitude
接下来,通过调用panda系列的dt.dayofweek()函数,创建一个新列来计算星期数。这将返回一个从0到6的整数,其中0是Monday, 6是Sunday。最后通过调用panda系列dt.hourofday()函数,创建另一列获取小时数。下面是得到的dataframe的示例:
Step2:利用Folium绘制热图
绘制热力图的库有很多,出于个人爱好,小编使用Folium.
接下来,定义一个函数,允许你在你的Jupyter Notebook中以IFrame方式查看地图,并将地图保存为.html格式:
为了按时间周期绘制热图,使用了一个嵌套的for循环来迭代每周的每一天和每小时的排列。对于For循环中的每个迭代,我首先过滤数据,使其只包括每周一天和每小时的观察结果,然后保存这个asdf_geo。
Step3:创建Gif格式的热力图
最后一步是将热图保存为png格式,并将png文件拼接在一起创建一个gif动画。
接下来使用selenium包(web开发人员中流行的自动化工具)来自动化这个过程。要按时间顺序打开热图并捕捉截图,使用另一个嵌套的for循环在Chrome浏览器中打开文件,并将每个热图文件的截图保存在指定的文件夹中png格式。
最后是创建gif动画!首先安装和导入PIL (Python映像库)和glob包。然后,定义一个函数来将一系列png图像转换为动画的gif。我所调用的png_to_gif函数有三个参数:
path_to_images(表示.png图像文件保存在哪里);
save_file_path(定位保存.gif文件的文件夹);
每个图像帧的持续时间;
这个函数检索png图像并将它们保存为gif动画的帧。
总结
步骤1:使用pandas读取数据,从pickup_datetime创建日期和星期的列
步骤2:创建一个嵌套的for循环,遍历每个时间间隔并用folium绘制热图。
步骤3:创建gif的热图,通过自动截图捕获使用elenium包创建的png格式的每个热图,然后使用PIL和glob包。转换成一个gif动画。