Pandas — это основная библиотека для работы с данными. Вот несколько приёмов, которые я использую, чтобы быстрее и проще выполнять повторяющиеся задачи по работе с данными.

Данная статья переведена с английского с адаптациями в рамках курса Тренажер-практикум Python и SQL для ML и анализа данных

  1. Анализ выборок фреймов данных с помощью df.groupby().__iter__()

Обычно в блокноте Jupyter сложно изучать набор данных построчно или по группам, в отличие от того, что можно сделать в Excel. Один из полезных приёмов — использовать генератор и Ctrl + Enter вместо Shift + Enter, чтобы итеративно просматривать разные выборки в одной ячейке, не создавая беспорядка в блокноте.

Сначала создайте ячейку с генератором с помощью .groupby() (или .iterrows()) и добавьте .__iter__():

Затем запустите следующую ячейку столько раз, сколько захотите, чтобы увидеть наиболее важные для вас данные, используя сочетание клавиш Ctrl + Enter:

Вот пример анализа пассажиров «Титаника», у которых был один и тот же номер билета. У вас нет возможности изолировать каждую группу пассажиров по отдельности, поэтому этот метод позволяет очень просто анализировать одну группу за другой:

Изучение пассажиров с одинаковым номером «Билета» в наборе данных «Титаник» с помощью df.groupby().__iter__() и сочетания клавиш Ctrl + Enter.
Изучение пассажиров с одинаковым номером «Билета» в наборе данных «Титаник» с помощью df.groupby().__iter__() и сочетания клавиш Ctrl + Enter.
  1. Pandas Profiling для исследования данных и оценки качества данных

Как это часто бывает в науке о данных, мы склонны писать код для изучения данных с нуля. Поскольку все наборы данных разные, в этом есть смысл. Однако существует волшебный пакет pandas_profiling, который делает эти рассуждения бессмысленными. Пакет фактически автоматизирует этапы изучения данных и оценки их качества! Взгляните:

Нажмите «Предупреждения», чтобы оценить качество ваших данных.
Нажмите «Предупреждения», чтобы оценить качество ваших данных.
Анализ корреляции Pandas Profiling. Можно выбрать между 5–6 мерами корреляции.
Анализ корреляции Pandas Profiling. Можно выбрать между 5–6 мерами корреляции.

Это работает как по волшебству!

Очевидно, что это не решает все исследования данных, например, если у вас есть свободные текстовые переменные в ваших данных. Но это должно быть способом, которым вы начинаете анализировать любой набор данных.

  1. Множественная цепочка

Работать с Pandas становится по-настоящему интересно, когда вы понимаете, что можете комбинировать несколько операций с помощью метода цепочек. Цепочки — это, по сути, добавление операций в одну «строку» кода.

  • добавление нового столбца в мой набор данных (.merge)

  • подсчет доли пассажиров женского пола (.apply(female_proportion))

  • для групп, состоящих более чем из 1 пассажира (df.Ticket.value_counts()>1)

  • имея тот же номер билета (.groupby(‘Билет’)).

И мне не пришлось создавать новые фреймы данных, новые переменные, ничего нового. Метод цепочек позволяет «преобразовывать» ваши мысли в реальные операции.

  1. Построение графиков коэффициентов / важности объектов в стиле

Если вы занимаетесь машинным обучением, то знаете, как сложно объяснить свою модель машинного обучения простыми словами. Один из способов помочь в этом — наглядно представить коэффициенты или важность переменных в вашей модели.

Вы можете взять коэффициенты (или значения важности переменных) и поместить их в фрейм данных, чтобы визуализировать их.
Вы можете взять коэффициенты (или значения важности переменных) и поместить их в фрейм данных, чтобы визуализировать их.

Я собрал код из нескольких источников, чтобы получить следующую визуализацию, которую я постоянно использую (и не изобретаю велосипед):

Который дает следующий результат:

Переменные ранжируются в соответствии с коэффициентом (или важностью переменной), а цветная полоса позволяет нам быстро определить наиболее важные переменные. Здесь столбец «Pclass» имеет самый большой (отрицательный) коэффициент, который в два раза больше второго по величине коэффициента по абсолютному значению: «Embarked_Q».
Переменные ранжируются в соответствии с коэффициентом (или важностью переменной), а цветная полоса позволяет нам быстро определить наиболее важные переменные. Здесь столбец «Pclass» имеет самый большой (отрицательный) коэффициент, который в два раза больше второго по величине коэффициента по абсолютному значению: «Embarked_Q».

Довольно аккуратно, не правда ли?

  1. sklearn_pandas

Если вы сторонник pandas, то наверняка не раз задумывались о том, что работа с pandas DataFrame и sklearn не всегда является оптимальным решением. Но не останавливайтесь на этом. Несколько заинтересованных разработчиков создали sklearn_pandas — связующее звено между двумя пакетами. Он заменяет ColumnTransformer из sklearn на DataFrameMapper, дружественный к pandas. В последнее время я использую только sklearn_pandas и не разочарован. Жаль, что я не знал об этом раньше.

Вот пример вывода после использования метода .fit():

  1. tqdm

При работе с большими наборами данных обработка данных займёт некоторое время. Вместо того чтобы сидеть с унылым видом перед ноутбуком Jupyter Notebook и не знать, что происходит, используйте tqdm, чтобы отслеживать, выполняется ли ваш код и сколько времени это занимает. Это также хороший способ досрочно завершить работу скрипта, который выполняется слишком медленно.

Теперь у всех фреймов данных pandas появились новые методы:

  • .progress_apply, .progress_applymap

  • .progress_map для столбцов

Они работают так же, как apply, applymap и map, с той разницей, что они отображают индикатор выполнения. Как удобно!

Пример индикатора выполнения, созданного методом tqdm pandas.
Пример индикатора выполнения, созданного методом tqdm pandas.
  1. the.to_clipboard() для вставки в Excel

Будучи активным пользователем Excel, я научился создавать красивые графики и форматировать их, чтобы наглядно отображать данные. Несмотря на то, что в pandas есть множество опций, бывает сложно добиться такого же уровня результатов с минимальным количеством кода.

В конечном итоге я многое сделал, чтобы справиться с этим - экспортировал свои результаты в Excel. Но не используя метод .to_excel . Вместо этого я использую smoother .to_clipboard(index=False), который копирует данные в буфер обмена. Затем я использую Ctrl + V в Excel, чтобы вставить данные в мою текущую электронную таблицу. И вот, пожалуйста, вы можете выпустить на волю зверя Excel, который сидит внутри вас.

Одна вещь, о которой многие специалисты по обработке данных склонны забывать — это то, что специалисты, не работающие с данными, как правило, хорошо разбираются в Excel. Им проще предоставить файл Excel, чем блокнот или блокнот, экспортированный в виде HTML-файла.

Данная статья переведена с английского с адаптациями в рамках курса Тренажер-практикум Python и SQL для ML и анализа данных

Спасибо, что читаете :)

Комментарии (4)


  1. ayteayoga
    15.11.2024 12:04

    Добавил в закладки, пробежал взглядом - много интересного, потом прочитаю, спасибо за статью


  1. Direvius
    15.11.2024 12:04

    Ну раз chaining, то вот так.

    female_proportion = (
        df
        .groupby("Ticket")[["Sex"]]
        .value_counts()
        .to_frame()
        .unstack()
        .fillna(0)["count"]
        .apply(lambda r: r["female"] / sum(r) if sum(r) > 1 else None, axis=1)
        .to_frame(name='proportion_female')
    )
    df2 = df.merge(
        female_proportion,
        how='left', on='Ticket'
    )
    


  1. vaaano
    15.11.2024 12:04

    А чем картинки лучше обычного блока кода?


  1. CrazyElf
    15.11.2024 12:04

    tqdm лучше импортировать универсально:

    from tqdm.auto import tqdm
    

    Он тогда сам разберётся - в ноутбук его импортируют или в простой скрипт. И выберет лучшую реализацию для данной среды.