找回密码
 立即注册
搜索
热搜: Excel discuz
查看: 2577|回复: 5

列表去重计数的代码

[复制链接]

492

主题

7万

元宝

77万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
770449
发表于 2021-5-19 17:07:27 | 显示全部楼层 |阅读模式
wordlist = ['你好','再见','你好','再见','你好','再见','你好','再见','你好','再见','欧了','拜拜']
wordset = set(wordlist)             #去掉重复内容
wordfreqs = []
for word in wordset:
    freq = wordlist.count(word)         #计算出现次数
    wordfreqs.append((word,freq))

print(wordlist)
print(wordset)
print(wordfreqs)
回复

使用道具 举报

492

主题

7万

元宝

77万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
770449
 楼主| 发表于 2021-5-19 17:07:50 | 显示全部楼层
运算结果:
  1. ['你好', '再见', '你好', '再见', '你好', '再见', '你好', '再见', '你好', '再见', '欧了', '拜拜']
  2. {'欧了', '拜拜', '再见', '你好'}
  3. [('欧了', 1), ('拜拜', 1), ('再见', 5), ('你好', 5)]
复制代码
回复

使用道具 举报

492

主题

7万

元宝

77万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
770449
 楼主| 发表于 2021-5-19 20:27:53 | 显示全部楼层
改进后的代码,用来统计斑马救援出勤记录可以用:
  1. import pandas as pd                          #导入pandas库,读csv用的
  2. pd = pd.read_csv('002.csv',encoding='gbk')      #打开csv文件,读取内容
  3. alllist = '、'.join(pd['参与人员'])              #用顿号拼接人员一列
  4. wordlist = list(alllist.split('、'))             #转成列表格式,以顿号为识别分割符
  5. print(wordlist)                                     #打印列表格式
  6. wordset = set(wordlist)                            #去掉重复内容
  7. from openpyxl import Workbook                         #导入Excel模块
  8. wb = Workbook()                                  #创建一个Excel文件
  9. sheet = wb.active                                  #获取当前sheet名称
  10. sheet.title = "第一个sheet"                          #修改sheet名称
  11. sheet['A1']= "姓名"                                    #在A1 B1单元格输入内容
  12. sheet['B1']= "次数"
  13. #newlist = []                                            #创建空列表来存储姓名和次数
  14. for word in wordset:
  15.     freq = wordlist.count(word)                               #计算出现次数
  16.     sheet.append([word,freq])                                   #把内容添加到sheet
  17.    # newlist.append([word,freq])                                #把内容加入空列表

  18. wb.save( "测试3.xlsx")            #保存到本级目录
  19. #   newlist = sorted(newlist,key=lambda k:k[1],reverse=True)  给列表排序
  20. #print(newlist)
复制代码


回复

使用道具 举报

492

主题

7万

元宝

77万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
770449
 楼主| 发表于 2021-5-19 20:29:06 | 显示全部楼层
13和17两行代码是把结果放入newlist列表,注释掉可正常存到Excel
回复

使用道具 举报

492

主题

7万

元宝

77万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
770449
 楼主| 发表于 2021-5-19 20:36:38 | 显示全部楼层
第4行代码,还可以是:wordlist = alllist.split('、')
回复

使用道具 举报

492

主题

7万

元宝

77万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
770449
 楼主| 发表于 2021-5-20 19:20:24 | 显示全部楼层
如果源文件是Excel文件的话,只需要把第二行替换成
  1. pd = pd.read_excel('result.xlsx')   
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|五花八门论坛 ( 豫ICP备15031300号-3 )

GMT+8, 2024-12-31 01:00 , Processed in 0.067064 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表