Полный инструмент для исследования данных

Altair - это библиотека визуализации статистических данных для Python. Он обеспечивает простой и понятный синтаксис для создания как статических, так и интерактивных визуализаций.

Что мне больше всего нравится в Altair, так это функции преобразования и фильтрации данных. Он предоставляет гибкие и универсальные методы преобразования и фильтрации данных при создании визуализации данных.

В этом смысле Altair также можно рассматривать как инструмент анализа данных. Мы рассмотрим 3 примера, которые демонстрируют, как Altair ускоряет процесс исследовательского анализа данных.

В качестве примеров мы будем использовать небольшую выборку из набора данных жилья в Мельбурне, доступного на Kaggle. Сначала мы импортируем библиотеки и читаем набор данных.

import numpy as np
import pandas as pd
import altair as alt
cols = ['Type','Price','Distance','Date','Landsize','Regionname']
melb = pd.read_csv(
   "/content/melb_data.csv", usecols = cols, parse_dates = ['Date']
).sample(n=1000).reset_index(drop=True)
melb.head()

Пример 1

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

Однако с Альтаиром мы можем делать все сразу.

alt.Chart(melb).mark_bar().encode(
   x = 'Regionname', y = 'avg_price:Q'
).transform_aggregate(
   avg_price = 'mean(Price)', groupby = ['Regionname']
).properties(
   height = 300, width = 500
)

Синтаксис начинается с объекта Chart верхнего уровня, за которым следует тип графика. Функция кодирования используется для указания того, что отображать в кадре данных, переданном в объект Chart.

Как вы могли заметить, кодировка y не является столбцом во фрейме данных. Это агрегированный столбец, который вычисляется на следующем шаге с помощью функции transform_aggregate. Буква «Q» в кодировке y означает количественный.

Функция свойств используется для настройки свойств визуализации. Вот график, созданный приведенным выше кодом.

Пример 2

В столбце расстояния указано расстояние от дома до центрального делового района. Допустим, мы хотим создать участок из предыдущих примеров для домов, находящихся на расстоянии более 3 миль.

Мы можем легко решить эту задачу, реализовав в нашем коде функцию transform_filter.

alt.Chart(
  melb, height=300, width=500
).mark_bar().encode(
  x = 'Regionname', y = 'avg_price:Q'
).transform_filter(
  alt.FieldGTPredicate(field='Distance', gt=3)
).transform_aggregate(
  avg_price = 'mean(Price)',groupby = ['Regionname']
)

FieldGTPredicate обрабатывает условия «больше». Altair также предоставляет предикаты для других условий, таких как «равно», «меньше», «диапазон» и т. Д.

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

Вот гистограмма отфильтрованных значений.

Пример 3

В этом примере используется операция поиска, аналогичная функции слияния Pandas.

Предположим, у нас есть еще один фрейм данных, который содержит некоторую информацию о владельце этих домов.

melb['OwnerId'] = np.arange(1,1001)
df = pd.DataFrame({
  'OwnerId': melb['OwnerId'],
  'Age': np.random.randint(20, 40, size=1000),
  'Salary': np.random.randint(5000, 10000, size=1000)
})
df.head()

Мы добавили столбец id в исходный фрейм данных и создали новый, который содержит информацию об идентификаторах, возрасте и зарплате клиентов.

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

Другой вариант - использовать преобразование поиска Альтаира следующим образом:

alt.Chart(
  df, height=300, width=500
).mark_bar().encode(
  x = 'mean(Salary):Q', y = 'Type:O'
).transform_lookup(
  lookup='OwnerId',
  from_=alt.LookupData(data=melb, key='OwnerId', fields=['Type'])
)

Параметр поиска относится к столбцу, который будет использоваться для слияния. Вот сгенерированный сюжет:

Заключение

Мы сделали 3 примера, демонстрирующих возможности преобразования и фильтрации Altair. Что касается этих операций, Альтаир также служит инструментом анализа и обработки данных.

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

Мы сделали только примеры гистограмм, но функции трансформации можно соответствующим образом распространить на любой другой график.

Спасибо за чтение. Пожалуйста, дайте мне знать, если у вас есть отзывы.