Excel 檔案資料讀取和篩選
阿新 • • 發佈:2018-11-19
需求:已知一個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)
執行結果如下: