Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import pandas as pd
- import kagglehub
- import numpy as np
- import warnings
- warnings.filterwarnings("ignore", category=DeprecationWarning)
- # Полная настройка отображения DataFrame
- pd.set_option('display.max_columns', None) # Все колонки
- pd.set_option('display.expand_frame_repr', False) # Не переносить на новую строку
- pd.set_option('display.width', 1000) # Ширина вывода
- pd.set_option('display.max_colwidth', 20) # Максимальная ширина колонки
- path = kagglehub.dataset_download("ersany/online-retail-dataset")
- df = pd.read_excel(os.path.join(path, "Online Retail.xlsx"))
- """
- Поиск акул рынка
- 1)Постройте отдельную таблицу пкупатель - число заказов ['CustomerID', 'NumOrders']
- 2)Найдите самых активных (число заказов больше, чем у 95% всех покупателей)
- Из основной таблицы выберете только информацию о наших акулах
- 3)Для каждого подсчитайте, сколько суммарно в каждой из стран было потрачено $ (оформить в виде таблицы с колонками CustomerID и нразваниями стран)
- 4)Найти гениев, которые покупали в нескольких странах
- (подсказка: unstack, reset_index, columns.name = None)
- """
- print(# Можно применять разные функции к разным колонкам
- df.head())
- """
- InvoiceNo StockCode Description Quantity InvoiceDate UnitPrice CustomerID Country
- 0 536365 85123A WHITE HANGING HE... 6 2010-12-01 08:26:00 2.55 17850.0 United Kingdom
- 1 536365 71053 WHITE METAL LANTERN 6 2010-12-01 08:26:00 3.39 17850.0 United Kingdom
- 2 536365 84406B CREAM CUPID HEAR... 8 2010-12-01 08:26:00 2.75 17850.0 United Kingdom
- 3 536365 84029G KNITTED UNION FL... 6 2010-12-01 08:26:00 3.39 17850.0 United Kingdom
- 4 536365 84029E RED WOOLLY HOTTI... 6 2010-12-01 08:26:00 3.39 17850.0 United Kingdom
- """
- def task3(df):
- num_orders = df.groupby('CustomerID')['InvoiceNo'].nunique().reset_index()
- num_orders.columns = ['CustomerID', 'NumOrders']
- threshold = num_orders['NumOrders'].quantile(0.95)
- sharks = num_orders[num_orders['NumOrders'] > threshold]
- print("SHARKS")
- print(sharks)
- print()
- df_sharks_info = pd.merge(df, sharks, on='CustomerID', how='inner')
- print("DF_SHARKS_INFO")
- print(df_sharks_info)
- print()
- df_sharks_info['TotalSpent'] = df_sharks_info['Quantity'] * df_sharks_info['UnitPrice']
- #Для каждого подсчитайте, сколько суммарно в каждой из стран было потрачено $ (оформить в виде таблицы с колонками CustomerID и нразваниями стран)
- spent_per_country = df_sharks_info.pivot_table(
- index='CustomerID',
- columns='Country',
- values='TotalSpent',
- aggfunc='sum',
- fill_value=0
- ).reset_index().rename_axis(None, axis=1)
- #Найти гениев, которые покупали в нескольких странах
- #spent_per_country['non_zero_count'] = (spent_per_country != 0).sum(axis=1)
- print("spent_per_country")
- print(spent_per_country)
- task3(df)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement