Анализ данных групп во ВКонтакте

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

Поэтому было реализован маленький пакет VKVisualization на языке Python, который вы можете использовать. Скачайте его с репозитория GitHub и инициализируйте путём запуске setup.py.

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

DataSet class

Главным классом модуля является DataSet. Чтобы импортировать его в своё пространство имён, воспользуемся следующей инструкцией:

from vkvisualization.dataset import DataSet

Класс является наследуемым от pandas.DataFrame, так что все операции, возможные по отношению к таблице Pandas, применимы и к классу DataSet.

В качестве примера я взял файл со статистикой с одной группы ВКонтакте и сохранил его под названием 'group.xls' в текущем каталоге. Чтобы создать экземпляр класса DataSet со статистикой из этого файла, воспользуемся class-method DataSet.from_excel(), передав туда путь к файлу.

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

В этой статье не будут рассмотрены все категории, указаны в файле со статистикой, их описание вы сможете найти в description GitHub репозитория.

Первое, что стоит рассмотреть — временной отрезок, за который приведена статистика. Для этого мы можем использовать DataSet.start_date() и DataSet.end_date().

print(dataset.start_date(), dataset.end_date())
-----------------------------------------------
2017-12-28T00:00:00.000000 2019-12-06T00:00:00.000000

Как мы видим, статистика приведена с 28 декабря 2017-го года по шестое декабря 2019-го года.

Получение данных

Первой категорией, которую мы рассмотрим, будет кол-во просмотров на записях группы за один день. Для этого воспользуемся DataSet.views(start=None, end=None). В этом методе, как и во всех метода класса DataSet, отвечающих за получение данных, параметры start и end ограничивают временной промежуток. Если не указать параметр start, то данные будут выбраны с самого начала данных, а если не указать параметр end, то данные будут выбраны по самый конец файла. Приступим, выбирая данные за июнь 2018-го года.

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

Теперь получим показатели просмотров записей :

views = dataset.views(start=start, end=end)

Просмотрим, что у нас получилось :

[ 31 9 0 356 191 923 1053 2274 1565 1488 1982 1478 954 821
917 984 924 1068 2523 2105 1435 1179 917 842 896 924 1046 1048
1111 1151]

Все методы возвращают объект типа np.ndarray.

Теперь рассмотрим получение данных категории «Страна».

countries = dataset.country('Россия',
                            start=start,
                            end=end)

Дабы узнать список всех возможных значений для параметра country, используем метод DataSet.available_countries().

available_countries = dataset.available_countries()

Точно такие же операции применимы к категории «Город».

cities = dataset.city('Москва',
                       start=start,
                       end=end)

available_cities = dataset.available_cities()

Заключение

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

Если помимо анализа данных вас интересует линейная алгебра, советую прочитать статью «Линейная алгебра — программируем с NumPy».

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