Визуализация данных python: Шпаргалка по визуализации данных в Python с помощью Plotly / Хабр
Шпаргалка по визуализации данных в Python с помощью Plotly / Хабр
Plotly — библиотека для визуализации данных, состоящая из нескольких частей:
- Front-End на JS
- Back-End на Python (за основу взята библиотека Seaborn)
- Back-End на R
В этой простыне все примеры разобраны от совсем простых к более сложным, так что разработчикам с опытом будет скучно. Так же эта «шпаргалка» не заменит на 100% примеры из документации.
Извиняюсь за замыленные gif’ки это происходит при конвертации из видео, записанного с экрана.
Jupyter Notebook со всеми примерами из статьи:
Документация
Так же на базе plotly и веб-сервера Flask существует специальная библиотека для создания дашбордов Dash.
- Plotly — бесплатная библиотека, которую вы можете использовать в коммерческих целях
- Plotly работает offline
- Plotly позволяет строить интерактивные визуализации
Т. е. с помощью Plotly можно как изучать какие-то данные «на лету» (не перестраивая график в matplotlib, изменяя масштаб, включая/выключая какие-то данные), так и построить полноценный интерактивный отчёт (дашборд).
Для начала необходимо установить библиотеку, т.к. она не входит ни в стандартный пакет, ни в Anaconda. Для этого рекомендуется использовать pip:
pip install plotly
Если вы используете Jupyter Notebook, то можно использовать мэджик «!», поставив данный символ перед командой:
!pip install plotly
Перед началом работы необходимо импортировать модуль. В разных частях шпаргалки для разных задач нам понадобятся как основной модуль, так и один из его подмодулей, поэтому полный набор инструкций импорта у нас.
Так же нам понадобятся библиотеки Pandas и Numpy для работы с сырыми данными
Код импорта функций
import plotly
import plotly.graph_objs as go
import plotly. express as px
from plotly.subplots import make_subplots
import numpy as np
import pandas as pd
Линейный график
Начнём с простой задачи построения графика по точкам.
Используем функцию f(x)=x2
Сперва поступим совсем просто и «в лоб»:
- Создадим график с помощью функции scatter из подмодуля plotly.express (внутрь передадим 2 списка точек: координаты X и Y)
- Тут же «покажем» его с помозью метода show()
Обратите внимание — график интерактивный, если навести на него курсор, то можно его приближать и удалять, выделять участки, по наведению курсора на точку получать подробную информацию, возвращать картинку в исходное положение, а при необходимости «скриншотить» и сохранять как файл.
Всё это делается с помощью JS в вашем браузере. А значит, при желании вы можете этим управлять уже после построения фигуры (но мы этого делать пожалуй не будем, т.к. JS != Python)
Код
x = np. arange(0, 5, 0.1)
def f(x):
return x**2
px.scatter(x=x, y=f(x)).show()
Более читабельно и правильно записать тот же в код в следующем виде:
fig = px.scatter(x=x, y=f(x))
fig.show()
- Создаём фигуру
- Рисуем график
- Показываем фигуру
2 строчки и готовый результат. Т.к. мы используем Express. Быстро и просто.
Но маловато гибкости, поэтому мы практически сразу переходим к более продвинутому уровню — сразу создадим фигуру и нанесём на неё объекты.
Так же сразу выведем фигуру для показа с помощью метода show().
В отличие от Matplotlib отдельные объекты осей не создаются, хотя мы с ними ещё столкнёмся, когда захотим построить несколько графиков вместе
fig = go.Figure()
#Здесь будет код
fig.show()
Как видим, пока пусто.
Чтобы добавить что на график нам понадобится метод фигуры add_trace.
fig. add_trace(ТУТ_ТО_ЧТО_ХОТИМ_ПЕРЕДАТЬ_ДЛЯ_ОТОБРАЖЕНИЯ_И_ГДЕ)
Но ЧТО мы хотим нарисовать? График по точкам. График мы уже рисовали с помощью Scatter в Экспрессе, у Объектов есть свой Scatter, давайте глянем что он делает:
go.Scatter(x=x, y=f(x))
А теперь объединим:
fig = go.Figure()
fig.add_trace(go.Scatter(x=x, y=f(x)))
fig.show()
Как видим, отличия не только в коде, но и в результате — получилась гладкая кривая.
Кроме того, такой способ позволит нам нанести на график столько кривых, сколько мы хотим:
Код
fig = go.Figure()
fig.add_trace(go.Scatter(x=x, y=f(x)))
fig.add_trace(go.Scatter(x=x, y=x))
fig.show()
Погодите, что это такое? Справа появилась ещё и легенда!
Впрочем, логично, пока график был один, зачем нам легенда?
Но магия Plotly тут не заканчивается. Нажмите на любую из подписей в легенде и соответствующий график исчезнет, а надпись станет более бледной. 2$$’))
fig.add_trace(go.Scatter(x=x, y=x, name=’$$g(x)=x$$’))
fig.show()
К сожалению, это имеет свои ограничения, как можно заметить подсказка при наведении на график отображается в «сыром» виде, а не в LATEX.
Победить это можно, если использовать HTML разметку в подписях. В данном примере я буду использовать тег sup. Так же заметьте, что шрифт для LATEX и HTML отличается начертанием.
Код
fig = go.Figure()
fig.add_trace(go.Scatter(x=x, y=f(x), name='f(x)=x<sup>2</sup>'))
fig.add_trace(go.Scatter(x=x, y=x, name='$$g(x)=x$$'))
fig.show()
Обзор пакетов для визуализации данных на Python
Есть много способов построения графиков на Python, но какой из них лучше? Когда вы делаете визуализацию, важно задать несколько вопросов о цели построения графика: пытаетесь ли вы создать первичное представление ваших данных для дальнейшего анализа, или пытаетесь произвести впечатление на презентации?
В этой статье я расскажу о нескольких популярных пакетах визуализации Python, их плюсах и минусах, а также ситуациях, в которых каждый может выгодно проявить себя. Я включу в этот обзор обсуждение только двумерных графиков, хотя многие из этих пакетов также хорошо поддерживают 3D.
Перевод статьи «Reviewing Python Visualization Packages», автор — Aaron Frederick, ссылка на оригинал — в подвале статьи.
Matplotlib, Seaborn и Pandas
Я собираюсь включить их в одну группу по нескольким причинам. Во-первых, из-за того, что графики Seaborn и Pandas были построены на основе Matplotlib — когда вы используете Seaborn или df.plot() в Pandas, вы фактически используете код, который использует для построения Matplotlib. Таким образом, эстетика для них схожа, и настройка ваших графиков будет выглядеть очень похожим образом.
Когда я думаю об этих инструментах визуализации, я думаю о трех словах: исследовательский анализ данных. Эти пакеты отлично подходят для первого взгляда на ваши данные, но их не хватает, когда дело доходит до презентации. Matplotlib — это низкоуровневая библиотека, которая обеспечивает невероятные уровни настройки (так что не стоит исключать ее как вариант для презентации!), Но есть много других инструментов, которые делают великолепную графику, достойную презентации, намного проще. Matplotlib также имеет набор стилей, которые по внешнему стилю имитируют другие популярные пакеты, такие как ggplot2 и xkcd. Ниже приведены некоторые примеры графиков, созданных с использованием Matplotlib и его двоюродных братьев.
При работе с датасетом, содержащим данные о зарплате в баскетболе, я хотел найти команды, которые имели самые высокие данные о средней зарплате. Чтобы показать это, я вывел цветовую гистограмму с зарплатой каждой команды ниже, чтобы показать, к каким командам следует обращаться, чтобы быть в команде, которая хорошо платит.
import seaborn as sns import matplotlib.pyplot as plt color_order = ['xkcd:cerulean', 'xkcd:ocean', 'xkcd:black','xkcd:royal purple', 'xkcd:royal purple', 'xkcd:navy blue', 'xkcd:powder blue', 'xkcd:light maroon', 'xkcd:lightish blue','xkcd:navy'] sns.barplot(x=top10.Team, y=top10.Salary,
Простая гистограмма в matplotlib
Этот второй график представляет собой график Q-Q остатков регрессионного эксперимента. Основная цель этой визуализации — показать, сколько строк необходимо для создания полезной визуализации, даже если эстетика не сногсшибательна.
import matplotlib.pyplot as plt import scipy.stats as stats #model2 is a regression model log_resid = model2.predict(X_test)-y_test stats.probplot(log_resid, dist="norm", plot=plt) plt.title("Normal Q-Q plot") plt.show()
В конечном счете, Matplotlib и его родственники очень эффективны, но, как правило, не являются конечным продуктом в плане презентации.
ggplot (2)
«Почему ты говоришь о ggplot, самом популярном пакете визуализации R? Разве это не обзор пакетов для Python? »- спросите вы. Люди реализовали ggplot2 в Python, копируя все от эстетики до синтаксиса. Он выглядит и ощущается как ggplot2, но с дополнительным бонусом наличия зависимости от уже устаревшей версии пакета Pandas. Если вы хотите использовать НАСТОЯЩИЙ ggplot в R (который имеет такой же синтаксис и внешний вид, но без зависимостей), я расскажу о некоторых его преимуществах здесь! Тем не менее, если вы действительно хотите использовать ggplot в Python, вы должны установить Pandas версии 0. 19.2, но я бы предостерег вас от понижения версии вашего Pandas.
В чем ggplot2 (и, я думаю, ggplot для Python) меняет правила игры, так это то, что он использует «Грамматику графики» для построения фигуры. Основная предпосылка заключается в том, что вы можете создать экземпляр своего графика, а затем отдельно добавить к нему различные функции, т.е. Заголовок, оси, точки данных и линия тренда добавляются по отдельности со своими собственными эстетическими свойствами. Ниже приведен простой пример кода ggplot на R. Сначала мы создаем наш рисунок с помощью ggplot, устанавливаем наше оформление и данные, затем добавляем точки, тему и метки оси/заголовка.
#All Salaries ggplot(data=df, aes(x=season_start, y=salary, colour=team)) + geom_point() + theme(legend.position="none") + labs(title = 'Salary Over Time', x='Year', y='Salary ($)')
Bokeh
Bokeh это красиво. Концептуально похож на ggplot в том,что он тоже использует грамматику графики для структурирования своих фигур. Bokeh имеет простой в использовании интерфейс, который создает очень профессиональные графики и информационные панели. Чтобы проиллюстрировать мою точку зрения (извините!), Ниже приведен пример кода для создания гистограммы из набора данных 538 Masculinity Survey.
import pandas as pd from bokeh.plotting import figure from bokeh.io import show # is_masc is a one-hot encoded dataframe of responses to the question: # "Do you identify as masculine?" #Dataframe Prep counts = is_masc.sum() resps = is_masc.columns #Bokeh p2 = figure(title='Do You View Yourself As Masculine?', x_axis_label='Response', y_axis_label='Count', x_range=list(resps)) p2.vbar(x=resps, top=counts, width=0.6, fill_color='red', line_color='black') show(p2) #Pandas counts.plot(kind='bar')
Гистограмма в Bokeh
Гистограмма показывает ответы на вопрос «Вы идентифицируете себя как мужского пола?», как было задано в недавнем опросе (538 Masculinity Survey). Код Bokeh создает элегантную и профессиональную гистограмму подсчета ответов с разумным размером шрифта, засечками по осям и форматированием. Большая часть кода, который я написал, была посвящена маркировке осей и заголовков, а также приданию столбцам цвета и границы. Делая красивые, презентабельные фигуры, я очень сильно склоняюсь к Bokeh — много эстетической работы уже сделано для нас!
Та же гистограмма по умолчанию в Pandas
Синий график — это то, что происходит из единственной последней строки из кода выше. Обе гистограммы имеют одинаковые значения, но служат разным целям. В исследовательской обстановке гораздо удобнее написать одну строку в Pandas, чтобы увидеть данные, но эстетика Bokeh явно явно лучше. Каждое удобство, которое обеспечивает Bokeh по умолчанию, требует настройки в matplotlib, будь то угол наложения меток вдоль горизонтальной оси, фоновые линии, разброс делений по вертикальной оси, изменение размера шрифта/выделение курсивом/выделение жирным и т.д.
На приведенном ниже графике показано несколько случайных трендов с использованием нескольких дополнительных настроек с легендами и различными типами линий и цветами:
Тренды с легендой в Bokeh
Bokeh также отличный инструмент для создания интерактивных графиков (dashboards). Я не хочу вдаваться в интерактивные графики в этом посте, но есть отличные посты (вроде этого), которые больше рассказывают о применении и реализации интерактивных графиков в Bokeh.
Plotly
Plotly чрезвычайно мощный, но настройка и создание графиков в нем занимают много времени, и эта настройка не является интуитивно понятной. Проведя большую часть утра, работая с Plotly, я пошел на обед, почти ничего не показав в результате. Я создал гистограмму без меток на осях и диаграмму рассеяния, в которой были линии, которые я не мог удалить. Некоторые заметные минусы при начале работы с Plotly:
- Требуется ключ API и регистрация, а не просто установка через pip
- Он строит графики данных/слоев (layouts), которые являются уникальными для Plotly и не являются интуитивно понятными
- Слой на графике у меня не сработал (40 строк кода буквально ничего!)
Однако для всех его недостатков настройки есть свои плюсы и обходные пути:
- Вы можете редактировать графики на веб-сайте Plotly, а также в среде Python.
- Много функционала поддержки интерактивных графиков/панелей
- Plotly сотрудничает с Mapbox, что позволяет создавать индивидуальные карты
- Потрясающий потенциал для отличной графики
Для меня было бы несправедливо просто высказать свои претензии к Plotly, не показывая какой-то код и то, что я смог достичь по сравнению с тем, что сделали люди, более способные с этим пакетом.
#plot 1 - barplot # **note** - the layout lines do nothing and trip no errors data = [go.Bar(x=team_ave_df.team, y=team_ave_df.turnovers_per_mp)] layout = go.Layout( title=go.layout.Title( text='Turnovers per Minute by Team', xref='paper', x=0 ), xaxis=go.layout.XAxis( title = go.layout.xaxis.Title( text='Team', font=dict( family='Courier New, monospace', size=18, color='#7f7f7f' ) ) ), yaxis=go.layout.YAxis( title = go.layout.yaxis.Title( text='Average Turnovers/Minute', font=dict( family='Courier New, monospace', size=18, color='#7f7f7f' ) ) ), autosize=True, hovermode='closest') py. iplot(figure_or_data=data, layout=layout, filename='jupyter-plot', sharing='public', fileopt='overwrite') #plot 2 - attempt at a scatterplot data = [go.Scatter(x=player_year.minutes_played, y=player_year.salary, marker=go.scatter.Marker(color='red', size=3))] layout = go.Layout(title="test", xaxis=dict(title='why'), yaxis=dict(title='plotly')) py.iplot(figure_or_data=data, layout=layout, filename='jupyter-plot2', sharing='public')
Гистограмма, представляющая среднее количество оборотов в минуту у различных баскетбольных командПопытка создания диаграммы рассеяния, представляющей зарплату как функцию от времени игры в баскетбол
В целом, эстетика из коробки выглядит хорошо, но многочисленные попытки исправить метки осей, дословно копирующие документацию, не дали никаких изменений. Однако, как я и обещал ранее, вот несколько графиков, на которых показан потенциал Plotly и почему стоит потратить больше нескольких часов:
Потенциал графиков в Plotly
Pygal
Pygal — немного менее известный пакет для визуализаций, который, как и другие популярные пакеты, использует грамматику графики для построения своих изображений. Это относительно простой пакет из-за того, что все объекты на графике очень примитивные. Использование Pygal очень простое:
- Инициализация холста
- Форматирование объектов рисунка с использованием атрибутов
- Добавление данных к своей фигуре, используя figure.add()
Основные проблемы, которые у меня были с Pygal, заключались в рендере графиков. Мне пришлось использовать их метод render_to_file, а затем открыть этот файл в веб-браузере, чтобы увидеть, что я построил. В конечном итоге это того стоило, поскольку графики интерактивны и имеют приятную и легко настраиваемую эстетику. В целом, пакет кажется хорошим, но имеет некоторые особенности создания/рендера файлов, которые ограничивают его привлекательность.
Networkx
Networkx — отличное решение для анализа и визуализации графов, хотя визуально оно основано на matplotlib. Графы и сети — это не моя предметная область, но Networkx позволяет быстро и легко графически представлять подключенные сети. Ниже приведены несколько различных представлений простого графа, который я построил, и код, начинающий строить небольшую
Лучшие инструменты Python ETL — Python 3 | Data Science | Нейронные сети | AI
Содержание страницы
Введение в ETL
ETL является сердцем любого проекта хранилища данных. Любой успешный проект данных будет включать в себя прием и/или извлечение большого количества данных (транзакций), некоторые из которых не будут должным образом отформатированы для своего конечного использования. К счастью для профессионалов в области данных, сообщество разработчиков Python создало широкий спектр инструментов с открытым исходным кодом, которые делают ETL проще. В статье будет приведен обзор лучших инструментов Python ETL, которые помогут Вам собирать, очищать и загружать ваши данные в хранилище данных в преобразованном виде (в нужном формате). Некоторые из этих пакетов позволяют вам управлять каждым шагом процесса ETL, в то время как другие хороши на определенном этапе ETL процесса. В любом случае, вы обязательно найдете что-то полезное из статьи.
Apache Airflow
Apache Airflow (или просто Airflow) — это платформа для создания, планирования и мониторинга рабочих процессов.
Когда рабочие процессы определяются как код, они становятся более понятными, управляемыми, тестируемыми при совместной разработке.
Используйте Airflow для создания рабочих процессов в виде направленных ациклических графов (DAG) задач. Планировщик Airflow выполняет ваши задачи, следуя указанным зависимостям. Богатые утилиты командной строки делают выполнение сложных операций на DAG проще. Богатый пользовательский интерфейс позволяет легко визуализировать конвейеры, работающие на производстве, отслеживать прогресс и устранять проблемы при необходимости.
Apache Spark & PySpark
Spark — это универсальная и высокопроизводительная кластерная вычислительная платформа. Spark технически не является инструментом Python, но API PySpark позволяет легко обрабатывать задания Spark в вашем workflow для Python.
PySpark предназначен для создания конвейеров машинного обучения и создания ETL для платформы анализа данных. В PySpark встроены всевозможные инструменты для обработки и преобразования данных, и он предназначен для параллельного выполнения вычислений, поэтому даже большие задания могут выполняться очень быстро. Он прекрасно масштабируется для действительно больших операций с данными, а работа через API PySpark позволяет вам писать краткий, читабельный и совместный код для ваших заданий ETL. Рассмотрите PySpark, если вам важна скорость и объем данных в ваших расчетах.
Обзор Spark
Apache Spark — это молниеносная среда обработки в реальном времени. Он выполняет вычисления в памяти для анализа данных в режиме реального времени. Этот подход стал очевидным, поскольку Apache Hadoop MapReduce выполнял только пакетную обработку и не имел функций обработки в реальном времени. Поэтому был представлен Apache Spark, поскольку он может выполнять потоковую обработку в режиме реального времени, а также может выполнять пакетную обработку.
Помимо обработки в реальном времени и пакетной обработки, Apache Spark поддерживает интерактивные запросы и итерационные алгоритмы. Apache Spark имеет свой собственный менеджер кластеров, где он может разместить свое приложение. Он использует Apache Hadoop для хранения и обработки. Он использует HDFS (Hadoop Distributed File system — распределенную файловую систему Hadoop) для хранения и может также запускать приложения Spark на YARN.
PySpark — Обзор
Apache Spark написан на языке программирования Scala. Для поддержки Python с помощью Spark сообщество Apache Spark выпустило инструмент PySpark. Используя PySpark, вы также можете работать с RDD на языке программирования Python. Именно благодаря библиотеке под названием Py4j они могут достичь этого.
PySpark предлагает PySpark Shell, который связывает Python API с ядром Spark и инициализирует контекст Spark. Большинство исследователей данных и аналитиков сегодня используют Python из-за его богатого набора библиотек. Интеграция Python с Spark является необходимостью для них.
SparkContext — это точка входа в любую функциональность Spark. Когда мы запускаем любое приложение Spark, запускается программа драйвера, которая выполняет основную функцию, и здесь запускается ваш SparkContext. Затем программа драйвера запускает операции внутри исполнителей на рабочих узлах. SparkContext использует Py4J для запуска JVM и создает JavaSparkContext.
petl
petl — это универсальный пакет Python для извлечения, преобразования и загрузки таблиц данных.
petl — это пакет Python для ETL (отсюда и название ‘petl’). Как и в случае с Pandas, petl позволяет пользователю создавать таблицы в Python, извлекая их из различных источников данных (csv, xls, html, txt, json и т.д.). И записывая их в выбранную вами базу данных или формат хранения. У petl много тех же возможностей, что и у pandas, но он разработан для работы с ETL и не включает встроенных функций анализа, поэтому он может подойти Вам, если вы заинтересованы исключительно в ETL.
Этот пакет предназначен в первую очередь для удобства и простоты использования, особенно при интерактивной работе с незнакомыми, неоднородными и/или смешанными по качеству данными.
Преобразования petl минимально используют системную память и могут масштабироваться до миллионов строк, если скорость не является приоритетом. Однако, если вы работаете с очень большими наборами данных и/или приложениями, для которых критически важна производительность, то рассмотрите другие пакеты, например, см. Pandas, pytables, bcolz и blaze.
Panoply
Panoply спроектирован, как полнофункциональное решение для хранения данных. С помощью Panoply можно реализовать ETL очень просто. Panoply обрабатывает каждый шаг процесса, упрощая прием данных из любого источника данных (от CSV до Amazon S3-контейнеров и до Google Analytics).
https://panoply.io/docs/collect-data/python-sdk/ — Python SDK на основе SQS для потоковой передачи данных в реальном времени на платформе Panoply. Этот SDK включает в себя строительные блоки для создания ваших собственных источников данных.
Pandas
Если вы использовали Python для работы с данными, вы, вероятно, знакомы с pandas, инструментарием для обработки и анализа данных. Если нет, то вы должны разузнать о pandas. Эта библиотека позволяет добавлять в Python фреймы данных в стиле R, что делает манипулирование, очистку и анализ данных гораздо проще, чем в сыром Python. Как инструмент ETL, pandas может обрабатывать каждый шаг процесса, позволяя извлекать данные из большинства форматов хранения и быстро и легко манипулировать данными в памяти. Когда вы обработаете данные, Pandas с легкостью запишет Ваш DataFrame в CSV, Microsoft Excel или базу данных SQL.
Pandas Python For Data Science cheat sheet
Bubbles
Bubbles — это популярная среда Python ETL, которая позволяет легко создавать ETL-конвейеры. Bubbles написана на Python, но на самом деле разработана, чтобы быть независимой от технологий. Он настроен для работы с объектами данных — представлениями наборов данных, являющихся ETL, чтобы максимизировать гибкость в конвейере ETL пользователя. Если в вашем конвейере ETL много узлов с поведением, зависящим от формата, Bubbles могут стать вашим решением. Однако репозиторий github не развивался активно с 2015 года, поэтому некоторые функции могут быть устаревшими.
Bonobo (Бонобо)
Bonobo — это облегченная ETL-инфраструктура с кодом в виде конфигурации для Python. Он имеет инструменты для построения конвейеров данных, которые могут обрабатывать несколько источников данных параллельно, и имеет расширение SQLAlchemy (в настоящее время в альфа-версии), которое позволяет подключать ваш конвейер напрямую к базам данных SQL. Bonobo спроектирован так, чтобы его было легко запустить, содержит UNIX-подобную атомную структуру для каждого процесса преобразования (Каждое преобразование имеет определенную, уникальную, небольшую и ограниченную цель). Эта библиотека должна быть доступна для всех, кто имеет базовый уровень владения Python, а также включает в себя визуализатор графика процесса ETL, который позволяет легко отслеживать ваш процесс.
Bonobo — это облегченная среда Extract-Transform-Load (ETL) для Python 3.5+.
Он предоставляет инструменты для построения конвейеров преобразования данных, использования простых примитивов Python и их параллельного выполнения.
Bonobo — швейцарский армейский нож для повседневных данных.
Используйте встроенные экстракторы (CSV, JSON, XML, XLS, …), официальные дополнения (SQL).
Есть встроенные классы для преобразования данных.
Luigi Луиджи
Luigi — это пакет Python с открытым исходным кодом, разработанный Spotify. Он разработан, чтобы упростить управление длительными пакетными процессами, поэтому он может выполнять задачи, выходящие далеко за рамки ETL, но он также делает ETL довольно хорошо. Luigi поставляется с веб-интерфейсом, который позволяет пользователю визуализировать задачи и обрабатывать зависимости. Концептуально он похож на GNU Make, но не только для Hadoop (хотя и облегчает работу Hadoop). Luigi может стать вашим ETL-инструментом, если у вас есть большие и длительные задания по обработке данных, которые просто необходимо выполнить.
Odo — Одо
Odo — это пакет Python, который позволяет легко перемещать данные между различными типами контейнеров. После установки Odo предоставляет единственную функцию, которая может переносить данные между структурами в памяти (списки, пустые массивы, dataframes pandas и т.д.), Форматами хранения (CSV, JSON, HDF5 и т.д.) И удаленными базами данных, такими как Postgres и Hadoop. Odo сконфигурирован для использования собственных возможностей загрузки этих CSV-баз данных, которые значительно быстрее, чем подходы, использующие чистый Python. Один из тестов разработчиков показывает, что Pandas работает в 11 раз медленнее, чем самый медленный нативный загрузчик CSV-to-SQL. Если вы обнаружите, что загружаете много данных из CSV в базы данных SQL, Odo может стать для вас инструментом ETL.
etlalchemy
etlalchemy — это легкий пакет Python, который управляет миграцией баз данных SQL. Проект был задуман, когда разработчик понял, что большая часть данных его организации хранится в базе данных Oracle 9i, которая не поддерживается с 2010 года. Программа etlalchemy была разработана для упрощения и ускорения миграции между реляционными базами данных с различными диалектами. Тем не менее, предостережение: этот пакет не будет работать в Windows и имеет проблемы с загрузкой в MSSQL, что означает, что вы захотите посмотреть куда-нибудь еще, если ваш рабочий процесс включает в себя Windows и, например, Azure.
mETL
mETL — это инструмент Python ETL, который автоматически создает файл Yaml для извлечения данных из данного файла и загрузки в базу данных SQL. Может работать с широким спектром источников данных и целей, включая стандартные плоские файлы, Google Sheets и полный набор подключений SQL (включая Microsoft SQL Server). Недавние обновления предоставили некоторые твики для обхода замедлений, вызванных некоторыми драйверами Python SQL, поэтому этот пакет может быть вам полезен, если вы хотите, чтобы ваш процесс ETL был похож на Python, но быстрее.
Open Semantic ETL
Open Semantic ETL — это платформа Python с открытым исходным кодом для управления ETL, особенно из большого количества отдельных документов. Инфраструктура позволяет пользователю создавать конвейеры, которые могут сканировать целые каталоги файлов, анализировать их с помощью различных надстроек (в том числе, которые могут обрабатывать OCR для особенно сложных PDF-файлов) и загружать их в выбранную вами реляционную базу данных.
Mara
Mara — это библиотека Python, которая сочетает в себе облегченную среду ETL с хорошо разработанным веб-интерфейсом, который можно вставить в любое приложение Flask. Как и многие другие платформы, описанные здесь, Mara позволяет пользователю создавать конвейеры для извлечения и переноса данных. Mara использует PostgreSQL в качестве механизма обработки данных и использует преимущества многопроцессорного пакета Python для конвейерного выполнения. Разработчики описывают его как «на полпути между простыми сценариями и Apache Airflow», поэтому, если вы ищете что-то среднее между этими двумя крайностями, попробуйте Mara. Примечание. В настоящее время Mara не может работать в Windows.
riko
Хотя технически riko не является полноценным решением ETL, оно может выполнять большинство операций по извлечению данных и включает в себя множество функций, облегчающих извлечение потоков неструктурированных данных в Python. Инструмент был разработан, чтобы заменить ныне несуществующий Yahoo! Веб-приложение Pipes для разработчиков на чистом Python, имеющее как синхронные, так и асинхронные API. У riko достаточно небольшой вычислительный объем, встроенная поддержка RSS / Atom и чистая библиотека Python
визуализация данных в Python вместе с plotly
Красочное интерактивное отображение датасета в одну строку? Не проблема с plotly! Разбираемся с построением интерактивных графиков и диаграмм.
Если спросить питонистов, какую библиотеку использовать для визуализации данных, то большинство, несомненно, ответят: matplotlib. Ответят, правда, без особого удовольствия. Многое в matplotlib не так уж очевидно и требует не раз обратиться к StackOverflow. Касается это и таких распространенных ситуаций, как создание дополнительных осей или отображение на них дат.
Нужно понимать, что matplotlib создавался задолго до бурного развития Data Science, и в большей мере ориентировался на отображение массивов NumPy и параметрических функций SciPy. В то же время в Data Science распространен обобщающий тип объектов – датасеты, крупные таблицы с данными. В этой статье мы нырнем в работу с альтернативной библиотекой – plotly – и научимся визуализировать множество самых необходимых вещей.
Весь код доступен на GitHub. Интерактивные графики можно (и нужно) смотреть на NBViewer. Приводимые куски кода будут отображать только минимальную часть, необходимую для визуализации данных. Предподготовка данных – в указанных источниках.
Пакет plotly – библиотека с открытым исходным кодом, построенная на plotly.js, которая, в свою очередь, базируется на d3. js. В своих экспериментах с кодом будем использовать обертку над plotly cufflinks. Она упрощает работу с датафреймами pandas. Plotly – это графическая компания, производящая несколько продуктов и инструментов с открытым исходным кодом. Библиотека бесплатна для использования и позволяет создавать неограниченное количество графиков в автономном режиме, а также до 25 диаграмм онлайн.
Вся работа статье была сделана в блокноте Jupyter в связке plotly+cufflinks, которые можно установить стандартным образом с помощью pip:
pip install cufflinks plotly
Соответствующий импорт Python библиотек:
# Стандартное импортирование plotly import plotly.plotly as py import plotly.graph_objs as go from plotly.offline import iplot # Использование cufflinks в офлайн-режиме import cufflinks cufflinks.go_offline() # Настройка глобальной темы cufflinks cufflinks.set_config_file(world_readable=True, theme='pearl', offline=True)
Перейдем к примерам.
Построение распределения переменной – стандартный способ начального анализа данных. При помощи plotly легко сделать интерактивное представление гистограмм и прочих распределений. Для тех, кто использовал ранее matplotlib, нужно вместо команды plot просто использовать iplot:
df['claps'].iplot(kind='hist', xTitle='claps', yTitle='count', title='Claps Distribution')
Если мы хотим сравнить распределение двух переменных, можем наложить две гистограммы друг на друга:
df[['time_started', 'time_published']].iplot( kind='hist', histnorm='percent', barmode='overlay', xTitle='Time of Day', yTitle='(%) of Articles', title='Time Started and Time Published')
Проведя некоторые манипуляции в pandas, получаем диаграмму с распределением относительно времени:
df2 = df[['view','reads','published_date']].\ set_index('published_date'). \ resample('M').mean() df2.iplot(kind='bar', xTitle='Date', yTitle='Average', title='Monthly Average Views and Reads')
Комбинируя мощь pandas и plotly, легко получать интерактивные сводные диаграммы:
df.pivot(columns='publication', values='fans').iplot( kind='box', yTitle='fans', title='Fans Distribution by Publication')
Интерактивное представление позволяет не загромождать исходный график избыточной информацией, обращаясь к ней по необходимости.
Одна из распространенных задач – отображение данных относительно временной шкалы. Здесь актуальна возможность выбора интересующего интервала для отслеживания тренда.
tds = df[df['publication'] == 'Towards Data Science'].\ set_index('published_date') tds[['claps', 'fans', 'title']].iplot( y='claps', mode='lines+markers', secondary_y = 'fans', secondary_y_title='Fans', xTitle='Date', yTitle='Claps', text='title', title='Fans and Claps over Time')
В одной строке были сделаны сразу несколько вещей:
- Задание формата оси абсцисс.
- Создание дополнительной оси ординат, так как исследуемые данные имеют разный масштаб величин (secondary_y = ‘fans’).
- Добавление заголовков статей к каждой точке, отображаемых при наведении курсора (рассматривается датафрейм публикации статей (text=’title’)).
Чтобы создать к каждой точке текстовые аннотации, используем режим lines+markers+text:
tds_monthly_totals.iplot( mode='lines+markers+text', text=text, y='word_count', opacity=0.8, xTitle='Date', yTitle='Word Count', title='Total Word Count by Month')
Легко сочетать и различные типы отображения. Например, использовать цвет для дополнительной переменной.
df.pivot_table( values='views', index='published_date', columns='publication').cumsum().iplot( mode='markers+lines', size=8, symbol=[1, 2, 3, 4, 5], layout=dict( xaxis=dict(title='Date'), yaxis=dict(type='log', title='Total Views'), title='Total Views over Time by Publication'))
Совместим данные двух переменных (для рассматриваемого датасета это время чтения и процент прочитанного). Для третьего параметра (тематика статьи) используем цвет:
df.iplot( x='read_time', y='read_ratio', # Specify the category categories='publication', xTitle='Read Time', yTitle='Reading Percent', title='Reading Percent vs Read Ratio by Publication')
Если величина меняется в широком диапазоне логично использовать логарифмические оси. В примере ниже представлен код с логарифмической осью абсцисс (команда type=’log’). Третья переменная показывается при помощи размера маркеров (size=’read_ratio’).
tds.iplot( x='word_count', y='reads', size='read_ratio', text=text, mode='markers', layout=dict( xaxis=dict(type='log', title='Word Count'), yaxis=dict(title='Reads'), title='Reads vs Log Word Count Sized by Read Ratio'))
Описанные стратегии отображения дополнительной переменной можно использовать для одновременной визуализации четырех переменных: двух – при помощи координат, и еще двух – за счет использования цвета и размера. Результат представлен на рисунке ниже.
Для следующих форм представления данных будем использовать модуль plotly.figure_factory.
Матрица диаграмм рассеяния
Показать взаимосвязь между параметрами поможет матрица диаграмм рассеяния. В качестве диагонального отображения единственной переменной используем гистограммы (diag=’histogram’). Заметим, что и здесь мы можем использовать цвет в качестве дополнительной переменной.
import plotly.figure_factory as ff figure = ff.create_scatterplotmatrix( df[['claps', 'publication', 'views', 'read_ratio','word_count']], diag='histogram', index='publication')
Цветовая карта распределения
Другой способ, удобный для большого количества переменных – цветовая карта распределения величины. Такой подход удобен, например, для корреляционной матрицы параметров датасета df.corr():
corrs = df. corr() figure = ff.create_annotated_heatmap( z=corrs.values, x=list(corrs.columns), y=list(corrs.index), annotation_text=corrs.round(2).values, showscale=True)
Приятной особенностью cufflinks является возможность выбора стиля отображения данных с помощью различных тем. Ниже представлены отображения в темах space и ggplot:
Есть возможность визуализации в трехмерном пространстве:
Есть и все, что привычно видеть в стандартном наборе построения диаграмм. Но даже круговые диаграммы выглядят здесь более стильно, чем в matplotlib:
Если вы запускали скрипты в Jupyter-блокноте, вы могли заметить небольшую ссылку в правой части графика Export to plot.ly. Нажав на нее, вы перенесетесь в Chart Studio, где можно дополнительно подготовить диаграмму для конечной презентации. Вы можете добавить аннотацию, изменить цвета и пр. Ниже представлены две диаграммы, подготовленные в Chart Studio.
Даже все вышепредставленное не описывает всех возможностей описываемых библиотек. Чтобы увидеть больше красочных примеров, изучите документации plotly и cufflinks.
Итак, что мы имеем:
- Однострочный код для красочной визуализации датасетов.
- Интерактивные элементы для выделения и исследования данных.
- Возможность существенной детализации отображаемой информации.
- Простая настройка отображения для
Создаем графики при помощи библиотек Python: быстро и красиво
Эта статья представляет собой подробное руководство по визуализации данных в Python. Мы расскажем про построение графиков при помощью библиотек Pandas, Seaborn и Plotly, а также наглядно покажем, что счастье именно в деньгах.
В данной статье мы рассмотрим три разных способа построения графиков в Python. А делать это мы будем, используя данные Всемирного доклада о счастье за 2019 год (ежегодно публикуется ООН). Мы также дополнили эти данные информацией с сайта https://www.gapminder.org/ и из Википедии, чтобы исследовать и визуализировать новые зависимости.
Всемирный доклад о счастье пытается ответить на вопрос о том, какие именно факторы влияют на счастье во всем мире.
Данный доклад о счастье сформирован на основе ответов на вопрос, заданный по системе «лестницы Кэндила» (шкала Кэндила). Респондентов спрашивали, как бы они оценили собственную жизнь по шкале от 0
до 10
, где 0
является худшей из возможных оценок, а 10
— наилучшей.
Структура статьи
Данная статья задумывалась одновременно и как пособие по написанию кода, и как своего рода небольшой справочник, в котором можно время от времени искать нужный тип графика. Для экономии места мы иногда помещали несколько графиков в одну картинку, но вы всегда можете найти наш код либо здесь, либо в соответствующем ему Jupyter ноутбуке.
Оглавление
На каждую секцию мы поставили гиперссылку, так что можете не читать предисловий, а сразу переходить к графикам. Мы не обидимся.
Моя история построения графиков в Python
Более или менее серьезно я начал изучать Python около двух лет назад. Начиная с этого времени, едва ли не каждую неделю я восторгался его простотой и легкостью использования, а также обилием великолепных библиотек с открытым исходным кодом. И чем больше я знакомился с шаблонами и концепциями языка, тем больше все это обретало смысл.
Matplotlib
Но с построением графиков все происходило ровно наоборот. В начале практически каждый мой график, построенный в Matplotlib, напоминал мне какого-то преступника, сбежавшего из 80-х годов. Более того, чтобы построить такую мерзость, мне приходилось проводить целые часы на Stackoverflow. И даже не напоминайте мне про мультидиаграммы. Конечно, результаты выглядят впечатляюще, и ты чувствуешь себя потрясающе, создавая такие вещи программно. Например, строя 50 диаграмм для разных переменных за один раз. Но для этого нужно проделать кучу работы и запомнить множество бесполезных команд.
Seaborn
Знакомство с Seaborn принесло большое облегчение. С помощью этой библиотеки можно несколько абстрагироваться от тонкой настройки. И с точки зрения эстетики получающихся графиков это большой шаг вперед. Но все же Seaborn построена на базе Matplotlib. И зачастую, для нестандартных настроек, приходится переходить к коду Matplotlib.
Bokeh
На короткий момент времени я было подумал, что моим спасением будет Bokeh. Я наткнулся на эту библиотеку, когда работал над геопространственной визуализацией. Но я очень быстро обнаружил, что Bokeh, хоть и отличается от Matplotlib, но построена так же глупо и запутанно.
Plotly
Некоторое время назад, опять-таки работая над визуализацией геопространственных данных, я попробовал plot.ly (далее везде будем называть ее просто plotly). Тогда эта библиотека показалась мне еще более абсурдной, чем все предыдущие. Вам нужно было завести там аккаунт, войти в него на вашем ноутбуке, и только потом plotly начинает строить графики в онлайн режиме. А затем вам нужно еще загрузить эти графики. Я очень быстро отбросил эту библиотеку. Но недавно я наткнулся на YouTube-видео про библиотеки plotly express и plotly 4.0, в котором в том числе говорилось, что они избавились от этой онлайн-чепухи. Я начал играться с этой библиотекой и в результате появилась эта статья. Как говорится, лучше поздно, чем никогда.
Kepler.gl
Не будучи никоим образом библиотекой Python, Kepler.gl, тем не менее, является отличным инструментом для визуализации геопространственных данных. Все что вам нужно, это CSV-файл, который вы легко можете создать при помощи Python.
Мои текущие предпочтения
В конце концов я остановился на библиотеке Pandas для построения графиков на скорую руку, и на Seaborn для презентаций и отчетов (когда визуализация очень важна).
Важность статистических распределений
Я начал изучать статистику (курс Stats 119), учась в Сан-Диего. Этот курс является вводным и включает в себя самые основы статистики, как например, агрегацию данных (визуальную и количественную), концепцию шансов и вероятностей, регрессию, выборки и, самое главное, статистические распределения. В это время мое понимание тех или иных количественных феноменов практически полностью сдвинулось в сторону представления их в виде статистических распределений (как правило, гауссовых).
И по сей день я нахожу потрясающим, как всего две величины, математическое ожидание и дисперсия, могут помочь вам постичь суть явления. Просто зная эти два числа, легко сделать вывод, насколько вероятен тот или иной результат. Мы сразу знаем, в какой области будут основные результаты. Это дает нам возможность быстро выделять статистически значимые явления, не производя при этом сложных вычислений.
В общем, теперь при работе с любыми новыми данными моим первым шагом всегда является попытка визуализировать их статистическое распределение.
Загрузка данных и импорт библиотек
Для начала давайте загрузим данные, которые мы будем использовать в этой статье. Я также произвел предобработку данных (интерполяцию и экстраполяцию — там, где это было уместно).
# загружаем данные data = pd.read_csv('https://raw.githubusercontent.com/FBosler/AdvancedPlotting/master/combined_set.csv') # присваиваем метки каждому году data['Mean Log GDP per capita'] = data.groupby('Year')['Log GDP per capita'].transform( pd.qcut, q=5, labels=(['Lowest','Low','Medium','High','Highest']) )
Загруженный датасет содержит данные в следующих колонках:
- Year (год): год, в котором производились измерения (с 2007 по 2018).
- Life Ladder («лестница жизни»): респондент измеряет качество свой жизни по шкале от 0 до 10 (наилучшая оценка). Это так называемая лестница или шкала Кэнтрила.
- Log GDP per capita (логарифм ВВП на душу населения): ВВП на душу населения, подсчитанный по паритету покупательной способности доллара в 2011 году. Взято из индикаторов мирового развития (WDI — World Development Indicators), опубликованных Всемирным Банком 14 ноября 2018 года.
- Social support (социальная поддержка): Ответ на вопрос: «Если бы вы были в беде, то могли бы рассчитывать на помощь друзей или родственников или нет?»
- Healthy life expectancy at birth (ожидаемая продолжительность здоровой жизни): ожидаемое количество лет, в течение которых человек сможет вести активный образ жизни без всяких ограничений по здоровью. Показатели — на основе данных Всемирной организации здравоохранения (WHO — World Health Organization) за 2005, 2010, 2015 и 2016 годы.
- Freedom to make life choices (свобода делать жизненный выбор): Ответ на вопрос: «Удовлетворены ли вы вашим уровнем свободы выбирать, что делать со своей жизнью?»
- Generosity (щедрость): Ответ на вопрос: «Жертвовали ли вы деньги на благотворительность в прошлом месяце?» (в привязке к ВВП на душу населения).
- Perceptions of corruption (восприятие коррупции): Ответы на вопросы: «Широко ли распространена коррупция в правительственных кругах?» и «Широко ли распространена коррупция в бизнесе?»
- Positive affect (положительный аффект): включает в себя среднюю частоту счастья, смеха и радости в предыдущий день.
- Negative affect (отрицательный аффект): включает в себя среднюю частоту беспокойства, грусти и гнева в предыдущий день.
- Confidence in national government (доверие собственному правительству): не нуждается в пояснениях.
- Democratic Quality (качество демократии): насколько демократична страна.
- Delivery Quality (качество управления): насколько хорошо страна управляется.
- Gapminder Life Expectancy (продолжительность жизни от Gapminder): данные о продолжительности жизни от Gapminder.
- Gapminder Population (население страны от Gapminder): население страны.
Импортирование
import plotly
import pandas as pd
import numpy as np
import seaborn as sns
import plotly.express as pximport matplotlib%matplotlib inlineassert matplotlib.__version__ == "3.1.0","""
Please install matplotlib version 3.1.0 by running:
1) !pip uninstall matplotlib
2) !pip install matplotlib==3.1.0
"""
Быстро: простые графики в Pandas
Pandas имеет встроенные функции построения графиков, которые можно вызывать непосредственно из Series и DataFrame. За что я обожаю эти функции, это за их краткость, за разумные значения по умолчанию и за то, что с их помощью можно быстро понять, что происходит с данными.
Для создания графика просто вызовите метод .plot(kind=<TYPE OF PLOT>)
следующим образом:
np.exp(data[data['Year']==2018]['Log GDP per capita']).plot( kind='hist' )
В результате выполнения этой команды получится следующий график:
2018: Гистограмма количества стран в зависимости от ВВП на душу населения. Тут никаких сюрпризов: большинство стран бедны!
При построении графиков в Pandas я использую пять основных параметров:
kind
: Pandas должна знать, какого типа график вы хотите строить. Возможны следующие варианты:hist, bar, barh, scatter, area, kde, line, box, hexbin, pie
.figsize
: Позволяет переопределить значение размера, заданное по умолчанию (6 дюймов в ширину и 4 дюйма в высоту). Данный параметр принимает на вход кортеж, напримерfigsize=(12,8)
, что я часто использую.title
: Добавляет к графику заголовок. Как правило, я его использую, чтобы кратко описать, что происходит на графике, дабы потом это можно было быстро понять. Данный параметр принимает на вход строку.bins
: Позволяет переопределить ширину областей гистограммы. Данный параметр принимает на вход список или подобную ему последовательность, напримерbins=np.arange(2,8,0.25)
.xlim/ylim
: Позволяет переопределить максимальные и минимальные значения осейx
иy
. Оба параметра принимают на вход кортежи, напримерxlim=(0,5)
.
Давайте быстро пробежимся по некоторым типам таких графиков.
Вертикальная гистограмма
data[ data['Year'] == 2018 ].set_index('Country name')['Life Ladder'].nlargest(15).plot( kind='bar', figsize=(12,8) )
Знакомимся с анализом данных на Python. Часть 1
В этой статье мне хотелось бы рассказать о втором этапе обучения алготрейдингу, нацеленном на такую важную вещь как анализ данных. Мы рассмотрим изучение и использование библиотек pandas, matplotlib, продолжим осваивать Python и биржевое дело.
Если вы прошли первый этап, то уже немного освоили Python, изучили стандартные конструкции языка, попользовались некоторыми библиотеками и уже знаете, что биржа это далеко не только Forex. После прохождения данного этапа вы сможете проводить некоторый анализ биржевых данных, строить свои графики и индикаторы, а так же станете более подкованы в техническом анализе.
Анализ данных используется не только в трейдинге, он необходим в машинном обучении, в статистических расчетах, в математическом моделировании и многом другом. Поэтому познакомившись с этой достаточно сложной темой, вы сможете найти ей применение во многих сферах.
Переходим к обучению
Данная статья разбита на три части для удобства восприятия. В этой части будут рассмотрены источники, необходимые для освоения анализа данных, создания графиков, изучения Python, во второй — знакомство с техническими индикаторами и построением своих графиков, а в третьей — разберем обучение биржевому делу.
Этап 2.1. Анализ данных
1. Изучение pandas
pandas — библиотека с открытым исходным кодом для Python, построенная поверх более низкоуровневого пакета NumPy, используемая для обработки и анализа данных.
Нуждаясь в быстром и гибком инструменте для количественного анализа финансовой информации Уэс Мак-Кинни приступил к созданию pandas в 2008 году, сейчас данная библиотека считается одной из наиболее динамично развивающихся библиотек для анализа данных на Python.
Эта высокоуровневая библиотека позволяет строить сводные таблицы, выделять колонки, использовать фильтры, выполнять группировку по параметрам, запускать функции (сложение, нахождение медианы, среднего, минимального, максимального значений), объединять таблицы и многое другое. В pandas можно создавать и многомерные таблицы.
Дам небольшое пояснение по основным структурам библиотеки с которыми придется работать.
Series – это маркированная одномерная структура данных, ее можно представить, как таблицу с одной строкой.
Создать Series можно так:
Столбец слева это индекс, справа — значения.
DataFrame – это двумерная маркированная структура. Идейно она очень похожа на обычную таблицу, что выражается в способе ее создания и работе с ее элементами.
Pandas может работать со следующими типами данных:
- Табличные данные («плоские таблицы»), такие как SQL или Excel.
- Упорядоченные и неупорядоченные временные ряды.
- Произвольные матричные данные с метками строк и столбцов.
- Другие формы представления статистических данных.
В будущем pandas планирует стать инструментом анализа и обработки данных, доступным для любого языка программирования.
Далее я расскажу как освоить pandas.
1.1. Прохождение серии уроков по pandas на сайте devpractice.ru
В самом начале автор рассказывает как установить pandas на разные платформы и затем переходит к описанию двух главных в библиотеке структур данных, Series и DataFrame.
Далее речь идет о том как работать с ними, как создавать, производить операции с элементами, получать доступ к данным различными способами, добавлять индексы и другое. Для новичка думаю лучший туториал в рунете.
1.2. Изучение статьи о pandas на сайте khashtamov.com
Достаточно объемная статья со множеством примеров и простым изложением. Отдельное упоминание статья заслуживает за то, что в ней приведен анализ временных рядов на примере акций Apple, что позволяет увидеть как на практике применяется библиотека и показывается работа с построением графиков с помощью библиотеки matplotlib, о которой речь пойдет ниже.
1.3. Изучение цикла статей о pandas на сайте pythonworld.ru
Не лишним будет изучить этот источник, т.к. там неплохо рассказывается о методе read_csv и не только.
1.4. Изучение официальной документации pandas
Документация написана на английском языке, но это не мешает эффективно изучить библиотеку. Если вы не знаете языка, тогда поможет онлайн-переводчик. В документации содержится всё, что необходимо знать о панде. Тем более написана она достаточно простым языком. Структуру Panel можно опустить, т.к. она в будущем будет удалена из pandas.
1.5. Чтение литературы: Маккинни — “Python и анализ данных»
Данная книга будет полезна не только для изучения pandas, в ней так же рассказывается о NumPy, matplotlib и многом другом. Единственное, что за основу взят Python 2.7, потому что большая часть научного сообщества на момент написания книги ещё не перешла на Python 3. Впрочем, если не считать немногих исключений, у вас не возникнет трудностей с исполнением приведенного в книге кода, даже если работать с Python 3.7.
Книга покажется сложной для новичков, поэтому достаточно читать по 5-10 страниц в день.
Совет: При работе с pandas удобно использовать Jupyter Notebook. Это интерактивная среда для программирования на языке Python, которая позволяет объединить код, текст, графики, математические формулы и скомбинировать всё в одном отчете.
2. matplotlib
Библиотека matplotlib — самый популярный в Python инструмент для создания графиков и других способов визуализации двумерных данных.
Пакет поддерживает многие виды графиков и диаграмм:
- Графики.
- Диаграммы разброса.
- Столбчатые диаграммы и гистограммы.
- Круговые диаграммы.
- Ствол-лист диаграммы.
- Контурные графики.
- Поля градиентов.
- Спектральные диаграммы.
С помощью matplotlib можно делать и анимированные изображения.
Как изучать?
2.1. Прочитать интерактивный учебник “Научная графика в Python”
Автор учебника Павел Шабанов старается описать библиотеку во всех подробностях. Даёт множество примеров и просто хорошо объясняет. Немного процитирую: “Создание рисунка в matplotlib схоже с рисованием в реальной жизни. Так художнику нужно взять основу (холст или бумагу), инструменты (кисти или карандаши), иметь представление о будущем рисунке (что именно он будет рисовать) и, наконец, выполнить всё это и нарисовать рисунок деталь за деталью.”
2.2. Изучить серию шпаргалок по matplotlib
Это можно назвать серией уроков с достаточно подробным описанием возможностей библиотеки, где под каждой строкой кода дается пояснение.
2.3. Подробнее изучить pyplot
“Так как matplotlib организована иерархически, а наиболее простыми для понимания человеком являются самые высокоуровневые функции, то знакомство с matplotlib начинают с самого высокоуровневого интерфейса matplotlib.pyplot. Интерфейс matplotlib.pyplot. является набором команд и функций, которые делают синтаксис графических matploltib команд похожим на команды, используемые в среде MATLAB.” — позаимствовано из интерактивного учебника “Научная графика в Python”.
Этап 2.2. Продолжение процесса изучения Python
1. Прохождение курса на Stepik.org “Python: основы и применение”
По сути является продолжением курса «Программирование на Python», описанного в первом этапе. Задачи посложнее, но вполне подъёмные для тех кто прошел 1 этап. Автор отлично объясняет механизмы работы языка, в следствии чего приходит лучшее понимание процесса разработки. Если с прохождением курса возникнут сложности, советую посмотреть видео курс по Python из прошлого этапа.
В день достаточно уделять этому ресурсу 1 час.
Ссылка на курс: https://stepik.org/course/512/syllabus
2. Чтение литературы: Лутц — “Изучаем Python. 4 издание”
Думаю книга Лутца стала уже классикой, её рекомендуют почти все, кто когда то изучал Python. И это оправданно, данная книга полностью раскрывает философию Python и показывает возможности языка, которые вы можете узнать, только лишь в англоязычной документации. Почти на всех форумах книга “Изучаем Python” рекомендуется как пособие для тех, кто осваивает язык с нуля, однако я считаю, что она хорошо пойдет, тем кто уже освоил некоторые азы. Книга написана в 2011 году, но не потеряла актуальности и в 2018.
В день рекомендую читать по 15 страниц.
3. Решение задач в Pythontutor.ru
Если вы уже решили все задачи в интерактивном учебнике на первом этапе, можете пропустить данный пункт, если нет, продолжайте решение.
Заключение
Срок данного этапа составляет приблизительно 2-3 месяца. Но изучение pandas и matplotlib не ограничивается данным этапом и потребует дополнительного времени, потому что возможности библиотек очень обширны. Как говорится век живи — век учись.
💬 В комментариях задавайте вопросы. Посоветуйте свои книги и статьи по этой теме.
Переходите к следующей части, посвященной знакомству с техническими индикаторами и графиками в среде Jupyter.
Другие статьи из программы обучения:
5 лучших библиотек Python для визуализации данных
Визуализация данных дает много информации, недоступной только с помощью данных. В Python есть одни из самых интерактивных инструментов визуализации данных. Самые основные типы графиков используются в нескольких библиотеках, но другие доступны только в определенных библиотеках.
Журналист данных и информационный дизайнер Дэвид МакКэндлесс, говоря о важности визуализации данных в своем выступлении на TED, сказал: «Визуализируя информацию, мы превращаем ее в ландшафт, который вы можете исследовать своими глазами, своего рода информационную карту.А когда вы теряетесь в информации, вам может пригодиться информационная карта ». Вот 5 лучших библиотек визуализации Python.
Лучшие библиотеки Python для визуализации данных
1. Matplotlib
Matplotlib — самая популярная библиотека визуализации данных в Python и библиотека для построения 2D-графиков. Это наиболее широко используемая библиотека для построения графиков в сообществе Python, которой более десяти лет. Он поставляется с интерактивной средой для разных платформ. Matplotlib можно использовать в сценариях Python, оболочках Python и IPython, записной книжке Jupyter, серверах веб-приложений и четырех наборах инструментов графического пользовательского интерфейса.Это очень универсальная библиотека визуализации. С помощью этой библиотеки с помощью всего нескольких строк кода можно создавать графики, гистограммы, гистограммы, спектры мощности, стволовые диаграммы, диаграммы рассеяния, диаграммы ошибок, круговые диаграммы и многие другие типы. Модуль pyplot предоставляет интерфейс, подобный MATLAB, особенно в сочетании с IPython. Matplotlib предшествует поддержке HTML5 для полнофункциональных веб-приложений, вместо этого сосредоточившись на статических изображениях для публикации вместе с интерактивными фигурами с использованием таких инструментов графического интерфейса пользователя, как Qt и GTK.
Источник изображения: Edureka
2. Plotly
Plotly — это веб-инструментарий для визуализации данных. Доступ к Plotly также можно получить из записной книжки Python, и у него отличный API. Обладая уникальными функциями, такими как контурные графики, дендрограммы и трехмерные диаграммы, он имеет визуализацию, такую как точечные диаграммы, линейные диаграммы, гистограммы, столбцы ошибок, прямоугольные диаграммы, гистограммы, несколько осей, подзаголовки и многие другие. Он содержит отличный API, в том числе и для Python. В нем также есть контурные графики, что не очень часто встречается в других библиотеках.
3. Сиборн
Библиотека визуализации данных Python компании Seaborn — это библиотека, основанная на Matplotlib. Он предоставляет гораздо более сжатый API для создания визуализаций на основе KDE. Он предоставляет интерфейс высокого уровня для рисования привлекательных и информативных статистических графиков. Он тесно интегрирован со стеком PyData, включая поддержку структур данных numpy и pandas. Компания Seaborn стремится сделать визуализацию центральной частью исследования и понимания данных. Его ориентированные на наборы данных функции построения графиков работают с фреймами данных и массивами, содержащими целые наборы данных, и внутренне выполняют необходимое семантическое отображение и статистическую агрегацию для создания информативных графиков.
Смотрите также
Источник изображения: Seaborn
4. ggplot
Ggplot — это Python-реализация Грамматики графики языка программирования R. Это система для декларативного создания графики, основанная на Grammar of Graphics и тесно интегрированная с Pandas. После того, как ему рассказали, как сопоставить переменные с эстетикой и какие примитивы использовать, он позаботится обо всех деталях. Метод Ggplot не предназначен для создания сильно настраиваемой графики.
Источник изображения: r4stats.com
5. Альтаир
Библиотека Python компании Altair представляет собой библиотеку декларативной статистической визуализации с простым API, дружественным и последовательным интерфейсом, построенной на основе мощной грамматики визуализации Vega-Lite. Декларативной библиотеке нужно только упомянуть связи между столбцами данных и каналами кодирования, а остальное построение графиков обрабатывается автоматически. Эта элегантная простота позволяет создавать красивые и эффективные визуализации с минимальным объемом кода. Исходный код Altair доступен на GitHub.С помощью Altair легко создавать эффективные и красивые визуализации с минимальным количеством кода.
Источник изображения: Altair
Если вам понравилась эта история, присоединяйтесь к нашему сообществу Telegram.
Кроме того, вы можете написать для нас и стать одним из 500+ экспертов, которые написали статьи на AIM. Поделитесь своими номинациями здесь.
Диша Мисал
Нашла путь в науку о данных и искусственный интеллект, несмотря на ее увлечение технологиями.Любит читать, смотреть футбол и безмерно любит астрофизику.
Бесплатная визуализация данных с курсом Python от когнитивного класса
Об этом курсе визуализации данных
«Картинка стоит тысячи слов». Все мы знакомы с этим выражением. Это особенно актуально при попытке объяснить понимание, полученное в результате анализа все более крупных наборов данных. Визуализация данных играет важную роль в представлении как малых, так и крупномасштабных данных.
Одним из ключевых навыков специалиста по обработке данных является способность рассказывать убедительную историю, визуализировать данные и результаты в доступной и стимулирующей форме. Изучение того, как использовать программный инструмент для визуализации данных, также позволит вам извлекать информацию, лучше понимать данные и принимать более эффективные решения.
Основная цель этого курса «Визуализация данных с помощью Python» — научить вас брать данные, которые на первый взгляд не имеют большого значения, и представлять эти данные в форме, понятной людям.Для визуального представления данных были разработаны различные методы, но в этом курсе мы будем использовать несколько библиотек визуализации данных на Python, а именно Matplotlib, Seaborn и Folium. Вы можете начать создавать свои собственные проекты в области науки о данных и сотрудничать с другими специалистами по данным с помощью IBM Watson Studio. При регистрации вы получаете бесплатный доступ к Watson Studio. Начните сейчас и воспользуйтесь преимуществами этой платформы. Программа курса
Модуль 1 — Введение в инструменты визуализации
- Введение в визуализацию данных
- Введение в Matplotlib
- Базовое построение графиков с помощью Matplotlib
- Набор данных об иммиграции в Канаду
Модуль 2 — Базовые инструменты визуализации
Модуль 3 — Специализированные инструменты визуализации
Модуль 4 — Расширенные инструменты визуализации
- Графики морского забоя и регрессии
Модуль 5 — Создание карт и визуализация геопространственных данных
Общая информация
- Этот курс бесплатный.
- Самостоятельное обучение.
- Забрать можно в любой момент.
- Его можно проверять сколько угодно раз.
Требования
Персонал курса
Алекс Аклсон
Алекс Аклсон, доктор философии, специалист по обработке данных в группе цифрового бизнеса IBM Canada. Алекс активно участвовал во многих интересных проектах в области науки о данных, таких как разработка интеллектуальной системы, которая могла бы определять начало деменции у пожилых людей, используя продольные траектории скорости ходьбы и домашней активности.До прихода в IBM Алекс работал специалистом по анализу данных в Datascope Analytics, консалтинговой фирме по науке о данных в Чикаго, штат Иллинойс, где он разрабатывал решения и продукты, используя подход, ориентированный на человека и ориентированный на данные. Алекс получил докторскую степень. получил степень доктора биомедицинской инженерии в Университете Торонто.
Джей Раджасекхаран
Джей Раджасекхаран начал свою карьеру в качестве инженера по проектам в компании Honeywell Aerospace, где он руководил портфелем проектов, направленных на повышение качества, снижение затрат и улучшение процессов для Boeing, Airbus и Lockheed Martin.Впоследствии Джей переключился с проектирования на аналитику и присоединился к IBM в качестве бизнес-аналитика в подразделении Infrastructure Services. В настоящее время он руководит несколькими программами повышения производительности, используя аналитику данных для анализа бизнес-операций и внедряя оптимизацию, такую как оптимизация рабочих процессов, повышение уровня обслуживания и, в конечном итоге, снижение затрат. Помимо своей карьеры, Джей очень увлечен преподаванием — он добровольно работает репетитором в своей общественной библиотеке и наставником выпускников в Университете Торонто.
Полонг Лин
Полонг Линь (Polong Lin) — специалист по анализу данных и ведущий специалист в области науки о данных в IBM в Канаде. Полонг является соорганизатором крупнейшей группы встреч по науке о данных в Канаде и регулярно выступает на конференциях по науке о данных. Полонг имеет степень M.Sc. в когнитивной психологии.
Благодарность
Особая благодарность следующим инженерам и аналитикам за их ценный и значительный вклад в практическую составляющую этого курса: Ehsan M.Кермани, Слободан Маркович, Сьюзан Ли и Мадлен Шан.
Руководств по программированию на Python
Добро пожаловать в руководство по анализу данных с помощью Python и библиотеки анализа данных Pandas .
Область анализа данных довольно велика, и то, что вы собираетесь с ней делать, скорее всего, никогда не будет точно соответствовать ни одному руководству. Имея это в виду, я думаю, что лучший способ подойти к изучению анализа данных с помощью Python — это просто на примере. Мой план здесь состоит в том, чтобы найти некоторые наборы данных и выполнить некоторые из общих задач анализа данных, используя пакет Pandas, чтобы, надеюсь, вы достаточно познакомились с пакетом, чтобы работать с ним самостоятельно.
Для начала давайте убедимся, что мы все на одной странице.
Я буду использовать Python 3.7 и Pands 0.24.1
Скорее всего, вы сможете следить за разными версиями вещей, просто знайте, что могут быть незначительные различия, которые вам нужно будет проработать. Я лично обнаружил, что с помощью Pandas я могу с большим успехом гуглить свои ошибки.
Итак, после того, как вы установили Python и выполнили установку pandas с помощью пакета , все готово!
Будет довольно много пакетов и библиотек, которые мы установим в ходе этой серии.Если вы предпочитаете сосредоточиться на коде, а не на получении пакетов, вы можете проверить предварительно скомпилированный и оптимизированный дистрибутив Python от Activestate, в котором будет все, что вам нужно, чтобы следовать вместе с этой серией. Получите ActivePython.
Давайте прыгнем!
Ой, подожди, наверное, нам тоже нужен набор данных.
Интернет битком набит наборами данных, так что есть из чего выбирать. Я лично собираюсь использовать наборы данных из Kaggle .
Если вы не знакомы, Kaggle - это сайт соревнований по анализу данных.Я думаю, что если вы хотите попрактиковаться в анализе реальных данных, Kaggle - лучшее место для этого, даже если вы не хотите участвовать в соревнованиях.
Многие, если не большинство, соревнований на Kaggle - это актуальных проблем компании. Такие же вещи, как меня часто просят сделать на контрактной работе или что вас могут попросить сделать, если вы найдете работу аналитика данных. Обычно это «нерешенные» проблемы, а не более простые решенные проблемы, с которыми вы обычно сталкиваетесь в учебных пособиях.
Не думаю, что мы готовы к чему-то серьезному, поэтому давайте для начала найдем более простой набор данных. Чтобы найти наборы данных, ознакомьтесь с набором данных Kaggle . Тонны вкусностей здесь.
Для начала давайте посмотрим на Avocado Price . Абсолютно обожаю авокадо! Вы знали, что авокадо - это фрукт? Наиболее строго классифицируется как ... ягода! Представьте себе, что вы получаете что-то со вкусом «смешанных ягод», а там авокадо. Ха!
В любом случае загрузите этот набор данных.Вам нужно будет войти / создать учетную запись, чтобы использовать Kaggle, но вы должны это сделать. Если по какой-либо причине вы этого не хотите или набор данных отсутствует, я также размещу его здесь: Цены на авокадо .
Распакуйте файл, используя все, что вы используете для архивирования / распаковки, и у вас останется файл CSV.
Файлы CSV
- это очень распространенные типы файлов, которые вы найдете при анализе данных. Структура CSV имеет тенденцию быть организованной по столбцам и строкам, где в самом файле есть значения, разделенные запятыми (эй, это откуда имя CSV!?!), А затем строки разделяются новыми строками в документе.Итак, давайте прочитаем этот csv с помощью Pandas.
А пока давайте убедимся, что наш файл находится в том же рабочем каталоге, что и наш скрипт Python, или в каталоге типа «наборы данных». Я буду делать последнее, но вы можете делать все, что хотите. Итак, для начала у нас есть файл с именем avocado.csv
, и мы хотим загрузить его в pandas. Это файл CSV, так что он уже в формате столбцов и строк, мы просто хотим загрузить его в фрейм данных pandas .
Для этого воспользуемся методом read_csv
.Посмотрим, как это работает. Я собираюсь сделать это в Jupyter Notebook. Вы можете использовать любой редактор, который вам нравится, но записные книжки Jupyer довольно полезны для анализа данных и просто для общего поиска данных. Чтобы использовать их, вы можете просто набрать:
pip install jupyterlab
Затем в терминале / командной строке вы можете сделать:
лаборатория jupyter
Затем вы можете выбрать файл> новый> блокнот, выбрать Python 3, и все готово! Начнем с загрузки в файл.
3 Визуализация данных | R для науки о данных
Введение
«Простой график предоставил аналитикам больше информации.
чем любое другое устройство ». - Джон Тьюки
Эта глава научит вас визуализировать данные с помощью ggplot2. В R есть несколько систем построения графиков, но ggplot2 - одна из самых элегантных и универсальных. ggplot2 реализует грамматику графики , согласованную систему для описания и построения графиков.С ggplot2 вы можете делать больше быстрее, изучая одну систему и применяя ее во многих местах.
Если вы хотите узнать больше о теоретических основах ggplot2 перед тем, как начать, я рекомендую прочитать «Многослойная грамматика графики», http://vita.had.co.nz/papers/layered-grammar. pdf.
Предпосылки
В этой главе основное внимание уделяется ggplot2, одному из основных членов тидиверсии. Чтобы получить доступ к наборам данных, страницам справки и функциям, которые мы будем использовать в этой главе, загрузите тидиверс, запустив этот код:
библиотека (tidyverse)
#> ── Присоединение пакетов ──────────────────────────────────────── tidyverse 1.3.0 ──
#> ✔ ggplot2 3.3.2 ✔ мурлыкать 0.3.4
#> ✔ tibble 3.0.3 ✔ dplyr 1.0.2
#> ✔ тидыр 1.1.2 ✔ стрингер 1.4.0
#> ✔ readr 1.4.0 ✔ forcats 0.5.0
#> ── Конфликты ─────────────────────────────────────────── tidyverse_conflicts () ──
#> ✖ dplyr :: filter () маскирует stats :: filter ()
#> ✖ dplyr :: lag () маски stats :: lag ()
Эта одна строка кода загружает основной тидиверс; пакеты, которые вы будете использовать практически при каждом анализе данных. Он также сообщает вам, какие функции из тидиверса конфликтуют с функциями в базовом R (или из других пакетов, которые вы могли загрузить).
Если вы запустите этот код и получите сообщение об ошибке «Нет пакета с именем« tidyverse »», вам нужно сначала установить его, а затем снова запустить library ()
.
Вам нужно установить пакет только один раз, но вам нужно перезагружать его каждый раз, когда вы начинаете новый сеанс.
Если нам нужно точно указать, откуда взялась функция (или набор данных), мы воспользуемся специальной формой package :: function ()
. Например, ggplot2 :: ggplot ()
явно сообщает вам, что мы используем функцию ggplot ()
из пакета ggplot2.
Первые шаги
Давайте воспользуемся нашим первым графиком, чтобы ответить на вопрос: автомобили с большими двигателями потребляют больше топлива, чем автомобили с маленькими двигателями? Вероятно, у вас уже есть ответ, но постарайтесь дать точный ответ. Как выглядит взаимосвязь между объемом двигателя и топливной экономичностью? Это положительно? Отрицательный? Линейный? Нелинейный?
Фрейм данных mpg
Вы можете проверить свой ответ с помощью фрейма данных mpg
, найденного в ggplot2 (он же ggplot2 :: mpg
).Фрейм данных - это прямоугольный набор переменных (в столбцах) и наблюдений (в строках). миль на галлон
содержит наблюдения, собранные Агентством по охране окружающей среды США на 38 моделях автомобилей.
миль на галлон
#> # Таблица: 234 x 11
#> модель производителя displ год cyl trans drv cty hwy fl class
#>
#> 1 audi a4 1.8 1999 4 авто (l5) f 18 29 p компа…
#> 2 audi a4 1.8 1999 4 механика (m5) f 21 29 p compa…
#> 3 audi a4 2 2008 4 механика (m6) f 20 31 p compa…
#> 4 audi a4 2 2008 4 auto (av) f 21 30 p compa…
#> 5 audi a4 2.8 1999 6 auto (l5) f 16 26 p compa…
#> 6 audi a4 2.8 1999 6 механика (m5) f 18 26 p compa…
#> #… С еще 228 строками
Среди переменных в миль на галлон
следующие:
displ
- объем двигателя автомобиля в литрах.hwy
- топливная экономичность автомобиля на шоссе, в милях на галлон (миль на галлон).
Автомобиль с низким КПД потребляет больше топлива, чем автомобиль с высоким КПД.
топливная экономичность, когда они едут на одинаковое расстояние.
Чтобы узнать больше о миль на галлон
, откройте соответствующую страницу справки, запустив ? Mpg
.
Создание ggplot
Чтобы построить миль на галлон , запустите этот код, чтобы поместить displ
на ось x и hwy
на ось y:
ggplot (данные = миль на галлон) +
geom_point (отображение = aes (x = displ, y = hwy))
График показывает отрицательную зависимость между объемом двигателя ( displ
) и топливной экономичностью ( hwy
).Другими словами, автомобили с большими двигателями потребляют больше топлива. Подтверждает ли это или опровергает вашу гипотезу о топливной экономичности и объеме двигателя?
С помощью ggplot2 вы начинаете построение графика с помощью функции ggplot ()
. ggplot ()
создает систему координат, в которую вы можете добавлять слои. Первый аргумент ggplot ()
— это набор данных для использования в графике. Итак, ggplot (data = mpg)
создает пустой график, но это не очень интересно, поэтому я не собираюсь его здесь показывать.
Вы завершаете свой график, добавляя один или несколько слоев в ggplot ()
. Функция geom_point ()
добавляет слой точек к вашему графику, который создает диаграмму рассеяния. ggplot2 поставляется с множеством функций geom, каждая из которых добавляет к графику разные типы слоев. В этой главе вы узнаете о них целую кучу.
Каждая функция geom в ggplot2 принимает аргумент mapping
. Это определяет, как переменные в наборе данных сопоставляются с визуальными свойствами.Аргумент сопоставления
всегда связан с aes ()
, а аргументы x
и y
aes ()
указывают, какие переменные сопоставляются с осями x и y. ggplot2 ищет отображаемые переменные в аргументе data
, в данном случае mpg
.
Графический шаблон
Давайте превратим этот код в шаблон многократного использования для построения графиков с помощью ggplot2. Чтобы построить график, замените заключенные в скобки разделы в приведенном ниже коде набором данных, функцией geom или коллекцией сопоставлений.
ggplot (data = ) +
(отображение = aes ())
Остальная часть этой главы покажет вам, как дополнить и расширить этот шаблон для создания различных типов графиков. Начнем с компонента
.
Упражнения
Run
ggplot (data = mpg)
. Что ты видишь?Сколько строк в милях на галлон
? Сколько столбцов?
Что описывает переменная
drv
? Прочтите справку для?
миль на галлон, чтобы найти
вне.Постройте диаграмму рассеяния
hwy
иcyl
.Что произойдет, если вы построите диаграмму рассеяния
class
vsdrv
? Почему
сюжет не полезен?
Эстетические карты
«Наибольшая ценность картины - это когда она заставляет нас замечать то, что мы
никогда не ожидал увидеть. - Джон Тьюки
На графике ниже одна группа точек (выделена красным), кажется, выходит за пределы линейного тренда.Эти автомобили имеют больший пробег, чем можно было ожидать. Как вы можете объяснить эти машины?
Предположим, что автомобили - это гибриды. Один из способов проверить эту гипотезу - посмотреть на значение класса
для каждого автомобиля. Переменная class
набора данных миль на галлон
классифицирует автомобили по таким группам, как компактные, средние и внедорожники. Если отдаленные точки являются гибридами, их следует отнести к категории компактных автомобилей или, возможно, малолитражных автомобилей (имейте в виду, что эти данные были собраны до того, как гибридные грузовики и внедорожники стали популярными).
Вы можете добавить третью переменную, например class
, к двухмерной диаграмме рассеяния, сопоставив ее с эстетикой . Эстетика - это визуальное свойство объектов на вашем участке. Эстетика включает такие вещи, как размер, форма или цвет ваших очков. Вы можете отображать точку (как показано ниже) по-разному, изменяя значения ее эстетических свойств. Поскольку мы уже используем слово «значение» для описания данных, давайте воспользуемся словом «уровень» для описания эстетических свойств.Здесь мы меняем уровни размера, формы и цвета точки, чтобы сделать точку маленькой, треугольной или синей:
Вы можете передать информацию о своих данных, сопоставив эстетику графика с переменными в наборе данных. Например, вы можете сопоставить цвета ваших точек с переменной class
, чтобы показать класс каждой машины.
ggplot (данные = миль на галлон) +
geom_point (отображение = aes (x = displ, y = hwy, color = class))
(Если вы предпочитаете британский английский, например Hadley, вы можете использовать color
вместо color
.)
Чтобы сопоставить эстетику переменной, свяжите имя эстетики с именем переменной внутри aes ()
. ggplot2 автоматически присвоит уникальный уровень эстетики (здесь уникальный цвет) каждому уникальному значению переменной, процесс, известный как масштабирование . ggplot2 также добавит легенду, объясняющую, какие уровни каким значениям соответствуют.
По цветам видно, что многие из необычных вещей представляют собой двухместные автомобили. Эти автомобили не похожи на гибриды, а на самом деле являются спортивными автомобилями! Спортивные автомобили имеют большие двигатели, такие как внедорожники и пикапы, но маленькие кузова, такие как автомобили среднего и компактного размера, что позволяет сократить расход топлива.Оглядываясь назад, эти автомобили вряд ли были гибридами, поскольку у них были большие двигатели.
В приведенном выше примере мы сопоставили class
с эстетикой цвета, но мы могли бы сопоставить class
с эстетикой размера таким же образом. В этом случае точный размер каждой точки покажет ее классовую принадлежность. Здесь мы получаем предупреждение , потому что сопоставление неупорядоченной переменной (, класс
) с упорядоченной эстетикой (, размер
) не является хорошей идеей.
ggplot (данные = миль на галлон) +
geom_point (отображение = aes (x = displ, y = hwy, size = class))
#> Предупреждение: не рекомендуется использовать размер дискретной переменной.
Или мы могли бы сопоставить class
с эстетикой alpha , которая контролирует прозрачность точек, или с эстетикой формы, которая управляет формой точек.
# Left
ggplot (данные = миль на галлон) +
geom_point (отображение = aes (x = displ, y = hwy, alpha = class))
# Правильно
ggplot (данные = миль на галлон) +
geom_point (отображение = aes (x = displ, y = hwy, shape = class))
Что случилось с внедорожниками? ggplot2 будет использовать одновременно только шесть фигур.По умолчанию при использовании эстетики формы дополнительные группы не отображаются.
Для каждой эстетики вы используете aes ()
, чтобы связать имя эстетики с отображаемой переменной. Функция aes ()
собирает вместе все эстетические сопоставления, используемые слоем, и передает их аргументу сопоставления слоя. Синтаксис подчеркивает полезную информацию о x
и y
: положения x и y точки сами по себе являются эстетикой, визуальными свойствами, которые вы можете сопоставить с переменными для отображения информации о данных.
После того, как вы нанесете на карту эстетику, ggplot2 позаботится обо всем остальном. Он выбирает разумный масштаб для использования с эстетикой и строит легенду, объясняющую соответствие между уровнями и значениями. Для эстетики x и y ggplot2 не создает легенду, но создает осевую линию с делениями и меткой. Линия оси действует как легенда; он объясняет соответствие между местоположениями и ценностями.