美文网首页
Python-计算重复数据第几次出现

Python-计算重复数据第几次出现

作者: 蜡笔不好吃 | 来源:发表于2019-02-11 21:21 被阅读0次

这个问题应该算是挺常见的,所以记录下。
Q:数据已经按顺序排好了,有一列订单号数据是重复的,计算该订单号是第几次出现。

excel的解法:https://zhidao.baidu.com/question/355551600.html
A列是数据 在B1输入

=countif($a$1:a1,a1)

然后下拉填充数据即可,但是在Excel中这样做的话计算量非常大,因为这个任务是每个月算一次,每月大概15W条记录,电脑跑起来太久了。今天一下要算3个月的,好吧,拿出python来跑。

先讲讲思路
这个是在《数据科学入门》这门书上看到的,当时实现的功能计算单词总共出现了多少次,即统计词频。这个对python来说特别简单,调用库一下就得出结果了。
但这本书很讲究从0开始,所以用的方法很基础

from collections import defaultdict
word_count=defaultdict(int) #int()生成0

for word in document:
    word_count[word]+=1

所以字典word_count会一个一个的加上去,这不就是我们需要的第几次出现嘛~所以改进一下。

使用pandas,将数据变成dataframe形式

from collections import defaultdict
import pandas as pd

order_count = defaultdict(int)

def num(order):
    order_count[order]+=1
    return order_count[order]


def count_order_num():
    #读取数据,从Excel读取。
    path = r'  '
    data = pd.read_excel(path, sheetname='Sheet0', header=0)
    #按时间排序先
    data.sort_values('抽检时间', inplace=True)
    #计算几次出现
    data['第几次出现'] = data.apply(lambda x:num(x['下单编号'])  , axis=1 )
    print(data)

    # 保存到excel
    save_path = r'  '
    write = pd.ExcelWriter(save_path)
    data.to_excel(write, sheet_name='Sheet1', header=True, index=False)
    write.save()
    print('ok')

if __name__ == '__main__':
    count_order_num()

用字典order_count记录下单编号,每次来一个就+1,然后返回当前的统计到的数字,就是该下单编号第几次出现。

还有Office2016安装真的是很烦人,这几天Excel出了问题删掉重装,结果安装报错错误代码:30180-4
试了好久还是没装上,烦人

相关文章

网友评论

      本文标题:Python-计算重复数据第几次出现

      本文链接:https://www.haomeiwen.com/subject/ocdceqtx.html