Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Загрузка датасета с помощью kagglehub
- import os
- import pandas as pd
- import kagglehub
- # Загрузка последней версии датасета
- path = kagglehub.dataset_download("ersany/online-retail-dataset")
- print("Path to dataset files:", path)
- # Чтение Excel-файла
- df = pd.read_excel(os.path.join(path, "Online Retail.xlsx"))
- """
- InvoiceNo StockCode ... CustomerID Country
- 0 536365 85123A ... 17850.0 United Kingdom
- 1 536365 71053 ... 17850.0 United Kingdom
- 2 536365 84406B ... 17850.0 United Kingdom
- 3 536365 84029G ... 17850.0 United Kingdom
- 4 536365 84029E ... 17850.0 United Kingdom
- [5 rows x 8 columns]
- ['InvoiceNo', 'StockCode', 'Description', 'Quantity', 'InvoiceDate', 'UnitPrice', 'CustomerID', 'Country']
- """
- """
- Изменяем цены
- объединить страны в группы по первой букве страны (Australia, Austria; Belgium, Brazil и тд)
- В группе с первой буквой "A" поднять цену на максимальную цену товарав группе
- В группе с первой буквой "B" цену уменьшить на половину минимальной
- В остальных группах цены увеличить на 10% от текущей цены объекта
- """
- # Полная настройка отображения 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) # Максимальная ширина колонки
- #объединить страны в группы по первой букве страны (Australia, Austria; Belgium, Brazil и тд)
- print("RAW")
- print(df.columns.tolist()) # Вывод списка колонок
- print(df.head())
- def change_price(group):
- """Функция для изменения цен в соответствии с условиями"""
- first_letter = group.name # Здесь group.name - это первая буква (A, B и т.д.)
- if first_letter == 'A':
- # Для группы A: цена = максимальная цена в группе
- max_price = group['UnitPrice'].max()
- group['UnitPrice'] = max_price
- elif first_letter == 'B':
- # Для группы B: цена = текущая цена - половина минимальной цены группы
- min_price = group['UnitPrice'].min()
- group['UnitPrice'] = group['UnitPrice'] - (min_price / 2)
- else:
- # Для остальных групп: увеличиваем цену на 10%
- group['UnitPrice'] = group['UnitPrice'] * 1.10
- return group
- def task1(df):
- """Основная функция для обработки данных"""
- # Добавляем столбец с первой буквой страны
- df['FirstLetter'] = df['Country'].str[0]
- # Группируем по первой букве и применяем модификацию цен
- df = df.groupby('FirstLetter', group_keys=False).apply(change_price)
- return df
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement