摘" 要:在现代城市交通中,共享单车的普及带来了大量骑行数据,蕴含丰富的用户行为信息。文章旨在通过对Kaggle共享单车数据集的深入分析,探讨影响共享单车使用模式的主要因素。采用Python的Pandas库进行数据处理,并利用Seaborn和Matplotlib进行可视化分析,以直观展示数据特征和用户行为模式。研究发现,租赁数量与温度、湿度及风速等气象因素密切相关,且在特定时段内租赁活动更为频繁。这一研究不仅展示了Pandas、Seaborn及Matplotlib在数据可视化中的优越性,还为城市交通管理和共享单车运营提供了数据支撑,从而优化交通管理、提升用户体验。
关键词:大数据分析;可视化;共享单车数据;Python
中图分类号:TP391.4" 文献标识码:A" 文章编号:2096-4706(2024)23-0058-06
Visualization of Urban Sharing Bicycle Rental Analysis Based on Pandas+Seaborn+Matplotlib
XU Hao1, LIU Wanyue2, ZHANG Zihao1
(1.School of Artificial Intelligence and Big Data, Henan University of Technology, Zhengzhou" 450001, China;
2.iFLYTEK Co., Ltd., Hefei" 230088, China)
Abstract: The widespread adoption of sharing bicycles in modern urban transportation has brought a vast amount of riding data which contains rich information about user behavior. This paper aims to conduct an in-depth analysis of the Kaggle sharing bicycle dataset to explore the main factors influencing sharing bicycle usage patterns. It utilizes Pandas library of Python for data processing and employs Seaborn and Matplotlib for visual analysis, providing an intuitive display of data characteristics and user behavior patterns. The study finds that rental quantities are closely related to meteorological factors such as temperature, humidity, and wind speed, with rental activities being more frequent during specific time periods. This research not only demonstrates the superiority of Pandas, Seaborn, and Matplotlib in data visualization, but also provides data support for urban traffic management and sharing bicycle operation, thereby optimizing traffic management and enhancing user experience.
Keywords: Big Data analysis; visualization; sharing bicycle data; Python
0" 引" 言
自行车共享系统作为传统自行车租赁的新一代,从注册会员到租赁再到归还整个过程实现自动化。用户可轻松在特定位置租用自行车并在另一位置归还,目前全球约有500多个共享单车项目,由50多万辆自行车组成。因其在交通、环境和健康问题上发挥重要作用,人们对其产生极大兴趣。与此同时,众多研究者也对这些系统所产生的数据兴致盎然。与公共汽车或地铁等其他运输服务不同,共享自行车使用的持续时间、出发时间和到达位置都明确记录在系统中。所以,对今天共享单车数据的分析,不管是针对商业价值或是学术研究,对共享单车数据的分析也尤为重要。
而在“互联网+”与大数据快速发展的当下,高效处理并展示大量数据成为亟待解决的问题之一[1]。而数据分析可视化能提升数据呈现效果,让用户更迅速、直观地理解复杂数据。通过Python对共享单车使用数据进行深入挖掘[2],既能为城市交通规划者和共享单车运营商提供数据支撑,进而优化交通管理、提高用户体验,又能进一步拓展自行车共享系统的价值。
1" 利用Python进行数据可视化
要实现更高效的数据分析,采用具有强大绘图功能的Python语言处理数据至关重要。Python作为解释性编程语言,在人工智能、网络爬虫、科学计算与统计等诸多方面广泛应用,其数据分析功能强大,可显著提高数据分析效率[3]。
之所以运用Python语言处理,是因为其拥有众多适用于数据分析和数据可视化的工具库,如Seaborn、Pandas、Numpy和Matplotlib。Matplotlib是Python的一个2D绘图库,用于生成图形和图表。它在数据科学和机器学习中广泛应用于数据可视化[4]。在本实验中,Matplotlib用于绘制模型训练和验证过程中的损失曲线和准确率曲线,帮助直观分析模型的性能。Pandas是一个强大的分析结构化数据的工具集,它的使用基础是Numpy(提供高性能的矩阵运算),用于数据挖掘和数据分析,同时也提供数据清洗功能。Seaborn则是一个建立在Matplotlib基础之上的Python数据可视化库,专注于绘制各种统计图形,以便更轻松地呈现和理解数据[5]。
因此,利用具有强大绘图功能的Python语言处理数据对于更有效地开展数据分析十分必要[6]。
2" 数据简介
城市共享单车的租赁分析针对的是共享单车在某一特定时段的租赁数量。本文的数据集是来自Kaggle竞赛的美国华盛顿共享单车租赁数据,数据的特征主要包含季节、节假日、工作日、天气、日期、温度、湿度、未注册人员数量、注册人员数量以及共享单车使用量等各种方面的信息,共享单车的租赁数据如表1所示。
3" 共享单车租赁数据集的预处理
3.1" 数据集的导入分析
首先导入数据集并使用info函数查看具体数据,程序运行结果如图1所示。
首先大致观察数据和列标签的形态,接着运用函数查看数据的基本信息。由此可知,该数据一共有10 886行、12列。每一列都对应着共享单车租赁的不同特性。其中,三列数据为浮点型,“datetime”列的数据为字符串类型,其余数据为整型。“datetime”列的数据展示了单车租赁的具体时间和日期,“holiday”与“workingday”分别用“1”和“0”表示“是”和“否”,“season”则用“1”“2”“3”“4”来代表春、夏、秋、冬四个季节。
3.2" 缺失值的处理
查看本次数据中是否含有缺失值,使用missingno库中的matrix函数Pandas DataFrame类型创建一个矩阵热图,显示数据中缺失值的分布情况,运行结果如图2所示。
缺失值矩阵图展示了数据集中每列的缺失值情况。图中的每一列代表数据集的一列,行代表每个数据样本。白色的条代表缺失值,深色的条代表存在的数据。通过这种可视化,可以直观地看到数据集中缺失值的分布和模式。所以由图2可知本次数据没有缺失值,不需要进行缺失值处理。
3.3" 重复值分析
通过data.drop_duplicates () 函数对重复数据进行清除操作。具体代码如下:
duplicate_rows = data.duplicated()
num_duplicates = duplicate_rows.sum()
print(f\"Number of duplicate rows: {num_duplicates}\")
if num_duplicates gt; 0:
print(\"Duplicate rows:\")
print(data[duplicate_rows].head())
data_cleaned = data.drop_duplicates()
data_cleaned.info()
清除重复数据前,数据集的尺寸为10 886行×12列;清除后,数据集的大小仍为10 886行×12列,这表明本数据集没有重复的数据值。
3.4" 共享单车租赁的特征相关性分析
为了了解各个变量与count(单车租赁数量)的相关性,笔者做了各变量与count的相关矩阵热力图,因为datetime列数据的类型不属于数值型类型,在之前将数据集中的datetime的year、month、day(具体日期)、hour以及weekday部分转化为数值型数据。但热力图需要数值型数据运算,所以重建int_df删去其中非数值的列。以热力图可视化显示了各变量间的相关性,可以找出和共享单车租赁相联系的特征,结果如图3所示。
从图3当中可以得知,count与registered、casual呈现出高度正相关关系,相关系数分别为0.7和0.97。鉴于count等于casual与registered之和,这种正相关符合预期。count与temp呈正相关,相关系数是0.39。通常来讲,气温过低时人们往往不太乐意骑车出行。count和humidity(湿度)为负相关,湿度过大的天气确实不适合骑车。在考量湿度的时候,也需要同时考虑温度。windspeed对租车人数的影响似乎不大,相关系数为0.1,这可能是因为极端大风天气的出现频率较低。在风速处于正常范围内波动时,对人们租车的影响比较小。所以由此可以总结出,不同特征值对租赁数量的影响力度排序为:时段的影响最大,其次是温度、湿度、年份、月份、季节、天气等级、风速、星期几、是否工作日以及是否假日。
3.5" 数据的重新处理
对数据集进行一定的分析,可知没有缺失值和异常值。但datetime的数据类型是object,为了之后的数据分析更方便,需要把它转化为时间类型,并拆分为year、month、week、day、hour、weekday,即日期的处理转换,为接下来的数据分析做准备。替换后的部分数据如图4所示。
4" 共享单车租赁的可视化分析
按照影响共享单车租赁数据的各类要素,查看各要素数据的分布情况,便可以得到各要素对共享单车租赁产生的影响[7]。
4.1" 时段对租赁数量的影响
使用Seaborn和Matplotlib库来按时段分组并计算平均租赁数量,然后将这些结果可视化为折线图,结果如图5所示。
由图5能够得知,在工作日,会员用户的用车高峰出现在上下班时间,此外中午还有一个小高峰,猜测可能是外出吃午餐的人在用车;而对临时用户起伏比较平缓,高峰期在17点左右。对于非工作日而言,租赁数量随时间呈现为正态分布,14点左右为高峰,4点左右为低谷,且分布较为均匀。并且会员用户的用车数量远超过临时用户。
4.2" 温度对租赁数量的影响
使用Seaborn和Matplotlib库来按温度大小分组并计算平均租赁数量,然后将这些结果可视化为折线图,结果如图6所示。
由图6可观察到随气温上升租车数量总体呈现上升趋势,但在气温超过35时开始下降,在气温4度时达到最低点。
4.3" 湿度对租赁数量的影响
通过Pandas对共享单车数据进行按湿度(humidity)分组,并计算每个湿度区间内的casual、registered和count的平均租赁数量,生成折线图,折线图如图7所示。
从图7得出,在湿度20%左右租赁数量迅速达到高峰值,此后缓慢递减。
4.4" 季节对出行人数的影响
使用Seaborn、Pandas和Matplotlib库来按季节分组并计算平均租赁数量,然后将这些结果可视化为小提琴图,结果如图8所示。
图8展示了不同季节租赁数量的分布情况,有效地显示使用需求在秋季迎来高峰,而春季租赁数量最低。
4.5" 风速对出行人数的影响
使用Seaborn和Matplotlib库来按风速大小分组并计算平均租赁数量,然后将这些结果可视化为折线图[8]。具体代码如下:
plt.plot(windspeed_rentals.index,windspeed_rentals[casual],label=casual, color=black, linestyle=-)
plt.plot(windspeed_rentals.index,windspeed_rentals[registered],label=registered,color=black, linestyle=--)
plt.plot(windspeed_rentals.index, windspeed_rentals[count],color=black, linestyle=:, label=count)
plt.title(不同风速下每小时最大租赁数量折线图)
plt.xlabel(风速(米/秒))
plt.ylabel(最大租赁数量/人次)
plt.legend()
结果如图9所示。
图9展示了处于不同风速条件下,各类租赁的最大租赁数量的分布状况。可以发现租赁数量与风速呈负相关,即风速越大租赁数量越少,当风速超过30米/秒时明显减少,然而在风速约为40米/秒时却出现了一次回升[9]。
4.6" 天气情况对出行情况的影响
通过Pandas对共享单车数据按天气(weather)分组,计算每种天气条件下casual和registered的平均租赁数量,生成weather_df数据框。接着,使用Matplotlib绘制堆叠柱状图,结果如图10所示。
由图10可知在不同天气条件下每小时发起的平均租赁数量,由图10可以看出晴天少时使用人数最多,小雪小雨时使用人数最少。
4.7" 工作日对出行情况的影响
将日期分为周末和工作日两个方面进行对比探讨,对比工作日和非工作日的自行车租赁数量,并通过柱状图和饼图进行可视化[10]。首先计算工作日和非工作日的平均租赁数量,然后绘制柱状图和饼图,具体操作如下:
通过Pandas将共享单车数据依据工作日(workingday)进行分组操作,并计算casual与registered的平均租赁数量,进而生成workingday_df数据框。把工作日的数据存储在workingday_df_1中,非工作日的数据存储在workingday_df_0里。利用Matplotlib创建子图绘制堆叠条形图以展示工作日和非工作日的平均租赁数量,将这两种情形下casual和registered的比例绘制出来,结果如图11所示。
从图11中可知工作日会员用户出行数量较多,临时用户出行数量较少。
5" 结" 论
用Python分析共享单车租赁交易数据集,把数据集中的不同属性用图展示出来并进行简单剖析,会员常于工作日出行频繁,而在节假日却出行较少;临时用户恰与之相反。一季度,出行之人总体为数不多。租赁数量随天气等级攀升而渐次减少。小时数对租赁状况影响昭然,会员出行现双高峰之态,非会员则呈正态分布之姿。温度与湿度,对非会员影响颇深,于会员却影响甚微。租赁数量随风速增大而逐步递减。工作日,会员用户出行数量可观,临时用户则甚少;周末之际,会员用户租赁数量下滑,临时用户租赁数量却上扬。
在对共享单车数据的分析中,Python充分展现出其在数据整理和分析领域的强大优势。通过对大量的共享单车数据进行处理,Python可以快速地按照特定需求进行分组、聚合等操作,如根据工作日与非工作日对数据分组分析。同时,利用Python能够从海量复杂的数据中提取关键信息,绘制出如不同特征下租赁数量变化的图表,使人们对共享单车的使用情况有更全面的认识,切实适应了大数据时代的要求,实用性远超其他编程语言。
参考文献:
[1] 郭鹏,林祥枝,黄艺,等.共享单车:互联网技术与公共服务中的协同治理 [J].公共管理学报,2017,14(3):1-10+154.
[2] 钱蕾,周玮腾,韩宝明.城市轨道交通运营突发事件数据可视化分析 [J].铁道科学与工程学报,2020,17(4):1025-1035.
[3] 康颢,沈瑶,王博文,等.基于Python的线性动态电路可视化分析软件设计与实现 [J].实验室研究与探索,2022,41(2):116-120.
[4] 王越,陈国兵,李军.基于数据挖掘的故障模式、影响及危害性分析改进方法 [J].科学技术与工程,2021,21(24):10536-10542.
[5] 王彩玲,许欣黎.基于Python语言的计算机专业招聘信息的爬取及分析 [J].现代信息科技,2024,8(16):88-92+97.
[6] 王晨.基于Python爬虫的豆瓣TOP250电影数据分析与可视化研究 [J].现代信息科技,2024,8(16):93-97.
[7] 李天辉.基于python的数据分析可视化研究与实现 [J].电子测试,2020(20):78-79.
[8] 赵志凡,邓一哲,张思源,等.基于Python的城市天气数据可视化分析 [J].软件,2024,45(4):37-39.
[9] 傅哲,辛泓润,余力,等.基于使用行为分析的共享单车管理优化研究 [J].信息系统学报,2018(2):81-94.
[10] 柳键,张晋莉.共享电单车投放策略的演化分析 [J].江西师范大学学报:自然科学版,2023,47(5):506-512.
作者简介:徐豪(2005—),男,汉族,河南鹤壁人,本科在读,研究方向:人工智能;刘婉月(1994—),女,汉族,河南郑州人,高级工程师,硕士,研究方向:自然语言处理、机器翻译、计算机视觉;张自豪(1988—),男,汉族,河南商丘人,讲师,硕士生导师,博士,研究方向:计算机视觉。