# 某小区停车数据分析
核心内容:处理大量excel表格数据,数据可视化
# 一、问题描述
现有2018年9月的某小区停车数据,如下图。
![](https://www.writebug.com/myres/static/uploads/2021/10/26/aa5603f954ff200d62b87414400b897a.writebug)
30共30天的excel表格。后来处理时发现23 和24重复了,于是将24.xls删去。每一个表格内记录了当天出场的车的停车信息,如下图
![](https://www.writebug.com/myres/static/uploads/2021/10/26/51b5a6d77e687318845bfc67074f9c7b.writebug)
数据内包含业主的车与临时车。临时车是点对点的共享平台的停车用户。点对点指业主写明可共享车位的时间段,临停用户可在平台上找到适合自己停车需求的车位定点停放。该共享方案的问题是业主参与度不高,白天仍有大量剩余车位,而白天小区周围有停车需求。
现在希望建立一个新的共享停车的方案,不需要业主指明可共享的时间段。根据停车的历史数据进行分析,自动得出适合开放共享停车的时间段和共享的最大停车位数,保证业主有位置停。
# 二、详细内容及步骤
## 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需要几秒钟时间)。
结果:
![](https://www.writebug.com/myres/static/uploads/2021/10/26/4cc12dd7f8644448f0b50d686dfc9953.writebug)
部分数据展示:(intimedig 表示开始停车时间 length表示停车时长,单位都是小时)
![](https://www.writebug.com/myres/static/uploads/2021/10/26/b03d1b61dd34884ddf5dafa336cfd880.writebug)
## 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.')
```
![](https://www.writebug.com/myres/static/uploads/2021/10/26/437c3bdad6ccbd25c97482d16f90f6db.writebug)
上图为9月的离开时刻停车时长散点图。处理时发现excel表格文件23 和24重复了,于是将24.xls删去。而每一个表格内记录了当天离开的车的停车信息,所以没有9月24号的图。9.1,9.30作为边界日期,数据可能不全。
![](https://www.writebug.com/myres/static/uploads/2021/10/26/9e97e37fa20c85999b72bcfcd3eb5e40.writebug)
上图为9月的开始停车时刻与停车时长散点图。因为没有24号的离开时刻数据,9.23,9.24的图不要。
![](https://www.writebug.com/myres/static/uploads/2021/10/26/b4a99c1613ab05edaf9a4eb4874b36f7.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/10/26/e7256c18ac15208e0ce150183fe9699a.writebug)
上图左为其中一天开始停车时刻与相应停车时长的散点图,红点为业主车的,蓝点为临时车的。上图右为9月所有天的图的叠加。编程中只要在循环结束不加plt.clf()#清空画布 命令即可。为了减少点的重叠,将点尺寸调小。
分析一个月的叠加图,可以得知开始停车的时刻从凌晨两点多至早上七点多很少。中间有一条斜向的条带,该条带区域内几乎没有点。解释如下。设开始停车时刻为x,停车时长y, 该条带范围大概在直线y=24x到y=30x之间,即24<x+y<30范围内几乎没有点。x+y为离开车场的时刻。所以意义是0点到早上6点之间几乎没有车离开车场。符合实际。
再看点分布最密的地方,为开始停车时刻17点至22点之间,开始停车时刻17点最密集的停车时长约1416小时,开始停车时刻22点密集的停车时长从911小时左右,计算得知最密集的离开时刻为早79点左右。
![](https://www.writebug.com/myres/static/uploads/2021/10/26/cec4f18f6deb2f084f46a6e1d0784717.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/10/26/ad97cdb4f203dbac9d1251a5c604122c.writebug)
上图左为其中一天离开车场时刻与相应停车时长的散点图,右图为一个月内的叠加图。分析一个月的图可以得到与开始停车图的相似的结论。凌晨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']])
![](https://www.writebug.com/myres/static/uploads/2021/10/26/ad474a9b66d8556b4bda10699fbddcb9.writebug)
#### 分组,分别统计�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
处理了30个excel表格文件,学会了利用os库得到文件名,利用循环高效处理每个文件 写了一个文件从excel表中读取总的数据(需要几秒),再运行其他文件,将已生成的数据作为输入参数进行处理,画图,不再需要重新从文件中读取数据。第一次尝试用这种方式,提高了程序的编译,调试效率。这是一种模块化的处理方法。 学习了python数据分析必备的pandas库,运用了其中的dataframe类存储数据。学习使用了dataframe的各种方法:查找loc, 合并concat, 删drop,删空dropna, 排序sort_values, 分组groupby, 切分cut, 类型转换astype... 学习了dataframe的各种数据结构,其中的datatime64类利用的很多。 由提取出的数据画出了3种图:散点图,柱状图,甘特图。学习了利用matplotlib库的pyplot画图。 对三种图进行分析,发现符合实际。利用一个月中车辆最大在库数量柱状图,可以确定共享停车的时间窗口与最大共享数量。
资源推荐
资源详情
资源评论
收起资源包目录
基于Python实现的小区停车数据分析【100012912】 (165个子文件)
停车数据分析报告.docx 3.17MB
.gitattributes 66B
weekend max.jpg 121KB
weekday max.jpg 119KB
离开叠加.jpg 119KB
开始叠加.jpg 118KB
weekday mean.jpg 115KB
weekend mean.jpg 110KB
2018-09-30 星期日.jpg 100KB
2018-09-21 星期五.jpg 100KB
2018-09-02 星期日.jpg 99KB
2018-09-08 星期六.jpg 99KB
2018-09-15 星期六.jpg 99KB
2018-09-09 星期日.jpg 99KB
2018-09-22 星期六.jpg 99KB
2018-09-16 星期日.jpg 99KB
2018-09-01 星期六.jpg 99KB
2018-09-09 星期日.jpg 98KB
2018-09-29 星期六.jpg 98KB
2018-09-22 星期六.jpg 98KB
2018-09-07 星期五.jpg 98KB
2018-09-23 星期日.jpg 98KB
2018-09-15 星期六.jpg 98KB
2018-09-14 星期五.jpg 98KB
2018-09-05 星期三.jpg 98KB
2018-09-08 星期六.jpg 98KB
2018-09-29 星期六.jpg 98KB
2018-09-16 星期日.jpg 98KB
2018-09-25 星期二.jpg 97KB
2018-09-03 星期一.jpg 97KB
2018-09-06 星期四.jpg 97KB
2018-09-02 星期日.jpg 97KB
2018-09-07 星期五.jpg 97KB
2018-09-21 星期五.jpg 97KB
2018-09-28 星期五.jpg 97KB
2018-09-05 星期三.jpg 97KB
2018-09-06 星期四.jpg 97KB
2018-09-20 星期四.jpg 97KB
2018-09-20 星期四.jpg 96KB
2018-09-27 星期四.jpg 96KB
2018-09-13 星期四.jpg 96KB
2018-09-18 星期二.jpg 96KB
2018-09-19 星期三.jpg 96KB
2018-09-10 星期一.jpg 96KB
2018-09-10 星期一.jpg 96KB
2018-09-14 星期五.jpg 96KB
2018-09-03 星期一.jpg 96KB
2018-09-17 星期一.jpg 96KB
2018-09-04 星期二.jpg 96KB
2018-09-18 星期二.jpg 96KB
2018-09-19 星期三.jpg 96KB
2018-09-25 星期二.jpg 95KB
2018-09-01 星期六.jpg 95KB
2018-09-26 星期三.jpg 95KB
2018-09-11 星期二.jpg 95KB
2018-09-17 星期一.jpg 95KB
2018-09-11 星期二.jpg 94KB
2018-09-26 星期三.jpg 94KB
2018-09-11 星期二.jpg 94KB
2018-09-12 星期三.jpg 94KB
2018-09-12 星期三.jpg 94KB
2018-09-13 星期四.jpg 94KB
2018-09-28 星期五.jpg 94KB
2018-09-04 星期二.jpg 94KB
2018-09-13 星期四.jpg 93KB
2018-09-04 星期二.jpg 93KB
2018-09-22 星期六.jpg 92KB
2018-09-27 星期四.jpg 92KB
2018-09-19 星期三.jpg 92KB
2018-09-18 星期二.jpg 92KB
2018-09-12 星期三.jpg 91KB
2018-09-10 星期一.jpg 91KB
2018-09-28 星期五.jpg 91KB
2018-09-08 星期六.jpg 91KB
2018-09-07 星期五.jpg 91KB
2018-09-29 星期六.jpg 90KB
2018-09-27 星期四.jpg 90KB
2018-09-26 星期三.jpg 90KB
2018-09-25 星期二.jpg 90KB
2018-09-16 星期日.jpg 89KB
2018-09-15 星期六.jpg 89KB
2018-09-09 星期日.jpg 88KB
2018-09-21 星期五.jpg 88KB
2018-09-17 星期一.jpg 88KB
2018-09-24 星期一.jpg 88KB
2018-09-20 星期四.jpg 87KB
2018-09-02 星期日.jpg 87KB
2018-09-05 星期三.jpg 87KB
2018-09-06 星期四.jpg 87KB
2018-09-14 星期五.jpg 86KB
2018-09-23 星期日.jpg 86KB
2018-09-03 星期一.jpg 86KB
2018-09-30 星期日.jpg 86KB
2018-09-01 星期六.jpg 82KB
2018-09-24 星期一.jpg 79KB
2018-09-23 星期日.jpg 71KB
2018-09-30 星期日.jpg 69KB
2018-09-09 星期日.jpg 60KB
2018-09-08 星期六.jpg 60KB
2018-09-16 星期日.jpg 60KB
共 165 条
- 1
- 2
资源评论
- weixin_383580912024-10-27资源内容总结的很到位,内容详实,很受用,学到了~
- 2301_771405882024-04-30资源内容详细,总结地很全面,与描述的内容一致,对我启发很大,学习了。
神仙别闹
- 粉丝: 3824
- 资源: 7471
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 一些自己写的玩的易语言程序.zip
- HC3由人类回答的去重微调数据集
- Java自变量的深度剖析及其在编程中的应用
- HC3由人类回答的微调数据集
- 一个量化交易平台,支持多种语言编写策略和回测功能 .zip
- python实现基于BERT生成句向量做的文本相似性搜索项目源码+数据.zip
- 一个适用于校园兼职代拿快递的物流解决方案 -基于易语言和php.zip
- 一个进行 Unicode 相关字符串转换的易语言库 An Eyuyan library dealing with Unicode string conversion.zip
- 一个简易的无数据库JAVA语言聊天软件,有服务器端和客户端,可以进行公网聊天,已经聊天文件保存.zip
- numpy-learning-resources.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功