利用python实现对Excel文件中数据元组的自定义排序

打印 上一主题 下一主题

主题 1005|帖子 1005|积分 3019

问题引入:

假设你是一个浙江省水果超市的老板,统筹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("

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

刘俊凯

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表