# 某小区停车数据分析
核心内容:处理大量excel表格数据,数据可视化
# 一、问题描述
现有2018年9月的某小区停车数据,如下图。

30共30天的excel表格。后来处理时发现23 和24重复了,于是将24.xls删去。每一个表格内记录了当天出场的车的停车信息,如下图

数据内包含业主的车与临时车。临时车是点对点的共享平台的停车用户。点对点指业主写明可共享车位的时间段,临停用户可在平台上找到适合自己停车需求的车位定点停放。该共享方案的问题是业主参与度不高,白天仍有大量剩余车位,而白天小区周围有停车需求。
现在希望建立一个新的共享停车的方案,不需要业主指明可共享的时间段。根据停车的历史数据进行分析,自动得出适合开放共享停车的时间段和共享的最大停车位数,保证业主有位置停。
# 二、详细内容及步骤
## 1. 提取数据中有用的信息 get_data.py文件
使用python 中的pandas库的dataframe类来存储数据。
首先读取一个excel表中的数据,成功后再用类似的方法使用循环读取所有文件。
一些关键步骤展示整行代码,其余仅写出函数名,略去参数
```python
import pandas as pd
```
#### 自动读取excel表,存在一个dataframe中:
```python
df=pd.read_excel('./data/'+fname,skiprows=3)#跳过前三行,从第四行开始读取 原本不知道有跳过行的功能,还使用了xlrd包先读取再存到dataframe中
```
#### 数据清理,调整
清除列 df.drop(df.columns[delid], axis=1, inplace=True)
清楚空值所在一整行df.dropna(inplace=True)
重命名列名称 df.rename(columns={'车牌号码':'num',...},inplace=True)
重命名一列中的值df['type']=df['type'].replace(['纯车牌月卡A','临时车纯车牌识别(小车)'],['业主','临时'])
#### 增加数据列
字符串的时间类型转化为[0,24)连续的数,小时为单位df['intimedig']=list(map(time2dig,df['intime']))#数字化的连续时间float64类 time2dig为自编函数
字符串的时间类型转化为datetime64类型,便于以后操作df['indatetime']=pd.to_datetime(df['intime'])
#### 将处理一个文件扩展到处理多个文件
```python
import pandas as pd
import os
def get_data():
fnames = os.listdir('./data/')#./相对目录 返回data文件夹下所有文件名称
dfall=pd.DataFrame()#创建一个空的dataframe
for fname in fnames:
df=pd.read_excel('./data/'+fname,skiprows=3)#跳过前三行
# 处理内容
dfall=pd.concat([dfall,df],ignore_index=True)#竖向拼接 重新分配索引
...
return dfall
```
#### 文件内部调用:df=get_data()
运行文件后,总的数据df就存在了工作区中。以后调用其他的函数文件处理数据,直接在命令行窗口将df作为输入参数,不需要重新生成。这样增加了计算效率(生成df需要几秒钟时间)。
结果:

部分数据展示:(intimedig 表示开始停车时间 length表示停车时长,单位都是小时)

## 2.画九月每天的不同车开始停车时刻与停车时长散点图,及不同车离开时刻与停车时长散点图 draw.py文件
在spider编译环境中,控制台(console)中已经有了df变量(运行上面的get_data文件得到)。运行文件draw.py 在控制台中调用函数draw(df) 得到画出的许多张图存在了文件夹中。
关键代码:
```python
fig1=df.loc[(df['indate']==d)&(df['type']=='业主')&(df['length']<24),:]#忽略停车时长大于一天的
```
d为循环变量的其中一天。loc方法可以查找想要的值对应的行。
from matplotlib import pyplot as plt 利用matplotlib库画图
```c++
plt.plot(fig1['intimedig'],fig1['length'],'r.')
```

上图为9月的离开时刻停车时长散点图。处理时发现excel表格文件23 和24重复了,于是将24.xls删去。而每一个表格内记录了当天离开的车的停车信息,所以没有9月24号的图。9.1,9.30作为边界日期,数据可能不全。

上图为9月的开始停车时刻与停车时长散点图。因为没有24号的离开时刻数据,9.23,9.24的图不要。


上图左为其中一天开始停车时刻与相应停车时长的散点图,红点为业主车的,蓝点为临时车的。上图右为9月所有天的图的叠加。编程中只要在循环结束不加plt.clf()#清空画布 命令即可。为了减少点的重叠,将点尺寸调小。
分析一个月的叠加图,可以得知开始停车的时刻从凌晨两点多至早上七点多很少。中间有一条斜向的条带,该条带区域内几乎没有点。解释如下。设开始停车时刻为x,停车时长y, 该条带范围大概在直线y=24x到y=30x之间,即24<x+y<30范围内几乎没有点。x+y为离开车场的时刻。所以意义是0点到早上6点之间几乎没有车离开车场。符合实际。
再看点分布最密的地方,为开始停车时刻17点至22点之间,开始停车时刻17点最密集的停车时长约1416小时,开始停车时刻22点密集的停车时长从911小时左右,计算得知最密集的离开时刻为早79点左右。


上图左为其中一天离开车场时刻与相应停车时长的散点图,右图为一个月内的叠加图。分析一个月的图可以得到与开始停车图的相似的结论。凌晨06内几乎没有车离开车场。斜状的条带内点很少,代表凌晨27点开始停车(进入车场)的很少。集中离开时刻为早79点。
## 3.画九月每天的不同时间段在库车数量 柱状图 draw_bar.py文件
首先运行文件。然后调用get_cum(df) 返回owner_sum(不同时间段业主的在库车数量), temp_sum(不同时间段临时车的在库车数量)。最后owner_sum, temp_sum作为参数调用draw_bar(owner_sum, temp_sum),画出9月各天的不同时间段在库车数量柱状图
几个关键步骤:
#### 切分时间
为了画柱状图,需要将连续的时间离散化,切分成不同的时间段。利用了dataframe 的.cut方法。
```python
f='H'#采样间隔 小时 与f有关的为draw_bar中name_list Onum_list Tnum_list
timediv=pd.date_range(start='20180901',end='20181001',freq=f)
# timedivide不同分隔时刻 为DatetimeIndex类型 每个元素datetime64[ns]类
labelnum=timediv.to_series().size1
# n个值,切成n1段,共n1个标签 eg:[0,1,2] 切分成[0,1),[1,2)
timelabel=pd.date_range(start='20180901',periods=labelnum,freq=f)
# periods表示生成labelnum个时刻标签 每个标签为时间段的左端点值
df['in_dtime']=pd.cut(x=df['indatetime'],bins=timediv,right=False,labels=timelabel)
# discrete time 离散时间 right=False 区间左闭右开
```
切割结果 print(df.loc[795:810,['indatetime','in_dtime']])

#### 分组,分别统计�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
处理了30个excel表格文件,学会了利用os库得到文件名,利用循环高效处理每个文件 写了一个文件从excel表中读取总的数据(需要几秒),再运行其他文件,将已生成的数据作为输入参数进行处理,画图,不再需要重新从文件中读取数据。第一次尝试用这种方式,提高了程序的编译,调试效率。这是一种模块化的处理方法。 学习了python数据分析必备的pandas库,运用了其中的dataframe类存储数据。学习使用了dataframe的各种方法:查找loc, 合并concat, 删drop,删空dropna, 排序sort_values, 分组groupby, 切分cut, 类型转换astype... 学习了dataframe的各种数据结构,其中的datatime64类利用的很多。 由提取出的数据画出了3种图:散点图,柱状图,甘特图。学习了利用matplotlib库的pyplot画图。 对三种图进行分析,发现符合实际。利用一个月中车辆最大在库数量柱状图,可以确定共享停车的时间窗口与最大共享数量。
资源推荐
资源详情
资源评论





















收起资源包目录





































































































共 165 条
- 1
- 2
资源评论

- weixin_383580912024-10-27资源内容总结的很到位,内容详实,很受用,学到了~
- 2301_771405882024-04-30资源内容详细,总结地很全面,与描述的内容一致,对我启发很大,学习了。

神仙别闹
- 粉丝: 4657
- 资源: 7570
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
