Начните свою научную сессию с правильной ноги с помощью этих простых и эффективных трюков с Пандой!

Введение

Pandas для Python - это программа, не нуждающаяся в представлении. Если вы новичок в области науки о данных с Python или работаете в этой области в течение длительного периода времени, скорее всего, вы слышали о модуле Pandas Python. Библиотека широко используется в отрасли для манипулирования данными и является подходящим инструментом для любого начинающего специалиста по данным, который хочет работать с фреймами данных и Numpy. Многие специалисты по данным используют Pandas каждый день, и он широко считается важным инструментом для управления данными с помощью Python.

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

Условное маскирование

Одним из атрибутов, который, безусловно, ставит Pandas над конкурентами и самим типом словаря, является условное маскирование. Условное маскирование позволяет пользователю использовать простой условный оператор для фильтрации значений, не соответствующих его требованиям. Это невероятно удобно и на лиги выше того, что сейчас доступно в Julia или R. В то время как в Julia, например, нам нужно было бы использовать метод filter! () С условным условием для управления нашими данными, Pandas делает фильтрацию данных невероятно простой, используя так называемую условную маску.

Условная маска итеративно просматривает все данные во фрейме данных и сравнивает данные с предварительно заданным условием. Возврат будет отфильтрованным фреймом данных, который будет соответствовать условию, заданному в маске.

import pandas as pd
df = pd.DataFrame({"NA": [0,1,0,1,0,1], "Label": ["TN", "GA", "TN", "MN", "CA","CA"]})

ones_only = df["NA"] == 1

Раскраска

Иногда данные могут быть трудночитаемыми. Это может не иметь большого значения для специалиста по данным, но часто данные необходимо представить и сделать их более разборчивыми. Pandas позволяет довольно легко изменить цвет различных значений внутри фрейма данных. Рассмотрим пример, в котором мы хотим показать, какие значения ниже определенного порога, а какие - ниже.

df = pd.DataFrame({"Store ID": [1,8,7,4,11,2], "Income": [-12, 56, -2, 23, 7, 16]})

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

def negatives(input):
color = 'red' if input < 0 else 'black'
return 'color: %s' % color

Это так называемая карта стилей. Карта стилей - это функция, используемая Pandas для определения того, как должен быть представлен фрейм данных. Мы можем применить карту стилей с df.style.applymap().

df.style.applymap(negatives)

Обратите внимание, что стиль нашего фрейма данных действительно изменился. Фреймы данных Pandas используют каскадные таблицы стилей для стилизации, поэтому на самом деле их невероятно легко изменить. Новую таблицу стилей можно применить с помощью df.style.set_table_styles.

Обобщения и перекрестные таблицы

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

df = pd.DataFrame({"Group A": [7,9,11,12,16], "Group B": [12,14, 3, 7, 2]})

df['total']     = df.apply(lambda x: x.sum(), axis=1)

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

cross = pd.crosstab(index = df["Group A"], columns = df["Group B"])

Конфигурация

Еще одна интересная особенность Pandas заключается в том, что она легко настраивается и динамична. Pandas позволяет создавать во время выполнения своего рода «конфигурационный файл», который можно использовать для изменения переменных среды, чтобы определить, как он действует. Это может быть полезно во многих различных ситуациях. Рассмотрим эту конфигурацию дисплея, например:

def load_config():
options = {
'display': {
'max_columns': None,
'max_colwidth': 25,
'expand_frame_repr': False,
'max_rows': 14,
'max_seq_items': 50,
'precision': 4,
'show_dimensions': False
},
'mode': {
'chained_assignment': None
}
}
for category, option in options.items():
for op, value in option.items():
pd.set_option(f'{category}.{op}', value)

Конечно, это делается с помощью метода set_option, который принимает в качестве параметров имя категории и соответствующее значение.

Аксессоры

Одна замечательная вещь, которую может предложить тип Series, - это возможность использовать аксессоры. В последней версии Pandas есть четыре типа аксессуаров.

  • str соответствует StringMethods.
  • .dt соответствует CombinedDatetimelikeProperties.
  • .cat направляется к CategoricalAccessor.

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

locations = pd.Series([
'Cleveland, TN 37311',
'Brooklyn, NY 11211-1755',
'East Moline, IL 61275',
'Pittsburgh, PA 15211'
])

Допустим, для этого примера мы хотели подсчитать, сколько чисел находится в каждом почтовом индексе. Мы могли бы сделать это с помощью метода доступа к строке следующим образом:

locations.str.count(r'\d')

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

Вывод

Pandas - отличная библиотека для обработки данных в Python, которая имеет множество действительно полезных функций, которые делают манипуляции с данными намного проще, чем это было бы в противном случае. От простых вещей, таких как классы доступа и условные маски, до простых стилей и полностью динамических наборов параметров, Pandas - очень динамичная библиотека, которую можно использовать для загрузки различных операций. Это, конечно, усложняет конкуренцию Pandas. Трудно оправдать использование любого другого программного обеспечения в современной аналитике, потому что Pandas просто оптимален!