我需要编写一个程序来组织提供的电子表格中的数据,以找到每个月最赚钱的十大产品。该程序需要用户输入,以指定编译数据的年份。 我已经按照其最高的获利能力来打印每个月销售的所有产品,但我不知道如何使它仅打印每个月的前十名。 我也迷失了如何从用户那里选择输入仅选择特定年份的程序来编译数据。
请帮助。
为我的项目下载文件的链接:https://drive.google.com/drive/folders/1VkzTWydV7Qae7hOn6WUjDQutQGmhRaDH?usp=sharing
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
xl = pd.ExcelFile("SalesDataFull.xlsx")
OrdersOnlyData = xl.parse("Orders")
df_year = OrdersOnlyData["Order Date"].dt.year
OrdersOnlyData["Year"] = df_year
df_month = OrdersOnlyData["Order Date"].dt.month
OrdersOnlyData["Month"] = df_month
dataframe = OrdersOnlyData[["Year","Month","Product Name","Profit"]]
month_profit = dataframe.groupby(["Year","Month","Product Name"]).Profit.sum().sort_values(ascending=False)
month_profit = month_profit.reset_index()
month_profit = month_profit.sort_values(["Year","Month","Profit"],ascending=[True,True,False])
print(month_profit)
答案 0 :(得分:0)
正如@Franco所指出的那样,很难推荐合适的解决方案,因为您没有随问题一起提供数据样本。无论如何,您正在寻找的功能很可能是nth()
。
这可能是这样的:
month_profit = month_profit.sort_values('Profit', ascending=False).groupby(['Year', 'Month']).nth([range(10)]).sort_values(by=['Year', 'Month', 'Profit'], ascending=[True, True, False])