Advertisement
Korotkodul

database_C1

Apr 18th, 2025
330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.58 KB | None | 0 0
  1. import os
  2. import pandas as pd
  3. import kagglehub
  4. import numpy as np
  5. import warnings
  6.  
  7. warnings.filterwarnings("ignore", category=DeprecationWarning)
  8.  
  9. # Полная настройка отображения DataFrame
  10. pd.set_option('display.max_columns', None)  # Все колонки
  11. pd.set_option('display.expand_frame_repr', False)  # Не переносить на новую строку
  12. pd.set_option('display.width', 1000)  # Ширина вывода
  13. pd.set_option('display.max_colwidth', 20)  # Максимальная ширина колонки
  14.  
  15.  
  16. path = kagglehub.dataset_download("ersany/online-retail-dataset")
  17. df = pd.read_excel(os.path.join(path, "Online Retail.xlsx"))
  18.  
  19. """
  20. Поиск акул рынка
  21. 1)Постройте отдельную таблицу пкупатель - число заказов ['CustomerID', 'NumOrders']
  22. 2)Найдите самых активных (число заказов больше, чем у 95% всех покупателей)
  23. Из основной таблицы выберете только информацию о наших акулах
  24. 3)Для каждого подсчитайте, сколько суммарно в каждой из стран было потрачено $ (оформить в виде таблицы с колонками CustomerID и нразваниями стран)
  25. 4)Найти гениев, которые покупали в нескольких странах
  26. (подсказка: unstack, reset_index, columns.name = None)
  27. """
  28.  
  29. print(# Можно применять разные функции к разным колонкам
  30. df.head())
  31. """
  32.  InvoiceNo StockCode          Description  Quantity         InvoiceDate  UnitPrice  CustomerID         Country
  33. 0    536365    85123A  WHITE HANGING HE...         6 2010-12-01 08:26:00       2.55     17850.0  United Kingdom
  34. 1    536365     71053  WHITE METAL LANTERN         6 2010-12-01 08:26:00       3.39     17850.0  United Kingdom
  35. 2    536365    84406B  CREAM CUPID HEAR...         8 2010-12-01 08:26:00       2.75     17850.0  United Kingdom
  36. 3    536365    84029G  KNITTED UNION FL...         6 2010-12-01 08:26:00       3.39     17850.0  United Kingdom
  37. 4    536365    84029E  RED WOOLLY HOTTI...         6 2010-12-01 08:26:00       3.39     17850.0  United Kingdom
  38. """
  39. def task3(df):
  40.     num_orders = df.groupby('CustomerID')['InvoiceNo'].nunique().reset_index()
  41.     num_orders.columns = ['CustomerID', 'NumOrders']
  42.     threshold = num_orders['NumOrders'].quantile(0.95)
  43.     sharks = num_orders[num_orders['NumOrders'] > threshold]
  44.     print("SHARKS")
  45.     print(sharks)
  46.     print()
  47.     df_sharks_info = pd.merge(df, sharks, on='CustomerID', how='inner')
  48.     print("DF_SHARKS_INFO")
  49.     print(df_sharks_info)
  50.     print()
  51.     df_sharks_info['TotalSpent'] = df_sharks_info['Quantity'] * df_sharks_info['UnitPrice']
  52.  
  53.  
  54.     #Для каждого подсчитайте, сколько суммарно в каждой из стран было потрачено $ (оформить в виде таблицы с колонками CustomerID и нразваниями стран)
  55.     spent_per_country = df_sharks_info.pivot_table(
  56.         index='CustomerID',
  57.         columns='Country',
  58.         values='TotalSpent',
  59.         aggfunc='sum',
  60.         fill_value=0
  61.     ).reset_index().rename_axis(None, axis=1)
  62.  
  63.     #Найти гениев, которые покупали в нескольких странах
  64.     #spent_per_country['non_zero_count'] = (spent_per_country != 0).sum(axis=1)
  65.     print("spent_per_country")
  66.     print(spent_per_country)
  67.  
  68.  
  69. task3(df)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement