Шаг 87.
Язык Python. Визуализация данных. Библиотека Seaborn. Визуализация отношений в данных. Линейный график. Знакомство с функцией lineplot()

    На этом шаге мы рассмотрим назначение и использование функции lineplot().

    Для визуализации отношений в данных в виде линейного графика применяется функция lineplot(). Такой тип графика чаще всего используется для визуализации временных рядов и зависимостей между переменными, имеющими непрерывный характер, например, такими как температура, давление, стоимость и т.д.

Знакомство с функцией lineplot()

    Начнем с построения простой зависимости одной переменной от другой. Для начала импортируем необходимые библиотеки:

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

    Установим стиль оформления графиков:

sns.set_style("darkgrid")

    Сгенерируем набор случайных данных и воспользуемся функцией lineplot() для отображения зависимости между ними:

np.random.seed(123)
x = [i for i in range(10)]
y = np.random.randint(10, size=len(x))

sns.lineplot(x, y)

    Полный текст приложения:

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

sns.set_style("darkgrid")
np.random.seed(123)
x = [i for i in range(10)]
y = np.random.randint(10, size=len(x))
sns.lineplot(x, y)

plt.show()
Архив с файлом можно взять здесь.

    В первой строке задается зерно генератора, это нужно сделать для того, чтобы каждый раз при запуске программы генерировались одни и те же данные. После этого создаем наборы данных для оси абсцисс (ось х) - последовательность от 0 до 9, оси ординат (ось у) - случайные числа в диапазоне от 0 до 9 в количестве, равном числу элементов в списке х. Далее вызываем функцию lineplot() для отображения зависимости между созданными наборами. В нашем случае, мы воспользовались вариантом, когда данные передаются в функцию напрямую, в виде векторов. Результат работы программы представлен на рисунке 1.


Рис.1. Результат работы функции lineplot()

    На практике данные для анализа чаще всего подготавливаются в виде структур Series или DataFrame библиотеки pandas. Создадим ещё несколько наборов данных:

np.random.seed(123)
sample = [i for i in range(10)]
y = np.random.randint(10, size=len(sample))
z = np.random.randint(4, size=len(sample))
data = [sample, y, z]

    Объединим их в один DataFrame, это можно сделать так:

df = pd.DataFrame(data).transpose() 
df.columns = ['sample', 'y_val', 'z_val']
либо следующим образом:
df = pd.DataFrame({'sample': sample, 'y_val': y, 'z_val': z})

    Посмотрим на получившийся набор данных: содержимое структуры df представлено в таблице 1.

Таблица 1. Содержимое структуры df
sample y_val z_val
0 2 2
1 2 3
2 6 1
3 1 0
4 3 2
5 9 0
6 6 3
7 1 1
8 0 3
9 1 2

    Отобразим зависимость y_val от sample из набора df с помощью функции lineplot():

sns.lineplot(x='sample', y='y_val', data=df)

    Через параметр x задаётся имя признака из набора данных для оси абсцисс, через у - для оси ординат, data - это DataFrame, из которого данные будут извлечены.

    Вот полный текст приложения:

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd

sns.set_style("darkgrid")
np.random.seed(123)
sample = [i for i in range(10)]
y = np.random.randint(10, size=len(sample))
z = np.random.randint(4, size=len(sample))
data = [sample, y, z]
df = pd.DataFrame({'sample': sample, 'y_val': y, 'z_val': z})
sns.lineplot(x='sample', y='y_val', data=df)

plt.show()
Архив с файлом можно взять здесь.


Рис.2. Визуализация зависимости признака y_val от sample

    Если необходимо отобразить все элементы из DataFrame набора, то можно его передать в lineplot() через параметр data, при этом не задавая x и у:

    Полный текст приложения:

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd

sns.set_style("darkgrid")
np.random.seed(123)
sample = [i for i in range(10)]
y = np.random.randint(10, size=len(sample))
z = np.random.randint(4, size=len(sample))
data = [sample, y, z]
df = pd.DataFrame({'sample': sample, 'y_val': y, 'z_val': z})
sns.lineplot(data=df)

plt.show()
Архив с файлом можно взять здесь.


Рис.3. Отображение всего набора данных df

    На следующем шаге мы продолжим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг