美文网首页
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