数据集介绍

数据为某停车场信息表,具体字段信息如下表:

字段

含义

字段

含义

cn

车牌号

price

停车所交费用

timein

车辆进场时间

state

是否已经离场

timeout

车辆出场时间

rps

当前空余车位数量

 部分数据展示

数据分析案例-停车场数据可视化分析_折线图

 数据分析

首先,导入本次项目用到的第三方包以及数据

import pandas as pd
import matplotlib.pylab as plt
import numpy as np
from pyecharts.charts import Pie
from pyecharts import options as  opts 
from pyecharts.globals import ThemeType
import warnings
warnings.filterwarnings('ignore')
plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示
plt.rcParams['axes.unicode_minus'] = False   #解决符号无法显示

data = pd.read_excel('停车场信息表.xlsx')
data.head()

数据分析案例-停车场数据可视化分析_折线图_02

 1.停车时间数据分布图,统计停车时间为1小时,2小时,3~5小时,6~10小时,11~12小时以及停车12小时以上的停车数量,绘制饼图。

这里我们需要得到每一条车辆出和入时间的差值并且结果要转化为小时数,然后根据小时数进行分类标签 (这里如果要求的是天数,只需要把h改为D即可)

data['timein'] = data['timein'].apply(pd.Timestamp)
data['timeout'] = data['timeout'].apply(pd.Timestamp)
data['hour'] = (data['timeout'] - data['timein']).values/np.timedelta64(1,'h')
def parse_time(x):
    if x < 1:
        return '1小时以内'
    elif 1 <= x <= 2:
        return '1~2小时'
    elif 2 < x <3:
        return '2~3小时'
    elif 3 <= x <6:
        return '3~5小时'
    elif 6 <= x <11:
        return '6~10小时'
    elif 11 <= x <12:
        return '11~12小时'
    else:
        return '12小时以上'
data['hour_grade'] = data['hour'].agg(parse_time)
data['hour_grade'].value_counts().plot(kind='pie',figsize=(10,8),title='各小时段的数量占比',autopct='%.2f')

数据分析案例-停车场数据可视化分析_数据_03

 2.停车高峰时间所占比例:把一天按小时划分为8个区间,绘制饼图。

这里我们需要根据车辆入的时间提取出小时数并做统计 

data['timein'] = data['timein'].astype(str)
data['hour_time'] = data['timein'].apply(lambda x:int(x.split(' ')[1].split(':')[0]))
df1 = pd.qcut(data['hour_time'],q=8)
df1.value_counts().plot(kind='pie',figsize=(10,8),title='各小时段的数量占比',autopct='%.2f')

 

数据分析案例-停车场数据可视化分析_数据_04

3.每周繁忙统计:按星期一~星期日统计停车数量,绘制纳丁格尔玫瑰图。 

这里我们需要用到日期类型的内置函数weekday得到星期数(1-6,代表星期一~六,0代表星期日) ,最后将数字转化为特定的字符串

# 星期一~星期日停车数量比例
data['timein'] = data['timein'].apply(pd.Timestamp)
data['week'] = data['timein'].apply(lambda x:x.weekday())
data.week.replace(to_replace={1:'星期一',2:'星期二',3:'星期三',4:'星期四',5:'星期五',6:'星期六',0:'星期日'},inplace=True)
df2 = data['week'].value_counts()
result_list = [(i,j) for i,j in zip(df2.index.to_list(),df2.values.tolist())]
a = Pie(init_opts=opts.InitOpts(theme = ThemeType.DARK))
a.add(series_name='星期',
        data_pair=result_list,
        rosetype='radius',
        radius='70%',
        )
a.set_global_opts(title_opts=opts.TitleOpts(title="星期一~星期日停车数量比例",
                    pos_top=50))
a.set_series_opts(tooltip_opts=opts.TooltipOpts(trigger='item',formatter='{a} <br/>{b}:{c} ({d}%)'))
a.render_notebook()

数据分析案例-停车场数据可视化分析_数据_05

 4.月收入分析:统计每月收入情况,绘制条形图。

这里我们需要根据车辆入的时间提取出月份数值,最后分组聚合即可 

data['timein'] = data['timein'].astype(str)
data['month'] = data['timein'].apply(lambda x:int(x.split(' ')[0].split('-')[1]))
data.groupby('month').sum()['price'].plot(kind='barh',figsize=(10,8),title='每月收入条形图',fontsize=14)

数据分析案例-停车场数据可视化分析_折线图_06

 5.每日接待车辆统计:统计每天停车数量绘制折线图。

这里我们需要根据车辆入的时间提取出day值,最后分组统计即可 

data['day'] = data['timein'].apply(lambda x:int(x.split(' ')[0].split('-')[2]))
data['day'].value_counts().sort_index().plot(figsize=(10,8),title='每天停车数量折线图',fontsize=14)

数据分析案例-停车场数据可视化分析_python_07

6.车位使用率的统计:统计每天的车位平均使用率,绘制折线图。 

data.groupby('day').mean()['rps'].plot(figsize=(10,8),title='每天车位平均使用率折线图',fontsize=14)

 

数据分析案例-停车场数据可视化分析_数据_08

以上就是本次停车场数据案例分析的全部,希望对学习数据分析的你有所帮助