只用一个公式完成EXCEL数据表有空值列的按条件筛选并去重计数的方法

有人说做数据无非几点:逻辑思路,技术工具和业务需求,1)逻辑思路中涵盖的大多是一些算法、规则;

3)业务逻辑里面则多为一些指标、客群等。

看着很多的内容,等处理过了才发现,无他,唯手熟尔~

做数据以来,难免会遇到各种处理方法上的问题,每次遇到问题点就整理一下关键的语句,逐渐的,才发现原来整理了一整套,今天抽取一些比较常用的语句,分成了几篇:

一篇是python的常用语句,

一篇是SQL的常规用法,

整理出来,也希望能给大家一些启发,后有Excel的内容,估计需要过段时间才能出场了。

这三篇文章不是告诉你一些系统的工具使用方法,而是针对那些经常使用python,但是又记不住数据处理的方法函数的人,做一个小技巧的总结。

下面先来说一下python的内容:

1、数据读取和筛选的方法

11、数据读写乱码和格式修改

1)数据的读写乱码主要有以下两种方案:

2)读取csv文件时转化成字符串的问题:

就是对表df中的a列各个值出现的次数进行统计。

Pandas中的数据透视表各功能

用过Excel透视表功能的话我们知道,出了统计出现次数之外,还可以选择计算某行的求和、最大最小值、平均值等(数据透视表对于数值类型的列默认选求和,文本类型默认选计数),还是拿表df来说,excel的数据透视表可以计算a列的A、B、C三个元素对应的c列的求和(sum),但是pandas库并没有value_sum()这样的函数,pandas的sum函数是对整列求和的,例如df['b'].sum()是对b列求和,结果是21,和a列无关;所以我们可以自己按照根据a列分表再求和的思路去实现。自己造轮子的做法可以是:def

另外还有一个很重要的需求是统计某列不重复元素的计数,这个用数据透视表是不能直接算出来的,例如有一个用户订单表,一个用户可能下了多个订单,用户有渠道属性,需要统计一段时间内各渠道的付费用户数,直接在透视表的行选渠道,值选uid计数,得到的是没去重的结果,拿df表来说,假设c列是用户id,a列是渠道,想统计a列的A、B、C各渠道各有多少付费用户数,透视表的结果和期望的结果如下图:

常规透视表与期望的去重效果对比

可以看到直接对c列计数是不去重的,和我们想要的不一样。pandas库的.value_counts()库也是不去重的统计,查阅value_counts的官方文档可以发现,这个函数通过改变参数可以实现基础的分组计数、频率统计和分箱计数,normalize参数设置为True则将计数变成频率,例如df的a列中共有6行,而C出现了3次,于是C对应的值就是0.5;bin参数可以设置分箱;dropna可以设置是否考虑缺失值,默认是不考虑(可以结合normalize影响频率);sort可以设置是否根据统计值进行排序(关于value_counts函数的更多内容可以再看下官方文档)。复用之前df_value_sum(df)的思路和代码,可以这么实现去重的计数需求:def

Python的去重计数实现

数据处理就是把,杂乱无章的数据,经过科学的系统的整理之后,变成我们所需要的数据的一个过程叫数据处理。

在数据清洗里主要是干这么三件事

  • 被噩梦惊醒,头脑中一片空白。 最恐怖的噩梦不是从头到尾的灾难,而是到手的幸福转瞬失去,窒息,悔恨,害怕种种感觉交织...

  • 夫花秉孤芳,岂移冰雪之心?木标傲骨,不回金石之志。含气一如,体乾坤之清,摽实三下,应节序之变;报春温于凌寒,挺皎洁...

  • #V课会·第3季·小学30天思维导图实战营# 打卡天数:3/30 打卡时间: 打卡主题:思维导图...

  • 我要回帖

    更多关于 如何筛选出重复项只保留一项 的文章

     

    随机推荐