как использовать pandas для организации данных о продажах за 12 месяцев и поиска 10 наиболее прибыльных продуктов за эти 12 месяцев?

#python-3.x #pandas

#python-3.x #pandas

Вопрос:

Мне нужно написать программу, которая организует данные в предоставленной электронной таблице, чтобы находить 10 самых прибыльных продуктов по каждому месяцу. Программа должна принимать входные данные от пользователя, чтобы указать год, в котором собирать данные. Я дошел до того, что печатаю все продукты, проданные за каждый месяц, по их максимальной прибыльности, но я не знаю, как заставить его печатать только 10 лучших продуктов за каждый месяц. Я также не понимаю, как получить информацию от пользователя, чтобы выбрать только определенный год для программы для компиляции данных.

Пожалуйста, помогите.

ссылка для загрузки файлов для моего проекта: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. Пожалуйста, предоставьте некоторые примеры данных и ожидаемый результат.

Ответ №1:

Как отметил @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])