Pandas 数据筛选,去重结合group by

需求

今小伙伴有一个Excel表, 是部门里的小伙9月份打卡记录, 关键字段如下:

姓名, 工号, 日期, 打卡方式, 时间, 详细位置, IP地址....

脱敏数据:

姓名

工号

日期

方式

时间

...

小赵

123

2019-09-01

GPS

08:37:50

....

小赵

123

2019-09-01

GPS

18:10:50

...

小陈

124

2019-09-01

GPS

08:47:30

...

小陈

124

2019-09-01

GPS

15:07:50

...

小陈

124

2019-09-01

GPS

18:07:5

...

小赵

123

2019-09-02

GPS

08:55:50

...

小李

125

2019-09-02

PC

13:10:24

即每个小伙伴, 一个月(30天), 正常打卡是60次, 上午,下午各一次/每天. 但真实情况是: 可能忘记打卡,或者一天打了n次, 现要求是 筛选出上班迟到(9:00) 的所有人员信息.

一看, 这用Excel, 透视一下姓名, 然后筛选日期...., 我感觉我的EXCEL水平怕是支撑不了, 但, Pandas可以呀, 5行代码搞定数据透视和条件过滤.

核心思路:

先按照 性别 进行分组, 然后对每组中, 日期 字段去重, 保留第一条记录即可.

筛选出 时间 在 9:00 之后的记录, 存为Excel即可.

完整代码如下:

import pandas as pd

# 1. 读取数据

data = pd.read_excel("9月打卡记录.xlsx")

data['时间'] = pd.to_datetime(data["时间"], format="%H:%M:%S")

# 2. 先按姓名分组, 再对日期去重,保留第一个值

ret = data.groupby("姓名", as_index=False).apply(lambda df:df.drop_duplicates("日期"))

# 3. 筛选日期,并保存为excel文件

ret[ret["时间"] >= "1900/1/1 09:00:00"].to_excel("9月迟到名单.xlsx", index=False)

该篇的目的是为了巩固这些常用的知识点, 如 group by 结合 apply 的用法, 匿名函数, 时间字符串处理等.当然会有更复杂情况, 如分组过后, 按日期去重, 保留的第一条记录, 不是最早打卡的那条? 那这就需要写排序逻辑了, 这里只是先抛砖引玉一波.

小结

pandas 读取文件, pd.read_excel( ); pd.read_csv( ); pd.read_json( ); pd.read_sql_table( )...

写入文件: pd.to_excel( ); pd.to_csv( ) ....

字段筛选过滤等操作必须熟练.

时间字符串 与 时间类型 的 互相转换 datetime 模块

group by 分组聚合, agg(); apply( ), 结合Excel 透视表就很好理解

关于映射: apply(函数名), 应用于整行or列, 对应的还有, applymap 作用每个元素, map()作用于某列Series.

关于匿名函数lambda 的用法及与普通function的区别.

后续还有更多工作案例分享, 基础, 高阶,都会有的.....

python之pandas数据筛选和csv操作

本博主要总结DaraFrame数据筛选方法(loc,iloc,ix,at,iat),并以操作csv文件为例进行说明 1. 数据筛选 a b c (1)单条件筛选 df[df[] # 如果想筛选a列的取 ...

Pandas数据的去重,替换和离散化,异常值的检测

数据转换 移除重复数据 import pandas as pd import numpy as np from pandas import Series data = pd.DataFrame( {' ...

pandas的筛选功能,跟excel的筛选功能类似,但是功能更强大。

Select rows from a DataFrame based on values in a column -pandas 筛选 https://stackoverflow.com/questi ...

Pandas数据规整

Pandas数据规整 数据分析和建模方面的大量编程工作都是用在数据准备上的,有时候存放在文件或数据库中的数据并不能满足数据处理应用的要求 Pandas提供了一组高级的.灵活的.高效的核心函数和算法,它 ...

Java使用极小的内存完成对超大数据的去重计数,用于实时计算中统计UV

Java使用极小的内存完成对超大数据的去重计数,用于实时计算中统计UV – lxw的大数据田地 http://lxw1234.com/archives/2015/09/516.htm Java使用极小 ...

Python的工具包[1] -> pandas数据预处理 -> pandas 库及使用总结

pandas数据预处理 / pandas data pre-processing 目录 关于 pandas pandas 库 pandas 基本操作 pandas 计算 pandas 的 Series ...

使用 joblib 对 Pandas 数据进行并行处理

使用 joblib 对 Pandas 数据进行并行处理 如果需要对一个很大的数据集进行操作,而基于一列数据生成新的一列数据可能都需要耗费很长时间. 于是可以使用 joblib 进行并行处理. 假设我们 ...

4-Pandas之数据类型与数据筛选

一.数据类型 1.Pandas的数据类型主要结合了pandas和numpy两个模块中的数据类型,包括以下几种: float int bool datetime64[ns]------>日期类型 ...

pandas 数据子集的获取

有时数据读入后并不是对整体数据进行分析,而是数据中的部分子集,例如,对于地铁乘客量可能只关心某些时间段的流量,对于商品的交易可能只需要分析某些颜色的价格变动,对于医疗诊断数据可能只对某个年龄段的人群感 ...

随机推荐

安装了ubuntu14.04+windows7双系统的笔记本启动后出现grub rescue>提示符

解决思想如下: 1.在grub rescue>提示符处输入ls  即可看到该命令列出了硬盘上的所有分区,找到安装了linux的分区,我的安装在(hd0,msdos8)下,所以我以(hd0,msd ...

Ubuntu 12.04 LTS 及ubuntu14.10 -- NFS安装

在Linux 服务器上配置好NFS 根文件系统后,在单板侧挂载NFS 文件系统,具体操作如下:ifconfig eth0 hw ether 00:10:85:18:01:84 /*配置MAC地址*/i ...

sql reiserror 输出错误

其语法如下: RAISERROR ( { msg_id | msg_str | @local_variable }                    { ,severity ,state }    ...

char varchar varchar2 的区别 (转)

char varchar varchar2 的区别       http://blog.csdn.net/honglei_zh/article/details/7172538区别:1.CHAR的长度是 ...

集群环境下JSP中获取客户端IP地址的方法

String ip = request.getHeader("X-Forwarded-For");if (ip == null || ip.length() == 0 || &qu ...

《Django By Example》第十二章 中文 翻译 (个人学习,渣翻)

书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第十二章,全书最后一章,终于到这章 ...

JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 3

python打卡记录去重_Pandas 数据筛选,去重结合group by相关推荐

  1. python excel处理重复行并统计个数_excel两个表格数据核对python-如何用python实现两个文件重复数据筛选并统计...

    怎么用python读取excel表格的数据 import pandas as pd excel1_data = pd.read_excel( 文件路径) excel2_data = pd.read_e ...

  2. python两个表格相同数据筛选_python如何统计所有文本文件的行数 如何用python实现两个文件重复数据筛选并统计...

    如何用python统计文本中重复行的数目? python比较txt文档中每行文本之间重复词的个数不想面对他离开,逃避不是一个好方法,但却是唯一的办法. 每一行弄成一个集合,分享两个集合之间的交集,计算 ...

  3. python筛选csv数据_pandas数据筛选和csv操作的实现方法

    1. 数据筛选 a b c 0 0 2 4 1 6 8 10 2 12 14 16 3 18 20 22 4 24 26 28 5 30 32 34 6 36 38 40 7 42 44 46 8 4 ...

  4. python pandas 去重_Pandas 数据框增、删、改、查、去重、抽样基本操作方法

    怎么使用Python中Pandas库Resample,实现重采样,按照时间,比如原采样间隔为100ms,数据为[0,10,20,30,40],那么重采样#python中的pandas库主要有DataF ...

  5. python 打卡记录代码_利用Python实现对考勤打卡数据处理的总结

    利用Python实现对考勤打卡数据处理的总结 一.背景交代 二.说明 三. 8种方法 1. 查看文件是否存在 2. 导入excel文件,并把数据保存为dataframe格式 3. 计算程序运行时间 4 ...

  6. 多条记录取最近日期的一条_Excel VBA:基于员工打卡记录的考勤数据统计

    微信公众号:金融数学 使用VBA做一个基于员工打卡记录的考勤数据分析工具; 1应用场景 某公司通过门禁系统记录了每位员工上下班打卡时间,现在需要对一段特定时间内员工出勤情况进行统计分析,包含加班时间( ...

  7. 【Python】Pandas实用技能,数据筛选query函数详细介绍

    来源:Python数据之道 (ID:PyDataLab) 作者:阳哥 Pandas 可以说是 在Python数据科学领域应用最为广泛的工具之一. Pandas是一种高效的数据处理库,它以 datafr ...

  8. Python爬虫-爬取新闻网站,将数据对比去重插入数据库

    一.近期想实现一个推荐系统的API,目前正在筹备中,实现了一个新闻网站,用来做测试(大家可以看我以前的文章)今天分享的就是为我的新闻网站提供数据的爬虫代码 先看效果 检测到重复数据时程序是不会插入到数 ...

  9. python打卡记录去重_Python笔记记录

    1.数据清洗检查空值: df[df.isna().values == True] df = df.dropna(how='any', axis=0) 2.数据清洗去重 df1.drop_duplica ...

  10. python打卡记录去重_python中对list去重的多种方法

    今天遇到一个问题,在同事随意的提示下,用了 itertools.groupby 这个函数.不过这个东西最终还是没用上. 问题就是对一个list中的新闻id进行去重,去重之后要保证顺序不变. 直观方法 ...

最新文章

  1. socket心跳机制图片_WebSocket心跳检测和重连机制
  2. Ajax方式上传文件报错Uncaught TypeError: Illegal invocation
  3. idea中新增package总是嵌套的解决方法
  4. 前端基础:web语义化
  5. Power Automate生产现场实例分享回顾
  6. 1713. 得到子序列的最少操作次数
  7. 各版本lettuce spring集成流程(连接池、哨兵配置)
  8. 厉害|高通正利用“AI Engine”加速AI从云端走向终端应用和落地!
  9. 因市场垄断 高通被欧盟开出巨额罚单 高通:我不服
  10. ios 数组中的字典排序_题解 | 26.删除排序数组中的重复项
  11. 【3】数据筛选3 - BeautifulSoup4
  12. 前端构建工具与应用程序测试
  13. GitHub实现G D O S自动签到
  14. Linux kernel kfifo分析【转】
  15. 【Java并发性和多线程】竞态条件与临界区
  16. 基于CANape开发之Functions(一)
  17. kdj指标主要看哪个值_kdj指标中三者的关系是什么?
  18. dns的基本设定(一)
  19. html语言加入图片背景音乐,如何插入背景音乐和背景图片(附HTML语法教程地址)...
  20. 给电脑重装系统的方法与重装过程中问题解决

热门文章

  1. 用ybc_box做小程序
  2. Linux 中各个文件夹的作用
  3. idea 内存溢出问题
  4. Server 2008系统安装驱动提示“无法验驱动程序数字签名”怎么办?
  5. java美元转换人民币代码,java实现人民币数字转换中文大写的工具实例代码demo分享...
  6. 微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计
  7. 武侯计算机实验小学小升初,2018年成都小学升初中划片最新版!(含2017年对比)...
  8. 帝国(empire)作业
  9. Python-day17
  10. leetcode LCP 03. 机器人大冒险