Олимпиадный тренинг

Задача . Tips.csv самые простые задачи


Задача

Темы:

Этап 1: Подготовка и первичный осмотр

  1. Загрузка: Скачайте tips.csv 

    • 💡 Подсказка: Используйте функцию pd.read_csv('имя_файла_или_ссылка').

  2. Проверка: Выведите первые 10 строк, чтобы понять структуру.

    • 💡 Подсказка: Метод .head(10).

  3. Инфо: Узнайте типы данных в колонках и количество записей.

    • 💡 Подсказка: Метод .info().

  4. Пропуски: Проверьте датасет на наличие пустых значений.

    • 💡 Подсказка: Комбинация методов .isnull().sum() или .isna().sum().

  5. Статистика: Выведите основные статистические показатели (среднее, минимум, максимум) для числовых признаков.

    • 💡 Подсказка: Метод .describe().

Этап 2: Фильтрация и выборка

  1. Выбор колонок: Создайте новый DataFrame, содержащий только столбцы total_bill и tip.

    • 💡 Подсказка: Используйте двойные квадратные скобки: df[['колонка1', 'колонка2']].

  2. Дорогие заказы: Отфильтруйте записи, где общая сумма счета (total_bill) превышает $30.

    • 💡 Подсказка: Фильтрация по условию: df[df['название_колонки'] > 30].

  3. Воскресный ужин: Выберите только те заказы, которые были сделаны в воскресенье (Sun) в вечернее время (Dinner).

    • 💡 Подсказка: Используйте оператор & (И) и не забудьте взять каждое условие в круглые скобки: df[(условие1) & (условие2)].

  4. Щедрые чаевые: Найдите все счета, где чаевые составили более $7.

    • 💡 Подсказка: Снова фильтрация по маске: df[df['tip'] > ...].

  5. Сортировка: Отсортируйте данные по убыванию суммы счета.

    • 💡 Подсказка: Метод .sort_values(by='колонка', ascending=False).

Этап 3: Группировка и агрегация

  1. Средний счет по дням: Посчитайте среднюю сумму счета для каждого дня недели.

    • 💡 Подсказка: Группировка: df.groupby('колонка_для_групп')['колонка_для_подсчета'].mean().

  2. Курильщики: Сравните средний размер чаевых у курящих и некурящих гостей.

    • 💡 Подсказка: Тот же groupby, но группируем по колонке smoker, а считаем .mean() для колонки tip.

  3. Размер компании: Сколько заказов было сделано компаниями разного размера?

    • 💡 Подсказка: Подсчет уникальных значений с помощью .value_counts() для колонки size.

  4. Гендерный анализ: Кто в среднем оставляет больше чаевых — мужчины или женщины?

    • 💡 Подсказка: Используйте .groupby('sex')['tip'].mean().

  5. Сложная группа: Посчитайте максимальную и минимальную сумму счета для каждой комбинации дня недели и времени суток.

    • 💡 Подсказка: Передайте в groupby список колонок: groupby(['day', 'time']), а затем примените несколько функций через метод .agg(['min', 'max']).

Этап 4: Создание признаков и преобразование

  1. Процент чаевых: Создайте новую колонку tip_pct, которая содержит процент чаевых от общей суммы счета.

    • 💡 Подсказка: Прямая математика с колонками: df['новая_колонка'] = (df['tip'] / df['total_bill']) * 100.

  2. Переименование: Переименуйте колонку sex в gender, а size в party_size.

    • 💡 Подсказка: Метод .rename(columns={'старое_имя': 'новое_имя'}).

  3. Категории: Создайте признак, который делит счета на «Маленькие» (до $15) и «Большие» (свыше $15).

    • 💡 Подсказка: Можно использовать np.where(условие, 'Большие', 'Маленькие') из библиотеки NumPy, или написать свою функцию и применить ее через метод .apply().


time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя