共享单车数据可视化分析

Data Analyse

November

29.2018

· · · · · ·

共享单车是一种全新的自行车租赁方式,我们通过App注册会员、租赁和归还自行车;整个过程能用手机就能完成,不得不说共享单车的出现为我们的生活带来了许多便利。

为了更好地服务和维护共享单车平台,开发和运营人员会通过系统记录的数据来研究和优化共享单车平台,挖掘数据有用信息,最后落地优化系统。这些系统生成的数据很有吸引力,骑行时间、出发地点、到达地点和经过的时间都被显式地记录下来。因此,自行车共享系统作为一个传感器网络,可以用于研究城市的流动性。(分享一篇有趣的文章:

用共享单车数据,我们发现了武汉几个特别的地方

本次分享的数据来自Kaggle-"Bike Sharing Demand"

平台分享该数据集的初衷是鼓励探索者们结合历史骑行数据和天气数据,以预测美国首都华盛顿的共享自行车租赁需求,本文从数据可视化角度切入进行EDA探索,理解数据,并为预测数据做准备。

本文框架:

▼ 数据描述 ▲

数据由训练集和测试集组成,涵括了2011-2012年每小时的骑行数据。训练集由每个月的前19天组成,而测试集是第20天到月末。项目要求使用测试集中的信息预测所涵盖的每个小时内租用自行车的总数。

上图为数据描述的官方文档,可见数据包含了12个特征字段,大致能分为三类:

时间类特征:datetime,season,holiday,workdingday;

天气类特征:weather,temp,atemp,humidity,windspeed;

目标类特征:casual,registered,count;

▼ 数据预处理 ▲

读取数据后,将训练数据集与测试数据集合并,首先查看数据的异常和缺失情况:

三个目标变量存在缺失值,且数量与测试数据集一致,因此能判断数据较完整无缺失情况,缺失的只是我们需要预测的那一部分目标变量。我们将超过样本均值3个标注差以外的数据看作异常值,本此分析对异常情况暂不处理,留到模型构建前再筛选排除。

数据预处理

将量化的特征转换为方便识别和可视化的字段:

将被量化的季节特征和天气特征转化为用字符串描述的数据。

▼ 特征衍生 ▲

为了更好地理解数据,分析前我们需要判断能否从数据已有的特征中提取、构建出某些有价值的特征,这就是衍生特征

在本篇分析的数据中,我们能对时间数据datetime做特征衍生,datetime包含了日期和时间信息,从中我们能提取出年、月、日、小时等信息。提取筛选方法可用正则表达式、字符串方法或者Datetime时间戳等方法提取,我这里使用最后一种方法:

▼ 可视化分析 ▲

在这部分,我通过Matplotlib、Seaborn、pyechaerts等工具可视化理解数据,分析特征与标签之间的相关性,为数据预测做准备。

4.1 标签特征的整体分布

count-总骑行需求为本次分析的标签特征,我们需要围绕此特征做可视化分析,最后预测它。

上图是count的核密度图:可见count分布呈右偏状,主要集中在0~400这个区间。

4.2 时间维度看需求趋势

• 月份维度

数据涵括了两年的跨度,因此按年分开绘制每个月的骑行需求趋势图:

上图为可视化结果,整体上可见2012年相较于2011年,骑行的需求有了大幅的增长。总需求和注册用户需求的变化最为明显,而非注册用户提升效果一般,这说明:经过一年的运营,越来越多的使用者在平台上注册了,注册用户提升显著。从月份角度,我们能看到的是:6月~9月是骑行旺季,12月~2月是骑行淡季。

• 小时维度

按照一天24小时可视化骑行需求,我们能发现一些有趣的结论:

观察24小时骑行需求:存在6~7AM、5~6PM两个峰值,中午12AM有一个小峰值,符合通勤规律,注册用户特征更为明显,而非注册用户则变化平缓。

• 工作日和非工作日的小时维度

工作日和非工作日每小时的骑行是否有差别呢?

可见工作日与非工作日的骑行需求规律反差巨大,非工作日的共享单车苏醒慢,骑行需求高峰出现在12AM~3PM的这段时间内,另外凌晨0AM~4AM的骑行需求大于工作日,周末使劲造!

• 不同季节的小时维度

不同季节会有差别吗?让我们看下:

春夏秋冬四季24小时需求趋势一致,值得关注的是春季的整体小于夏秋冬三个季节,体感舒适度最高的秋天整体骑行需求最高。为何春季需求会低于其他季节?这是个值得思考的问题,单限于数据信息有限,未找出合理的解释。这也说明了结合业务的重要性,只有深入了解了业务规律才能做出准确判断。

• 3D柱状图展示一周每日不同时间段的骑行需求

使用pyecharts的Bar3D绘制3D柱状图,从周期、小时、需求量三个维度展示数据:

从3D柱状图中我们能大致看出小时维度的需求趋势差异、工作日和周末的趋势差异。(这里未找到合适的调色板,高频的色差不是很明显,后期再探索)

4.3 天气维度

不同天气、气温等外在环境会影响骑行需求。

• 不同天气状况的骑行需求

下图为天气状况的散点分布图,每个点代表每个小时的骑行需求:

可见,天气情况越糟,骑行需求越小。

整体需求趋势也印证了,天气越差骑行需求越少,极端天气未形成趋势线,极端情况还是占少数的。

• 气温与体表温度

气温与体表温度应该是正相关的,先来看看两者的分布图:

从两者的关系度量图中我们能看出呈现正相关分布,另外能获取到的信息是:颜色最深的分布最为集中,最适宜的气温27℃~28℃、体表温度31℃左右的骑行需求最密集

• 气温与风速

风速的分布存在断层,初步推断可能是异常数据,这里先不做处理;可见气温27℃~28℃,风速8~9骑行需求最密集

• 气温与湿度

气温27℃~28℃,湿度80~90骑行需求最密集

上图说明了:风速达到一定级别后,风速越大骑行量越少。

• 天气因素与骑行需求

气温和风速作为天气因素分析骑行需求(忽略体表温度,气温即代表了体表温度),使用散点图绘制,散点的大小和颜色代表了骑行量,每个散点代表一天。

可见骑行需求较多的分布范围:气温20℃~35℃,风速40以下;人们更热衷于温暖天气骑行,炎热天气需求大的原因可能是因为相对于公共交通,骑行更加灵活方便吧。

气温和湿度作为天气因素分析骑行需求:

可见骑行需求较多的分布范围:气温20℃~35℃,湿度20~80。

4.5 注册用户与未注册用户

如何能提升平台用户数量?当然是拉新促活促转化,接下来,让我们来观察下注册用户与非注册用户的差异吧。

上图为注册用户与非注册用户在各因素下的差异组合图:

• 第一幅为两者的月度差异图,可见整体趋势相同,注册用户远高于非注册用户;

• 第二幅为两者的小时差异图,可见注册用户的小时规律明显,非注册用户则只在12AM~5PM存在峰值,整体差异较大;

• 第三幅为两者的工作日差异图,可见注册用户工作日小时规律明显,二非注册用户趋势平缓;

• 第四幅为两者的非工作日差异图,可见非工作日两者差异相较于其他因素差异较小,且趋势相同,值得注意的是注册用户在凌晨更加活跃。

总的来说,注册用户需求远高于非注册用户,注册用户的使用规律明显,而非注册用户受其他因素的影响相对较弱。

▼ 结总 ▲

经过上述的可视化分析,我们对数据有了大致的把握,对数据特征之间的关系有了初步的了解。

季节、小时、月份、工作日非工作日、天气状况、温度、湿度、风速等特征对总体需求量有相关性,且注册用户与非注册用户在各情况下还存在需求差异:

因此在构建模型是可考虑这些特征,通过特征打分来决定哪些特征我们能放图模型训练。最后放上一张相关性图,初步的可视化分析到这里就结束了,以后会尝试运用随机森林对目标变量进行预测。

源代码已分享至个人知乎号:

https://zhuanlan.zhihu.com/p/51093994

-END-

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181129G1EDA400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券