Супер цепи для панд побеждают!
Мои любимые цепочки методов Pandas
Цепочки методов, которые я использую (и использую повторно), потому что они полезны и поэтичны, программно
Вступление
Когда я начал писать эту статью, я изначально намеревался поделиться несколькими общими цепочками методов, которые я использую сам. Я не вижу, чтобы их использовали другие. И я догадывался, что они могут быть полезны другим.
Ближе к концу разработки я понял, что это превратилось в своего рода оду Пандам. Вы когда-нибудь замечали стихи в коде?
Ниже приведены три (с половиной) цепочки методов, без которых я не мог бы жить. Надеюсь, они вам тоже пригодятся.
Прежде чем начать, не забудьте import pandas as pd
как обычно.
Повернуть Pandas Describe Output
При выводе по умолчанию в Pandas describe()
столбцы фрейма данных помещаются вверху, а статистика - по бокам и по строкам. Например:
# For the convenience of copy-paste: df = pd.read_stata('http://www.stata-press.com/data/r15/auto2.dta')
Мой разум просто так не работает! Другая проблема заключается в том, что для более широких наборов (много столбцов) вывод не умещается в пространстве дисплея. Следующая цепочка методов позволяет легко исправить:
df.describe().transpose()
Ну вот:
Так намного легче читать. Кроме того, у вас не закончится горизонтальное пространство экрана при отображении (и чтении) вывода.
Делаем ценность считающейся немного более читаемой
Вы ненавидите, когда метод df['col_name'].value_counts()
производит вывод, который не сортируется по столбцу ключа / индекса? Например.
Почему Отлично указано посередине? И почему Среднее вверху? Это не имеет никакого смысла. Следующая цепочка методов позволяет легко исправить:
df['col_name'].value_counts().sort_index()
Ну вот:
Проверка на отсутствие данных
Все лучшие учебники предлагают df.isnull().sum()
как полезный способ проверки отсутствующих данных. И это работает. Но давайте посмотрим на чуть менее интуитивный df.isnull().mean()
. Что произойдет, если вы найдете среднее значение двоичного файла? Вы получаете среднюю истину. Таким образом, вместо того, чтобы видеть количество пропущенных в каждом столбце, вы видите долю пропущенных в каждом столбце. Например:
Давайте сделаем еще один шаг вперед. Сделаем вывод еще более явным. Это делает следующая цепочка методов (и лямбда-функция).
df.isnull().mean().apply(lambda x : '{:.2f}% Missing'.format(x * 100))
Эта цепочка дает:
Заключение
В этой импровизированной оде Pandas я поделился тремя (с половиной) цепочками методов, без которых я не мог жить. Эти цепочки методов представляют собой элегантные однострочники, которые упрощают вашу работу, а вывод - более читабельным. Они помогают вам выполнять свою работу.
Сообщите мне, что я мог пропустить? Оставляйте комментарии со своими мыслями и идеями по улучшению.
Еще одна вещь, которую я хотел сделать проще, когда смотрел наружу: перемещение столбцов панд. Переходя к другим инструментам, я всегда удивлялся тому, насколько это было сложно. Еще по теме:
Спасибо за прочтение
Спасибо за прочтение. Присылайте мне свои мысли и идеи. Вы можете написать, просто чтобы поздороваться. Я с нетерпением жду встречи в ближайшее время. Twitter: @adamrossnelson LinkedIn: Адам Росс Нельсон в Twitter и Facebook: Адам Росс Нельсон в Facebook.