前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >日常答疑|Python实现分类频数统计

日常答疑|Python实现分类频数统计

作者头像
用户7466307
发布2020-06-16 22:29:00
1K0
发布2020-06-16 22:29:00
举报

提问:求每组数据中每个元素重复的个数,用什么函数?

咋一看,我觉得他问的我很懵B~于是,和他要了份数据,瞬间清楚了很多!

所以,需求就是求手机号前7位重复个数,安排!

安排

一、预览数据

代码语言:javascript
复制
df = pd.read_excel(r'C:/Users/Administrator/Desktop/新建 Microsoft Excel 工作表(3).xlsx')
print(df.head(),end = '\n\n')
df.info()

预览数据发现,数据格式不正确,需要先进行格式转换,以及防止隐私泄露,我们用一定的方法进行脱敏处理。

代码语言:javascript
复制
df = df.iloc[:,:3].astype(str)
print(df.head(),end = '\n\n')
df.info()
代码语言:javascript
复制
# 方法一
df['手机号'] = df['手机号'].str.split('.',expand = True)[0]
df['手机号'] = df['手机号'].apply(lambda x:x[:-3]+'***')
# 方法二
df['手机号前7位'] = df['手机号前7位'].str.replace('.0','')
df.tail()

二、删除无效值

代码语言:javascript
复制
idx = df[df['手机号']=='***'].index
df.drop(idx,inplace = True)
df.head()

接下来,进行统计手机号前7位重复个数。

代码语言:javascript
复制
n = df['手机号前7位'].value_counts()
df['手机号前7位重复个数'] = df['手机号前7位'].map(n)
df.tail()

当我满心欢喜地告诉他答案时候,他说不对啊!!!不同ID下,要分别统计,也就是说要看每一个ID下手机号前7位重复个数。于是,接着修改。

三、正确答案

代码语言:javascript
复制
# 化整为零
ID = df['ID'].unique()
result = []
for i in ID:
    df1 = df[df['ID']==i].copy()
    n = df1['手机号前7位'].value_counts()
    df1['手机号前7位重复个数'] = df1['手机号前7位'].map(n)
    result.append(df1)
r = pd.concat(result)
r.sample(10)

这一次,他没有再说什么!!嘻嘻嘻,为我的机智点赞~

不过,我觉得这个方法也许不是太好吧。但是,有没有更好的方法呢?

欢迎大家和我交流一下,感谢~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试test 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 提问:求每组数据中每个元素重复的个数,用什么函数?
  • 安排
  • 一、预览数据
  • 二、删除无效值
  • 三、正确答案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档