Python数据处理,pandas 统计连续停车时长
文章插图
定期找些简单练习作为 pandas 专栏的练习题
知识点
- DataFrame.apply 以及 axis 的理解
- 分组计数
- DataFrame.iloc 切片
文章插图
- 每行表示某时间段(总是1个小时)每个停车位停放是那辆车(内容视为车牌吧)
文章插图
共2个需求:
需求1:停车次数(蓝色行):一天中 , 每个停车位分别有多少不同的车停放 , 如下:
文章插图
- 分别有8辆不同车牌 , 因此这个停车位的"停车次数"是8
- 就算同一天有相同的车在不同时段停放 , 只算一次
如下:
文章插图
- 第一个停车位中 , 连续出现3次的区域只有一个(3个"GG"), 因此这个停车位"连续停车3小时"结果是1
- 同理 , "连续停车2小时"结果是2(分别是"AA"与"FF")
文章插图
需求1按理解 , 可以描述为"不同车牌数量" , 相当于去重复后的车牌数 。
因此代码非常简单:
文章插图
- df.iloc, 由于第一列是"时间" , 不是需要的数据 , 通过切片获取第一列到最后的所有列
- .apply, 注意参数 axis 默认为0 , 表示数据表每一列作为处理单位
- pd.Series.nunique 就是去重计数
文章插图
- 我这只考虑一列的处理情况 , 因为所有列批量处理只需要调用 apply 即可
- 这里同样可以使用 Series.value_counts() 做到一样的效果
文章插图
- 行3:按之前的处理 , 统计次数
- 注意此时结果是一个 Series , index(上图红框) 是"连续n小时停车" 。 value(上图蓝框) 是连续n小时停车出现的次数
文章插图
- 行6:选出一列执行看看效果
文章插图
- 注意 行索引(蓝框) 是"连续n小时停车"
reindex 就是为了这种场景而设计:
文章插图
- 行4:顺手把空值填成 0
推荐阅读
- 计算机专业大一下学期,该选择学习Java还是Python
- 想自学Python来开发爬虫,需要按照哪几个阶段制定学习计划
- 未来想进入AI领域,该学习Python还是Java大数据开发
- 2021年Java和Python的应用趋势会有什么变化?
- 非计算机专业的本科生,想利用寒假学习Python,该怎么入手
- 用Python制作图片验证码,这三行代码完事儿
- 历时 1 个月,做了 10 个 Python 可视化动图,用心且精美...
- 为何在人工智能研发领域Python应用比较多
- 对于非计算机专业的同学来说,该选择学习Python还是C
- 学习完Python之后,如何向人工智能领域发展