Добрый день, уважаемые читатели. В предыдущей статье мы рассмотрели мини-библиотеку для анализа данных групп ВКонтакте. Однако библиотека недаром называется 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-канал. Там еще больше полезного и интересного для программистов.