数据挖掘 机器学习 数据清洗到站点聚类,全面解析伦敦共享单车使用规律!

1.项目背景

随着共享单车在全球范围内的普及,开荒保洁13825404095城市交通出行模式发生了巨大变化。伦敦作为国际化大都市,交通拥堵问题日益严重,共享单车作为一种绿色、环保、便捷的出行方式,逐渐成为解决交通问题的重要组成部分,然而,要实现共享单车系统的高效运营,必须深入了解用户的使用习惯和需求。本项目对伦敦共享单车数据进行了全面分析,涵盖了数据清洗、特征工程(构建新特征)、骑行高峰期分析、站点流量分析,以及通过聚类分析将800个站点划分为5类,并对每一类站点提出建议,最后通过方差分析探讨了影响共享单车流量的因素,通过这些步骤,可以识别高频使用的时间段和站点,为运营商提供优化调度和资源分配的科学依据。

2.数据说明

字段

说明

Number

每次出行的唯一标识符(Trip ID)

Start Date

出行开始的日期和时间

Start Station Number

起始站的标识符

Start Station

起始站的名称

End Date

出行结束的日期和时间

End Station Number

终点站的标识符

End Station

终点站的名称

Bike Number

所使用自行车的唯一标识符

Bike Model

所使用自行车的型号

Total Duration

出行的总时间(时分秒)

Total Duration (ms)

出行的总时间(毫秒)

3.Python库导入及数据读取

import pandas as pd

import seaborn as sns

import matplotlib.pyplot as plt

import networkx as nx

import matplotlib.colors as mcolors

import numpy as np

from sklearn.cluster import KMeans

from sklearn.preprocessing import StandardScaler

from sklearn.decomposition import PCA

from sklearn.metrics import silhouette_score

import scipy.stats as stats

import warnings

warnings.filterwarnings('ignore')

from pylab import mpl

mpl.rcParams["font.sans-serif"] = ["SimHei"] # 设置显示中文字体 宋体

mpl.rcParams["axes.unicode_minus"] = False #字体更改后,会导致坐标轴中的部分字符无法正常显示,此时需要设置正常显示负号

data = pd.read_csv('D:\Desktop\商业数据分析案例\伦敦共享单车数据集\LondonBikeJourneyAug2023.csv')

4.数据预览及数据处理

# 查看数据维度

data.shape

(776527, 11)

#查看数据信息

data.info()

RangeIndex: 776527 entries, 0 to 776526

Data columns (total 11 columns):

# Column Non-Null Count Dtype

--- ------ -------------- -----

0 Number 776527 non-null int64

1 Start date 776527 non-null object

2 Start station number 776527 non-null int64

3 Start station 776527 non-null object

4 End date 776527 non-null object

5 End station number 776527 non-null int64

6 End station 776527 non-null object

7 Bike number 776527 non-null int64

8 Bike model 776527 non-null object

9 Total duration 776527 non-null object

10 Total duration (ms) 776527 non-null int64

dtypes: int64(5), object(6)

memory usage: 65.2+ MB

#查看各列缺失值

data.isna().sum()

Number 0

Start date 0

Start station number 0

Start station 0

End date 0

End station number 0

End station 0

Bike number 0

Bike model 0

Total duration 0

Total duration (ms) 0

dtype: int64

#查看重复值

data.duplicated().sum()

0

# 将起始日期和结束日期转换为日期时间格式

data[

文章来源

评论可见,查看隐藏内容

2025-01-12 17:58 点击量:0