数据处理案例1:表格中找到满足条件的连续数据行
问题描述:
例如找到工资小于等于9000的连续行区间,并进行简单统计,包括人数,区间的数据长度,区间的时间跨度等。
数据表格描述如下:
ID | 时间 | 工资 |
---|---|---|
1 | 2021-01 | 11000 |
1 | 2021-06 | 8000 |
1 | 2021-08 | 9000 |
1 | 2021-09 | 12000 |
… | … | … |
2 | 2021-04 | 7000 |
2 | 2021-09 | 9000 |
… | … | … |
该问题采取的措施:
解决这个问题,我的思路是:先筛选出符合条件的数据行,然后想办法判断这些数据哪些是连续的。其中最重要的一步是判断数据行是否在原始数据中连续,为了解决这个问题,只需要在原始数据中增加一列,显示数据的位置(以ID为区分),然后再从筛选后的数据中找出连续且递增的数据序列即可。例如:
ID | 时间 | 工资 | 序号 |
---|---|---|---|
1 | 2021-01 | 11000 | 1 |
1 | 2021-06 | 8000 | 2 |
1 | 2021-08 | 9000 | 3 |
1 | 2021-09 | 12000 | 4 |
… | … | … | … |
2 | 2021-04 | 7000 | 1 |
2 | 2021-09 | 9000 | 2 |
… | … | … | … |
筛选后的数据:
ID | 时间 | 工资 | 序号 |
---|---|---|---|
1 | 2021-06 | 8000 | 2 |
1 | 2021-08 | 9000 | 3 |
2 | 2021-04 | 7000 | 1 |
2 | 2021-09 | 9000 | 2 |
3 | 2021-01 | 8000 | 6 |
4 | 2021-04 | 8000 | 5 |
4 | 2021-06 | 8000 | 6 |
4 | 2021-09 | 9000 | 9 |
4 | 2021-10 | 8000 | 10 |
… | … | … | … |
显然,上述符合条件的递增连续序列是
- ID1:(2,3)
- ID2:(1,2)
- ID4:(5,6),(9,10)
通过找到所有的递增连续序列,就可以找到所有ID的满足条件的连续区间,就可以统计时间跨度、区间长度、出现次数等。
通过分析,以上问题转变为了一个寻找连续递增数据序列的问题,避免了在原始数据上的复杂的循环和判断等操作。
寻找连续递增序列,只需要判断下一个数字是不是前一个数字+1,将符合条件的连续数字append在列表中即可。具体python代码实现见下一篇《python找列表中的连续递增序列》。