Excel 文件数据读取和筛选

版权声明:原创博客,不得用于商业用途 https://blog.csdn.net/qq_43471020/article/details/84025549

需求:已知一个excel 表中的"Sheet1"中,有id, name, salary 3列的内容,要求将薪水重复次数最多的按从高到低进行排序

#coding=utf-8
import xlrd
from collections import Counter
import operator
file = r'C:\\Users\\belle.zhao\\Desktop\\test.xlsx'
data = xlrd.open_workbook('C:\\Users\\belle.zhao\\Desktop\\test.xlsx','rb')  # 打开excel文件
table = data.sheet_by_name('Sheet1')   # 选择sheet页
ncols = table.ncols  # 获取sheet1 页的列数
nrows = table.nrows  # 获取sheet1页的行数
colsvalue = table.col_values(2)  # 读取第3列(索引从0开始)的值存在变量"colsvalue"中
cols2=colsvalue[1:]   # 将去除第1个值后的其他元素存到新的变量"cols2"中
list1 = []
list2 = []

# 法一遍历
for n in cols2:
      if int(n) > 4000:
        list1.append(n)
print("选出薪水高于4000的所有员工:",list1)

# # 法二遍历
# for i in colsvalue[1:]:
#     if i >= 4000:
#         list2.append(i)
# print("选出薪水高于4000的所有员工:",list2)

one_count=cols2.count(3000)  # 统计3000在clos2中出现的次数
print("3000在cols2中出现的次数是:",one_count)

repet_salary={}   # 定义一个空的字典
for n in cols2:
    if n not in repet_salary.keys():
        repet_salary[n]=cols2.count(n)
print("未经过排序的不同层次薪水及其重复次数是:", repet_salary)   # 根据表中薪水出现的次数进行统计,未进行排序
print("未经过排序的不同层次薪水重复次数排名前三的是:" ,Counter(repet_salary).most_common(3))

sort_count=sorted(Counter(repet_salary).most_common())
print("按薪水进行排序,并统计重复次数:",sort_count)
sort_salary=sorted(repet_salary)
print("按薪水进行排序,不统计重复次数:",sort_salary)
sort_list=sorted(repet_salary.items(), key=operator.itemgetter(1)) # 将repet_salary按第二个元素(重复次数)进行排序
print("按薪水重复次数进行排序后sort_list是:",sort_list)
print(type(sort_list))
result=[]
for item in sort_list[::-1]: # sort_list[::-1] 将sort_list里的元素倒叙排列
    result.append((item[0]))
print("不同层次的薪水按重复次数从高到低进行排列:" , result)

运行结果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43471020/article/details/84025549