Добрый день, уважаемые читатели. В предыдущей статье мы рассмотрели мини-библиотеку для анализа данных групп ВКонтакте. Однако библиотека недаром называется VKVisualization, так как в ней реализован программный интерфейс для визуализации показателей определенной категории. Сегодня мы рассмотрим пару примеров использования такой возможности, так как визуализация данных групп ВК довольно полезный инструмент в анализе активности.

Подпишись на группу Вконтакте и Телеграм-канал. Там еще больше полезного контента для программистов.
А на YouTube-канале ты найдешь обучающие видео по программированию. Подписывайся!

Визуализация просмотров и посетителей

Для использования библиотеки нам необходимо импортировать функции для визуализации и класс DataSet. Также мы должны импортировать matplotlib и seaborn. Загрузим данные с файла и рассмотрим следующий фрагмент кода:

import matplotlib.pyplot as plt
import seaborn as snb

from vkvisualization.dataset import DataSet
from vkvisualization.plotting import visualize_views, \
                                     visualize_visitors, \
                                     visualize_new_members


dataset = DataSet.from_excel('group.xls')

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

snb.set_style('dark')
ax = plt.figure(figsize=(15, 7), 
                facecolor=(0.1, 0.1, 0.1)).add_subplot()
ax.tick_params(axis='x', colors='white')
ax.tick_params(axis='y', colors='white')

Как и в предыдущей статьи, данные будут собраны за июнь 2018-го года. Для этого определим две переменные для установки временного промежутка. Также сделаем «черточки» на оси абсцисс у графика.

start, end = '2018-06-01', '2018-06-30'

ax.set_xticks(range(1, 31))
ax.set_xticklabels([f'2018-06-{day}' for day in range(1, 31)], rotation=90)

Функции визуализации устроены следующим образом:

  • первым параметром является экземпляр класса DataSet ;
  • параметры start и end определяют временной промежуток ;
  • параметр intercept определяет отклонение на оси абсцисс (значением должно быть целое число)
  • у некоторых функций, которые соответствуют методам класса DataSet, у которых есть параметры помимо start и end, также присутствуют соответствующие параметры

Каждая из функций возвращает другую функцию, которая и выполняет манипуляцию с экземпляром класса Axis.

У этой функции первый параметр — экземпляр класса Axis, а второй — вид графика (может принимать значения 'plot', 'bar', и 'barh'). Также функция принимает параметры по типу label, color и т.д. для кастомизации. Рассмотрим практический пример:

visualize_new_members(dataset, 
                      start=start,
                      end=end,
                      intercept=1)(ax, kind='plot', label='New members')

visualize_views(dataset,
                start=start,
                end=end,
                intercept=1)(ax, kind='plot', label='Views')

visualize_visitors(dataset,
                   start=start,
                   end=end,
                   intercept=1)(ax, kind='plot', label='Visitors')

Осталось установить легенду для графика и сетку.

ax.legend(loc='best', fontsize=16)
ax.grid(True)

Посмотрим на результат :

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

Визуализация активности по половому признаку

Построение гистограммы мало чем отличается от фрагментов кода, указанных выше. Достаточно указать параметр kind='bar' в функции манипулирования объектом Axis.

import matplotlib.pyplot as plt
import seaborn as snb

from vkvisualization.dataset import DataSet
from vkvisualization.plotting import visualize_gender


dataset = DataSet.from_excel('group.xls')

snb.set_style('dark')
ax = plt.figure(figsize=(15, 7), facecolor=(0.1, 0.1, 0.1)).add_subplot()
ax.tick_params(axis='x', colors='white')
ax.tick_params(axis='y', colors='white')

start, end = '2018-06-01', '2018-06-30'

ax.set_xticks(range(1, 31))
ax.set_xticklabels([f'2018-06-{day}' for day in range(1, 31)], rotation=90)

visualize_gender(dataset,
                 start=start,
                 end=end,
                 intercept=1,
                 key='М')(ax, 
                          kind='bar', 
                          label='Men', 
                          color='blue')

visualize_gender(dataset, 
                 start=start,
                 end=end,
                 intercept=1,
                 key='Ж')(ax, 
                          kind='bar', 
                          label='Women', 
                          color='red')

ax.legend(loc='best', fontsize=16)
ax.grid(True)

plt.show()

Ну и, по традиции, результат :

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

Заключение

Сегодня мы закончили обзор библиотеки VKVisualization и рассмотрели два практических примера. С помощью этого инструмента вы также можете визуализировать и анализировать статистику активности своей группы ВКонтакте.

Советую прочитать предыдущую статью про VKVisualization, которая находится здесь.

А также подписывайтесь на группу ВКонтакте, Telegram и YouTube-канал. Там еще больше полезного и интересного для программистов.