文章目录
- 🏳️🌈 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. 可视化项目源码+数据
点击跳转:【全部可视化项目源码+数据】
以上就是本期为大家整理的全部内容了,赶快练习起来吧,原创不易,喜欢的朋友可以点赞、收藏也可以分享(注明出处)让更多人知道。