【Python】【实战】对 excel 某列进行统计,并按出现频率排序

前言

工作中想对 excel 进行一个简单的统计,历时三个小时终于搞定,效果如下:
在这里插入图片描述

1. 源代码

话不多说,直接上源码,可以直接食用,只需将目标文件设置为你需要统计的文件即可。

# -*- coding:utf-8 -*-
import xlrd
from collections import Counter

infos = []
# 目标文件
report = '2019.xlsx'

info_file = xlrd.open_workbook(report)
info_sheet = info_file.sheets()[1]
row_count = info_sheet.nrows

for row in range(0, row_count):
    # 5 为要统计的列序号,注意从 0 开始
	infos.append(info_sheet.cell_value(row, 5))

def all_list(arr):
    result = {}

    for i in set(arr):
        result[i] = arr.count(i)
    return result

d = all_list(infos)
d2 = sorted(d.items(), key = lambda x:x[1], reverse = True)
print(d2)

2. 模块解析

接下来对每个模块进行解说。

2.1 文件打开

# 目标文件
report = '2019.xlsx'
info_file = xlrd.open_workbook(report)
info_sheet = info_file.sheets()[1]

第一步自然要打开文件,这里需要引用 xlrd 库。

第一行定义目标文件,第二行打开,第三行选择表。注意:表的序号从 0 开始:
在这里插入图片描述
如图,“Sheet1” 对应的是 info_sheet = info_file.sheets()[0]
而 “sheet2” 对应 info_sheet = info_file.sheets()[1]

2.2 数据读取

infos = []
for row in range(0, row_count):
	infos.append(info_sheet.cell_value(row, 5))

定义一个 list ,用来存储读取的数据。

然后以列数为界限,利用 for 循环将每行你需要的列数据进行存储。

2.3 频率统计

def all_list(arr):
    result = {}

    for i in set(arr):
        result[i] = arr.count(i)
    return result

定义一个 dict ,将刚刚得到的 list 进行唯一处理, 然后将每个数据进行统计。这里 dict 的 key - value 分别对应 “ 数据 - 频率 ”。

2.4 按频排序

d2 = sorted(d.items(), key = lambda x:x[1], reverse = True)

将刚刚得到的 dict 按照 value 值的大小进行倒序排序。

正序排序只需将代码改为:d2 = sorted(d.items(), key = lambda x:x[1], reverse = True)

  • 12
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值