Advertisement
Korotkodul

Daabases1

Apr 17th, 2025
284
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.63 KB | None | 0 0
  1. # Загрузка датасета с помощью kagglehub
  2. import os
  3. import pandas as pd
  4. import kagglehub
  5.  
  6. # Загрузка последней версии датасета
  7. path = kagglehub.dataset_download("ersany/online-retail-dataset")
  8. print("Path to dataset files:", path)
  9.  
  10. # Чтение Excel-файла
  11. df = pd.read_excel(os.path.join(path, "Online Retail.xlsx"))
  12. """
  13.  InvoiceNo StockCode  ... CustomerID         Country
  14. 0    536365    85123A  ...    17850.0  United Kingdom
  15. 1    536365     71053  ...    17850.0  United Kingdom
  16. 2    536365    84406B  ...    17850.0  United Kingdom
  17. 3    536365    84029G  ...    17850.0  United Kingdom
  18. 4    536365    84029E  ...    17850.0  United Kingdom
  19.  
  20. [5 rows x 8 columns]
  21.  
  22. ['InvoiceNo', 'StockCode', 'Description', 'Quantity', 'InvoiceDate', 'UnitPrice', 'CustomerID', 'Country']
  23. """
  24.  
  25. """
  26. Изменяем цены
  27. объединить страны в группы по первой букве страны (Australia, Austria; Belgium, Brazil и тд)
  28. В группе с первой буквой "A" поднять цену на максимальную цену товарав группе
  29. В группе с первой буквой "B" цену уменьшить на половину минимальной
  30. В остальных группах цены увеличить на 10% от текущей цены объекта
  31. """
  32. # Полная настройка отображения DataFrame
  33. pd.set_option('display.max_columns', None)  # Все колонки
  34. pd.set_option('display.expand_frame_repr', False)  # Не переносить на новую строку
  35. pd.set_option('display.width', 1000)  # Ширина вывода
  36. pd.set_option('display.max_colwidth', 20)  # Максимальная ширина колонки
  37.  
  38. #объединить страны в группы по первой букве страны (Australia, Austria; Belgium, Brazil и тд)
  39. print("RAW")
  40. print(df.columns.tolist())  # Вывод списка колонок
  41. print(df[:20])
  42. print()
  43.  
  44.  
  45. def change_price(group):
  46.     first_letter = group.name #A, B, C...
  47.  
  48.     if first_letter == 'A':
  49.         max_price = group['UnitPrice'].max()
  50.         group['UnitPrice'] = max_price
  51.     elif first_letter == 'B':
  52.         min_price = group['UnitPrice'].min()
  53.         group['UnitPrice'] = group['UnitPrice'] - (min_price / 2)
  54.     else:
  55.         group['UnitPrice'] = group['UnitPrice'] * 1.1
  56.  
  57.     return group
  58.  
  59.  
  60. def task1(df):
  61.     df = df.groupby( df['Country'].str[0], group_keys=False).apply(change_price)
  62.     return df
  63.  
  64. df = task1(df)
  65. print("AFTER")
  66. print(df[:20])
  67. print(df[-20:])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement