基于Python的某小区停车数据分析
目 录
一. 问题描述 2
二. 详细内容及步骤 3
- 提取数据中有用的信息 get_data.py文件 3
import pandas as pd 3
1)自动读取excel表,存在一个dataframe中: 3
2) 数据清理,调整 3
3) 增加数据列 3
4) 将处理一个文件扩展到处理多个文件 3
5) 文件内部调用:df=get_data() 4 - 画九月每天的不同时间段在库车数量 柱状图 draw_bar.py文件 8
1)切分时间 8
2) 分组,分别统计组内个数 8
3)由不同时段的停入车数量和离开车数量,计算不同时段的在库车数量 9
4)由不同时段的在库车数量owner_sum和temp_sum画出柱状图 9 - 画9月在库车数量最大值与平均值 process.py文件 10
import pandas as pd 10
- allbar函数 11
- 画甘特图 Gantt.py文件 12
1) 查找想要的数据 12
2) 排序 12
3) 甘特图可理解为横向条形图 12
三. 总结及展望 13
数据内包含业主的车与临时车。临时车是点对点的共享平台的停车用户。点对点指业主写明可共享车位的时间段,临停用户可在平台上找到适合自己停车需求的车位定点停放。该共享方案的问题是业主参与度不高,白天仍有大量剩余车位,而白天小区周围有停车需求。
现在希望建立一个新的共享停车的方案,不需要业主指明可共享的时间段。根据停车的历史数据进行分析,自动得出适合开放共享停车的时间段和共享的最大停车位数,保证业主有位置停。
二.详细内容及步骤
1.提取数据中有用的信息 get_data.py文件
使用python 中的pandas库的dataframe类来存储数据。
首先读取一个excel表中的数据,成功后再用类似的方法使用循环读取所有文件。
一些关键步骤展示整行代码,其余仅写出函数名,略去参数
import pandas as pd
1)自动读取excel表,存在一个dataframe中:
df=pd.read_excel(‘./data/’+fname,skiprows=3)#跳过前三行,从第四行开始读取 原本不知道有跳过行的功能,还使用了xlrd包先读取再存到dataframe中
2)数据清理,调整
清除列 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’,‘临时车纯车牌识别(小车)’],[‘业主’,‘临时’])
3)增加数据列
字符串的时间类型转化为[0,24)连续的数,小时为单位df[‘intimedig’]=list(map(time2dig,df[‘intime’]))#数字化的连续时间float64类 time2dig为自编函数
字符串的时间类型转化为datetime64类型,便于以后操作df[‘indatetime’]=pd.to_datetime(df[‘intime’])
4)将处理一个文件扩展到处理多个文件
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
5)文件内部调用:df=get_data()
运行文件后,总的数据df就存在了工作区中。本文转载自http://www.biyezuopin.vip/onews.asp?id=14768以后调用其他的函数文件处理数据,直接在命令行窗口将df作为输入参数,不需要重新生成。这样增加了计算效率(生成df需要几秒钟时间)。
def draw(df):import pandas as pdfrom matplotlib import pyplot as plt import pylab as pyl #使matplotlib可显示中文pyl.mpl.rcParams['font.sans-serif'] = ['SimHei'] #使matplotlib可显示中文date=df.drop_duplicates('indate').loc[:,['indate','inweek']]#去重#类型dataframe 两列存不重复的日期和相应的星期date=date.sort_values('indate')#按日期排序for id in date.index: #画九月每天的不同车开始停车时刻与停车时长散点图d=date.loc[id,'indate']w=date.loc[id,'inweek']fig1=df.loc[(df['indate']==d)&(df['type']=='业主')\&(df['length']<24),:]#忽略停车时长大于一天的fig2=df.loc[(df['indate']==d)&(df['type']=='临时')\&(df['length']<24),:]title=str(d)[:11]+str(w) #日期星期几plt.title(title)plt.xlabel("开始停车时刻/点(h)") plt.ylabel("停车时长/h") plt.xticks(range(0,24))#横坐标 0:23 步长1plt.yticks(range(0,24))plt.grid()plt.plot(fig1['intimedig'],fig1['length'],'r.',markersize=3)plt.plot(fig2['intimedig'],fig2['length'],'b.',markersize=3)plt.savefig('./fig开始停车/'+title+'.jpg',dpi=100)#指定分辨率100plt.clf()#清空画布#plt.show()date=df.drop_duplicates('outdate').loc[:,['outdate','outweek']]#去重#因为excel表数据本身是根据离开时刻排的,不需要排序日期for id in date.index: #画九月每天的不同车离开时刻与停车时长散点图d=date.loc[id,'outdate']w=date.loc[id,'outweek']fig1=df.loc[(df['outdate']==d)&(df['type']=='业主')\&(df['length']<24),:]fig2=df.loc[(df['outdate']==d)&(df['type']=='临时')\&(df['length']<24),:]title=str(d)[:11]+str(w) #日期星期几plt.title(title)plt.xlabel("离开时刻/点(h)") plt.ylabel("停车时长/h") plt.xticks(range(0,24))plt.yticks(range(0,24))plt.grid()plt.plot(fig1['outtimedig'],fig1['length'],'r.',markersize=3)plt.plot(fig2['outtimedig'],fig2['length'],'b.',markersize=3)plt.savefig('./fig离开时刻/'+title+'.jpg',dpi=100)#指定分辨率100plt.clf()#清空画布
基于Python的某小区停车数据分析相关推荐
- 基于Python实现的微信好友数据分析——抓取好友性别、位置、头像签名
最近微信迎来了一次重要的更新,允许用户对"发现"页面进行定制.不知道从什么时候开始,微信朋友圈变得越来越复杂,当越来越多的人选择"仅展示最近三天的朋友圈",大概 ...
- 【大数据分析毕设之基于python爬虫的旅游大数据分析可视化系统】
[大数据分析毕设之基于python爬虫的旅游大数据分析可视化系统-哔哩哔哩] https://b23.tv/z2OUTkp flask web框架,数据使用selenium模块爬取携程网获取数据,使用 ...
- 【大数据分析专业毕设之基于python的手机销售大数据分析可视化系统】
[大数据分析专业毕设之基于python的手机销售大数据分析可视化系统] https://b23.tv/FKuPbsv flask web框架,数据使用requests模块爬取https://www.j ...
- 超市销售数据分析python_基于Python的超市O2O营销数据分析
第 35 卷第 4 期 哈尔滨商业大学学报(自然科学版) Vol. 35 No. 4 2019 年 8 月 Journal of Harbin University of Commerce ( Nat ...
- python爬虫可视化web展示_基于Python爬虫的职位信息数据分析和可视化系统实现
1. 引言 在这个新时代,人们根据现有的职位信息数据分析系统得到的职位信息越来越碎片化,面对收集到的大量的职位信息数据难以迅速地筛选出对自己最有帮助的职位信息,又或者筛选出信息后不能直观地看到数据的特 ...
- 基于python家庭用电量数据的数据分析可视化 完整数据可直接运行
项目演示:基于python的家庭用电量数据的数据分析可视化 完整数据评论区自取_哔哩哔哩_bilibili 本博客附完整的数据代码: from numpy import nan from pandas ...
- 基于python的疫情下的数据分析
基于python新冠疫情实时统计数据 摘 要 本案例以数据挖掘过程中的数据获取,数据清洗,数据可视化,数据挖掘典型算法应用,挖掘结果分析作为教学主线条,以从2020年初以来开始公开发布的国内外疫情实 ...
- 基于Python实现成交量的股票数据分析系统【100010993】
基于成交量的股票数据分析系统 1. 数据获取 1.1. 实验环境搭建 系统及使用的语言: Windows 10 专业版 1903 操作系统版本: 18362.356 Python 3.7.3 64-b ...
- 基于Python的朋友圈关系数据分析与实现
目录 摘 要 1 Abstract 2 1 绪论 4 1.1 选题背景 4 1.2 研究意义 6 1.3 论文主要研究内容及组织结构 7 1.3.1主要研究内容 7 1.3.2论文组织结构 8 2 关 ...
最新文章
- php通过ip查询经纬度,php 获取客户端IP地址经纬度所在城市
- linux下php远程连接mysql_Linux下PHP远程连接Oracle数据库 | 系统运维
- SpringBoot整合RabbitMQ 实现五种消息模型
- 解决Eclipse里Maven工程报 An error occurred while filtering resources错误
- 基于mint-ui的城市选择3级联动
- github博客突然无法访问_紫菜头博客被DNS污染攻击关站
- Silverlight学习笔记三(鼠标点击动态画直线|动态设置Ellipse的Canvas.Top与Canvas.Left|动态设置Stroke属性的方法。)...
- HDOJ 2074 叠筐
- 杭电计算机14年笔试真题
- hive字段名、注释中文显示问号
- Android平台ROM的定制及精简教程
- linux合并pdf命令,LINUX下合并PDF
- Python数据分析《黑客帝国》-一切都不是偶然
- Spring框架---全面详解【无比详细,学习总结】
- 如何制作一个简易的家庭记账系统
- 微信小程序云开发简单介绍
- 8位计算机的八位代表什么,八位二进制是什么意思
- SpringBoot集成EasyExcel的使用
- seo外包公司可以为企业带来什么好处
- 益世科生物冲刺港交所上市:业绩持续增长,IPO前紧急“套现”