Pandas — это основная библиотека для работы с данными. Вот несколько приёмов, которые я использую, чтобы быстрее и проще выполнять повторяющиеся задачи по работе с данными.
Данная статья переведена с английского с адаптациями в рамках курса Тренажер-практикум Python и SQL для ML и анализа данных
Анализ выборок фреймов данных с помощью df.groupby().__iter__()
Обычно в блокноте Jupyter сложно изучать набор данных построчно или по группам, в отличие от того, что можно сделать в Excel. Один из полезных приёмов — использовать генератор и Ctrl + Enter вместо Shift + Enter, чтобы итеративно просматривать разные выборки в одной ячейке, не создавая беспорядка в блокноте.
Сначала создайте ячейку с генератором с помощью .groupby() (или .iterrows()) и добавьте .__iter__():
Затем запустите следующую ячейку столько раз, сколько захотите, чтобы увидеть наиболее важные для вас данные, используя сочетание клавиш Ctrl + Enter:
Вот пример анализа пассажиров «Титаника», у которых был один и тот же номер билета. У вас нет возможности изолировать каждую группу пассажиров по отдельности, поэтому этот метод позволяет очень просто анализировать одну группу за другой:
Pandas Profiling для исследования данных и оценки качества данных
Как это часто бывает в науке о данных, мы склонны писать код для изучения данных с нуля. Поскольку все наборы данных разные, в этом есть смысл. Однако существует волшебный пакет pandas_profiling, который делает эти рассуждения бессмысленными. Пакет фактически автоматизирует этапы изучения данных и оценки их качества! Взгляните:
Это работает как по волшебству!
Очевидно, что это не решает все исследования данных, например, если у вас есть свободные текстовые переменные в ваших данных. Но это должно быть способом, которым вы начинаете анализировать любой набор данных.
Множественная цепочка
Работать с Pandas становится по-настоящему интересно, когда вы понимаете, что можете комбинировать несколько операций с помощью метода цепочек. Цепочки — это, по сути, добавление операций в одну «строку» кода.
добавление нового столбца в мой набор данных (.merge)
подсчет доли пассажиров женского пола (.apply(female_proportion))
для групп, состоящих более чем из 1 пассажира (df.Ticket.value_counts()>1)
имея тот же номер билета (.groupby(‘Билет’)).
И мне не пришлось создавать новые фреймы данных, новые переменные, ничего нового. Метод цепочек позволяет «преобразовывать» ваши мысли в реальные операции.
Построение графиков коэффициентов / важности объектов в стиле
Если вы занимаетесь машинным обучением, то знаете, как сложно объяснить свою модель машинного обучения простыми словами. Один из способов помочь в этом — наглядно представить коэффициенты или важность переменных в вашей модели.
Я собрал код из нескольких источников, чтобы получить следующую визуализацию, которую я постоянно использую (и не изобретаю велосипед):
Который дает следующий результат:
Довольно аккуратно, не правда ли?
sklearn_pandas
Если вы сторонник pandas, то наверняка не раз задумывались о том, что работа с pandas DataFrame и sklearn не всегда является оптимальным решением. Но не останавливайтесь на этом. Несколько заинтересованных разработчиков создали sklearn_pandas — связующее звено между двумя пакетами. Он заменяет ColumnTransformer из sklearn на DataFrameMapper, дружественный к pandas. В последнее время я использую только sklearn_pandas и не разочарован. Жаль, что я не знал об этом раньше.
Вот пример вывода после использования метода .fit():
tqdm
При работе с большими наборами данных обработка данных займёт некоторое время. Вместо того чтобы сидеть с унылым видом перед ноутбуком Jupyter Notebook и не знать, что происходит, используйте tqdm, чтобы отслеживать, выполняется ли ваш код и сколько времени это занимает. Это также хороший способ досрочно завершить работу скрипта, который выполняется слишком медленно.
Теперь у всех фреймов данных pandas появились новые методы:
.progress_apply, .progress_applymap
.progress_map для столбцов
Они работают так же, как apply, applymap и map, с той разницей, что они отображают индикатор выполнения. Как удобно!
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)
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' )
CrazyElf
15.11.2024 12:04tqdm лучше импортировать универсально:
from tqdm.auto import tqdm
Он тогда сам разберётся - в ноутбук его импортируют или в простой скрипт. И выберет лучшую реализацию для данной среды.
ayteayoga
Добавил в закладки, пробежал взглядом - много интересного, потом прочитаю, спасибо за статью