问题引入:
假设你是一个浙江省水果超市的老板,统筹11个下辖地市的水果产量。假设11个地市生产的水果包括:苹果、香蕉和西瓜。你怎样快速得到某种水果产量突出(排名前几)的地市?产量落伍(排名后几)的地市?
问题分析:
得到某种水果产量排名前几和后几名的地市,本质是对Excel中的数据举行多次筛选,筛选的维度有:
1.水果种类;2.好排名;3.坏排名
现在假设一种环境:水果店老板想知道苹果产量排名前3的地市、香蕉产量排名前5的地市以及西瓜产量排名后4名的地市。
Excel本身可以通过多次筛选实现此功能,以苹果产量排名前3的地市为例:
可以通过筛选选项选择苹果产量最大的3项,以降序呈现
得到效果:绍兴、嘉兴和宁波是苹果产量排名前3的地市
若避免和繁琐的Excel筛选菜单打交道,可以将此功能利用Python实现。
完整代码
[code]import openpyxl
file_path = "data.xlsx"
sheet_name = "Sheet2"
# 加载工作簿和工作表
workbook = openpyxl.load_workbook(file_path)
sheet = workbook[sheet_name]
fruit_id = 1
top = 3
bottom = 3
#data存储[地市-水果产量]的组合
data = []
# 读取数据
for row in sheet.iter_rows(min_row=2, values_only=True): # 假设第一行是标题行,从第二行开始读取
city = row[0]
development = row[fruit_id]
data.append((city, development))
# 将数据按水果产量降序排序
sorted_data = sorted(data, key=lambda x: x[1], reverse=True)
# 获取水果产量前三名和后三名的地市
top_cities = [city for city, _ in sorted_data[:top]]
bottom_cities = [city for city, _ in sorted_data[-bottom:]]
print("【本日浙江省分地市水果产量情况】", end = '')
print(sheet.cell(row = 1, column = fruit_id + 1).value)
print(" |