type
status
date
slug
summary
tags
category
icon
password
Last edited time
Sep 1, 2023 04:40 AM
Created time
Apr 19, 2023 06:30 AM
这篇文章介绍了基于Python的“出租车数据挖掘”代码。它展示了主成分分析的结果,包括周期性和主要出行的可视化。此外,还提供了代码示例,以帮助读者了解如何实现这些可视化效果。
点击跳转先看数据集介绍及可视化结果:
导入所需要的模块、定义全局变量
定义方法
加载数据,去除明显的异常值,并将所有内容转换成可用类型。
创建行程运行时间、起点和终点的经纬度、起点和终点的经纬度方向的距离中心的距离的字段。
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F3c84f545-d9e3-4d40-9a60-4099988dbe16%2FUntitled.png?table=block&id=6e06ad84-bd56-465a-94e3-82bf6e70d38e)
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F9d330312-0c78-4a21-8d50-37851651bf9e%2FUntitled.png?table=block&id=daf5fb4b-9dc4-4a2f-8790-9aa118b7eb2c)
创建一些有用的字段
一天中行程开始的时间、一天中行程结束时间、一周中的第几天、一周中的第几小时、一年中的第几月、一年中的第几天、一年中的第几周和一年中的第几小时
DAYTYPE日期类型处理,分别标为A、B、C。
绘制行驶时间、经度和经度的结果直方图
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F6919e38c-4b0f-4fb3-a8a2-d47ec79b72d8%2FUntitled.png?table=block&id=282454e8-2207-4e4d-ad61-5b0882cd9d24)
绘制行程时间与起点和终点之间的直线距离关系图
我们可以看到,行程距离定义了行程时间的下限,但是大部分时间受其他因素影响。(可能有出行时间、起点、目的地等)
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F9c429a1e-7e14-4493-90c0-92ef49b40ca9%2FUntitled.png?table=block&id=0a10ceda-0ded-4412-86ca-da9e692d4cfd)
绘制起点和终点位置的空间密度图
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F3e3b9547-9efd-47c4-a450-f33572cd4c45%2FUntitled.png?table=block&id=13a5eccb-1331-4829-93e9-17bf70d45cf1)
绘制市中心位置的空间密度图
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F6ea2ad10-a548-453c-bb77-bafd9b43051f%2FUntitled.png?table=block&id=10ef25bb-6a07-4b7d-b5ad-749e1e9fa6cd)
绘制用K-means划分出的区域空间密度图
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F4611cbd3-2c9f-4dc5-87ab-3109ef1e5b07%2FUntitled.png?table=block&id=80dbb64b-b9e2-42b3-a549-ba4253cd4db2)
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F3534ccb0-8296-4143-9b7c-71dbd5faf822%2FUntitled.png?table=block&id=32074a5e-57f0-4286-b5cf-4de9def23328)
聚类查看不同时间下的分布情况
每一次行程基本上由5个主要属性组成:起点(经度和纬度)和终点(经度和纬度)和行程时间。让我们把所有的150万次旅行聚集到80个典型的行程分类中,然后看看这些旅行情况的分布,以及它随时间的变化。
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F2612a092-4ed2-4626-b541-776535973fc9%2FUntitled.png?table=block&id=db0743f6-c513-4775-8856-8ecdbe4a149d)
显示地图上的典型行程
蓝圆圈是起点,绿色圆圈是目的地,它们之间的箭头是用青色绘制的。
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F9827079d-197d-4ac6-a1df-9a7064001b42%2FUntitled.png?table=block&id=b3fce0e0-e32d-48fc-9881-bfa1a0430687)
蓝圆圈是光源(起点位置),绿色圆圈是目的地(终点位置),它们之间的箭头是用青色绘制的。我们可以看到,绿色的在中心和左上角的区域集中
工作日每天中不同时间出行分布情况
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fbe395a40-acae-4640-879d-23a76e78b3b5%2FUntitled.png?table=block&id=5314b2fd-382e-44bf-a424-b50bf048c128)
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fb18f4876-9450-41f8-8c5a-248be2fde8d1%2FUntitled.png?table=block&id=4eeed88e-b6cd-427e-a4eb-282f0b8ed2f8)
每一行包含这些行程情况的分布,其中强度代表出行频率。
我们可以看到,早上北京15点左右,人们开始醒来,(很有可能)开始工作。在18点/晚上19点(下午6点/下午7点),有第二轮出租车出租,这是(最有可能的)回家的人。这也极为重要,在晚上,人们几乎不活跃在夜间。这是用红色箭头标出的。
不同时段的周末出行分布
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Feaab9abd-d075-462b-8e8a-9949420f432c%2FUntitled.png?table=block&id=53781207-1983-4f3b-aca2-c7081bc5c62c)
我们可以看到,在周末,人们在夜间活动得更为活跃,而且比平常的工作日更晚。
一周不同日的每周出行分布
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F73954007-38b6-4795-9550-6f13bcbf65c0%2FUntitled.png?table=block&id=0c72c4ed-c88e-4e42-b838-9c068ffb6077)
周末人们出行更多。
每年不同日的年度出行分布
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Ffa4e1fba-e9e2-4b31-8afa-18374a894ea9%2FUntitled.png?table=block&id=1dc1de46-3d0d-4346-b06e-4cdfaf2488e7)
一年中出行相对是稳定的,且有周期性。我们还可以在数据中看到两个大的活动,一个在120-135天(5月上旬),另一个在155-160(6月初)。这就要分析当时发生了什么事?主要的事件主要集中在市外,初步猜测是机场,5月初为国际劳动节,应该是旅客数量增加,或者是因为波尔图举办了足球比赛(或者其他赛事)。第二次高峰,认为是圣安东尼奥节(里斯本节假日)、贾梅士日暨葡侨日、游客增加。第三个明显分布为波尔图节假日。第一个下降分布在一年中327天左右为11月22日,通过分析为圣马丁日,从11月11日开始人们进行斋戒,到节日的最后一天进行狂欢,可以认为这个时候整个市里人们在进行游行、狂欢。第二个下降点在一年中355-359天,为圣诞节,大部分人在家里陪伴家人,出行明显下降。
现在让我们深入研究一下时间方面:
让我们应用PCA来减少从80维分布向量到更易于管理的维度,如3个维度,我们可以更容易地绘制和可视化。
周周期性
在这里,我们将展示3个主要的主成分系数在一周内的时间演化。
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fd84311bf-32dc-4c24-a822-30fb668902a6%2FUntitled.png?table=block&id=e33d9b03-70b4-4376-aaf8-fbb344e365ce)
在蓝色色是来自所有的周的数据重叠在彼此之上。黑色是平均痕迹。
我们可以清楚地看到这里的周期性以及日常工作日和周末之间的差异。
日周期性
在这里,我们将展示3个主要的主成分系数在白天的时间演变。
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F091a55b6-490a-41e5-a2af-a35448dbdcc9%2FUntitled.png?table=block&id=a7ca8799-2327-4942-bada-8e398530bbb1)
回想一下,我们可以回去看看每个PC系数究竟是什么意思,看看特征向量。让我们这样做:
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F0599d761-7caa-45e8-ab8d-0f2db1e85b5f%2FUntitled.png?table=block&id=c441519d-989b-4a9a-9b80-8274a90e1e72)
我们可以看到,第一主成分系数看起来非常类似于整个行程分布,这表明它主要是一个“增益”组件,控制在这段时间内的总行程数。
第二和第三个成分在其上下有不同的图案。
让我们来看看这些模式是什么,尤其是那些偏离红线的东西:
大偏差行程2
红色箭头将显示当PC 2系数增加时,增加的行程。
黄色箭头将显示当PC 2系数增加时,减少的行程。
蓝圈是源头,绿色圆圈是目的地。
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F5cffc377-6377-4ff3-b4de-65741d22b1ee%2FUntitled.png?table=block&id=32d66b28-18c3-41d8-b1eb-e81b5ed3c801)
大偏差行程3
红色箭头显示当PC系数增加时,增加的行程。
黄色箭头显示当PC系数增加时,减少的行程。
蓝圈是源头,绿色圆圈是目的地。
![notion image](https://geniusss.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F0fff68a0-a218-48c0-b676-875d9452e011%2FUntitled.png?table=block&id=52412598-7fa0-47e2-b04b-e206e2f03f81)
如果您有更多的见解和想法,请在评论区与我分享!您的意见对我来说非常重要。
- 作者:Chance Sha
- 链接:https://www.chancesha.com/article/portu-taxi-data-analysis-python-code
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。