#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])