文章目录
- 🏳️🌈 1. 导入模块
- 🏳️🌈 2. Pandas数据处理
- 2.1 读取数据
- 2.2 查看数据信息
- 2.3 处理起始时间、结束时间
- 2.4 增加骑行时长区间列
- 2.5 增加骑行里程区间列
- 🏳️🌈 3. Pyecharts数据可视化
- 3.1 各行政区单车骑行量
- 3.2 各行政区单车里程热图
- 3.3 起始时间分布
- 3.4 结束时间分布
- 3.5 骑行里程分布
- 3.6 骑行里程区间占比
- 3.7 骑行时长(s)
- 3.8 骑行时长区间占比
- 🏳️🌈 4. 可视化项目源码+数据
大家好,我是 👉【Python当打之年(点击跳转)】
本期将利用Python分析「深圳市共享单车数据」 ,看看:各行政区单车骑行量、骑行里程、骑行时间分布等情况,希望对大家有所帮助,如有疑问或者需要改进的地方可以联系小编。
涉及到的库:
- Pandas — 数据处理
- Pyecharts — 数据可视化
🏳️🌈 1. 导入模块
import pandas as pd
from pyecharts.charts import *
from pyecharts import options as opts
import warnings
warnings.filterwarnings('ignore')
🏳️🌈 2. Pandas数据处理
2.1 读取数据
df1 = pd.read_excel('./共享单车数据.xlsx')
2.2 查看数据信息
df.info()
2.3 处理起始时间、结束时间
df1['骑行时长(s)'] = (df1['结束时间'] - df1['起始时间']).dt.total_seconds()
2.4 增加骑行时长区间列
lables = [f'{i}-{i+5}分钟' for i in range(0, 60, 5)]+['60分钟以上']
df1['骑行时长区间'] = pd.cut(df1['骑行时长(s)'],bins=[i for i in range(0, 3601, 300)]+[10000],labels=lables)
2.5 增加骑行里程区间列
distance_transfer=df1['骑行里程(m)'].map(lambda x: x / 1000)
df1['骑行里程区间'] = pd.cut(distance_transfer,bins=[0,1,2,3,4,5,10],labels=['0-1公里','1-2公里','2-3公里','3-4公里','4-5公里','5-6公里'])
🏳️🌈 3. Pyecharts数据可视化
3.1 各行政区单车骑行量
def get_bar():
bar = (
Bar()
.add_xaxis(x_data)
.add_yaxis('', y_data,)
.set_global_opts(
title_opts=opts.TitleOpts(
title='1-各行政区单车骑行量',
subtitle=subtitle,
pos_top='2%',
pos_left='center',
),
visualmap_opts=opts.VisualMapOpts(
is_show=False,
range_color=range_color,
),
)
)
return bar
- 福田区、龙华区、南山区的骑行订单量要远高于其他行政区
- 光明区、盐田区骑行订单量最少
3.2 各行政区单车里程热图
def get_map():
map1 = (
Map()
.add('单车里程', data, '深圳')
.set_global_opts(
title_opts=opts.TitleOpts(
title='2-各行政区单车里程热图',
subtitle=subtitle,
pos_top='2%',
pos_left='center',
),
visualmap_opts=opts.VisualMapOpts(
range_color=range_color,
),
)
)
return map1
3.3 起始时间分布
- 骑行订单量在早8时和晚16时达到峰值,这两个时间正好是早晚高峰时间
大部分的骑行订单集中在16时-20时
3.4 结束时间分布
3.5 骑行里程分布
def get_scatter():
scatter = (
Scatter()
.add_xaxis(x_data)
.add_yaxis(
'',
y_data,
label_opts=opts.LabelOpts(is_show=False)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='5-骑行里程分布',
subtitle=subtitle,
pos_top='2%',
pos_left='center',
),
visualmap_opts=opts.VisualMapOpts(
is_show=False,
range_color=range_color,
)
)
)
return scatter
3.6 骑行里程区间占比
- 3公里以内的骑行订单占比达到80%,其中1-2公里区间最多,占比约34%
3.7 骑行时长(s)
3.8 骑行时长区间占比
def get_pie():
pie = (
Pie()
.add('',[list(z) for z in zip(x_data, y_data)])
.set_global_opts(
title_opts=opts.TitleOpts(
title='8-骑行时长区间占比',
subtitle=subtitle,
pos_top='2%',
pos_left='center',
),
visualmap_opts=opts.VisualMapOpts(
is_show=False,
range_color=range_color,
),
)
)
return pie
- 15分钟以内的骑行订单占比达到78%,其中5-10分钟这个区间最多,占比约34%
🏳️🌈 4. 可视化项目源码+数据
点击跳转:【全部可视化项目源码+数据】
以上就是本期为大家整理的全部内容了,赶快练习起来吧,原创不易,喜欢的朋友可以点赞、收藏也可以分享(注明出处)让更多人知道。