如何使用熊猫将销售数据整理到12个月内,并找到这12个月内最赚钱的10种产品?

时间:2019-04-24 04:42:22

标签: python-3.x pandas

我需要编写一个程序来组织提供的电子表格中的数据,以找到每个月最赚钱的十大产品。该程序需要用户输入,以指定编译数据的年份。 我已经按照其最高的获利能力来打印每个月销售的所有产品,但我不知道如何使它仅打印每个月的前十名。 我也迷失了如何从用户那里选择输入仅选择特定年份的程序来编译数据。

请帮助。

为我的项目下载文件的链接: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)

1 个答案:

答案 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])