Advertisement
Korotkodul

B. Сложная подкрутка

Apr 17th, 2025 (edited)
322
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.06 KB | None | 0 0
  1. import os
  2. from itertools import groupby
  3.  
  4. import pandas as pd
  5. import kagglehub
  6. import numpy as np
  7.  
  8.  
  9. path = kagglehub.dataset_download("ersany/online-retail-dataset")
  10. df = pd.read_excel(os.path.join(path, "Online Retail.xlsx"))
  11.  
  12. def double_price(group_data):
  13.     group = group_data.copy()
  14.     group['UnitPrice'] = group['UnitPrice'] * 2
  15.     group['Country'] = group['Country'] + '_bad_times'
  16.  
  17.     return group
  18.  
  19.  
  20. def decrease_price(group_data):
  21.     group = group_data.copy()
  22.     price_mean = group['UnitPrice'].mean()
  23.     price_min = group['UnitPrice'].min()
  24.     group['UnitPrice'] = np.maximum(price_min, group['UnitPrice'] - 0.15 * price_mean)
  25.     group['Country'] = group['Country'] + '_great_times'
  26.  
  27.     return group
  28.  
  29.  
  30. def change_price(group):
  31.     double = double_price(group)
  32.     decrease = decrease_price(group)
  33.     group = pd.concat([double, decrease], axis=0, ignore_index=True)
  34.  
  35.     return group
  36.  
  37. def task2(df):
  38.     df = df.groupby(df['Country'], group_keys=False).apply(change_price)
  39.  
  40.     return df
  41.  
  42. df = task2(df)
  43. print(df.head())
  44.  
  45.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement