Рубрики
Без рубрики

Построение твитов тепловых карт с твитами, Django и Arctype

Вы когда -нибудь хотели отслеживать свою деятельность твита в Twitter? Тогда эта статья для вас. Я люблю… Tagged с базой данных, Python, Twitter, Analytics.

Вы когда -нибудь хотели отслеживать свою деятельность твита в Twitter? Тогда эта статья для вас. Мне нравится, как ORM Django позволяет легко моделировать базу данных и изменить ее с помощью представлений (то есть функциональный контроль приложения).

В этом уроке мы будем изучать, как управлять твиттером, используя Официальный API Twitter и генерируйте тепловую карту из твитов, используя ArcType.   Чтобы достичь этого, мы будем отслеживать твиты некоторых очень популярных знаменитостей, чтобы создать тепловую карту, подобную той, что на изображении выше.

Чтобы полностью понять этот урок, у вас должно быть следующее:

  • Python 3.7 или новее.
  • Арктип
  • Основное понимание SQL.
  • Основное понимание Джанго.
  • Учетная запись разработчика Twitter.
  • Текстовый редактор.

Чтобы использовать официальный API Twitter, вам нужно настроить учетную запись разработчика Twitter. Перейти к https://developer.twitter.com и регистрация, если у вас нет. Чтобы зарегистрироваться, вам нужно будет предоставить подробную информацию о том, как вы хотите использовать свой доступ к API Twitter. После предоставления информации вам нужно будет дождаться проверки Twitter и включения вашей учетной записи.

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

На этом этапе вам необходимо создать проект, в котором можно разместить несколько приложений. Первый, Нажмите на Создать проект , затем дайте вашему проекту имя, вариант использования и описание.

Теперь вам нужно создать приложение. Для этого нажмите «Создать новое приложение» и предоставьте имя для вашего приложения.

После создания вашего приложения Twitter вы увидите страницу с ключами приложения, как видно на изображении ниже. Скопируйте и сохраните их где -нибудь, вы можете легко их получить.

Перейдите в меню Project, чтобы затем открыть свой проект. В разделе «Приложения» нажмите на значок ключа, затем генерируйте Токен доступа и доступ к секрету токен для вашего приложения в нижней части отображения страницы.

Нажмите на кнопку «Создать», затем скопируйте и сохраните токен Access и доступ к секретному токену, где вы можете легко их получить.

Чтобы создать приложение Django, запустите следующий код в вашей командной строке:

# creating the project

python manage.py startproject TweetsDaily

# change to the project directory

cd TweetsDaily

#creating the app

python manage.py startapp App

Теперь перейдите к настройки.py Файл и Приложение В список установленных приложений, как показано ниже:

INSTALLED_APPS = [

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    'App'

]

Далее, перейдите к urls.py Файл в каталоге проекта и редактируйте, как видно в коде ниже:

from django.contrib import admin

from django.urls import path, include

from django.conf import settings

urlpatterns = [

    path('admin/', admin.site.urls),

    path('', include("App.urls")),

]

Наконец, перейдите к Приложение Папка и создайте новый urls.py файл. Добавьте код Python ниже в файл и сохраните:

from django.conf import settings

from django.conf.urls.static import static

from django.urls import path, include

from . import views

app_name = "App"

urlpatterns = [

    path("", views.index, name="index"),

]

В приведенном выше коде мы определили URL -адрес индекса и подключили его к Индекс Просмотр, который мы определим в нашем views.py файл.

Здесь мы определим модели таблиц в модели.py Файл, как и в коде Python ниже:

from django.db import models

# Create your models here.

from django.db import models

# Create your models here.

class Tweets(models.Model):

    username= models.TextField()

    tweet_number = models.IntegerField()

    created_at = models.IntegerField()

    time = models.IntegerField()

    retweet_count= models.IntegerField()

    def __str__(self):

        return self.tweet_number

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

#making migrations

python manage.py makemigrations

#migrating the database

python manage.py migrate

views.py Файл в проекте Django – это то, где мы пишем основную логику для приложения.

Импорт необходимых библиотек

Скопируйте и вставьте код Python ниже в верхней части views.py Файл для импорта требуемых библиотек.

from django.shortcuts import render

from tweepy import OAuthHandler

from tweepy import API

from tweepy import Cursor

from datetime import datetime, date, time, timedelta

from collections import Counter

from django.http import HttpResponse

from . models import Tweets

Инициализация Tweepy

Скопируйте и вставьте код ниже в views.py Фад и предоставьте свои реальные ключи для инициализации Tweepy.

consumer_key="api_key"

consumer_secret="api_secret_key"

access_token="access_token"

access_token_secret="access_token_secret"

auth = OAuthHandler(consumer_key, consumer_secret)

auth.set_access_token(access_token, access_token_secret)

auth_api = API(auth,wait_on_rate_limit=True)

Нам также необходимо создать список имен пользователей всех знаменитостей, чьи твиты мы хотим проанализировать, как видно в коде ниже.

username=["Cristiano","BarackObama","rihanna","TheRock"]

Создание представления индекса

Скопируйте и вставьте код Python ниже в views.py Файл для создания представления индекса. Это представление запускается путем загрузки приложения в браузер:

def index(request):

    tweet_count = 0

    for i in username:

        try:

            for status in Cursor(auth_api.user_timeline, id=i).items():

                tweet_count = tweet_count + 1

                if status.created_at.year == 2021 and status.created_at.month == 5:

                    tweets_save= Tweets.objects.create(username=i,tweet_number=tweet_count,created_at=status.created_at.day,time=status.created_at.hour,retweet_count=status.retweet_count)

                    tweets_save.save()

        except:

            pass

    return HttpResponse('

Loaded Tweets Data

')

В приведенном выше коде мы делаем запрос на API Twitter, используя Tweepy, чтобы получить все твиты пользователя. Сейчас мы запускаем цикл через твиты пользователя, чтобы проверить все твиты, сделанные в мае 2021 года. Наконец, мы сохраним все твиты, и количество раз, когда подписчики пользователя ретвитнули их в базе данных. Затем приложения отправят Httpresponse «загруженные данные твитов» при приложении при запуске.

Чтобы запустить приложение, скопируйте и вставьте приведенные ниже команды в вашу команду

#running the application

python manage.py runserver

Если приложение работает, вы должны увидеть результат, как показано ниже.

Перейти к http://127.0.0.1:8000 Чтобы просмотреть запущенное приложение и запустить Индекс Просмотр, чтобы сохранить все данные твита в базе данных.

Чтобы использовать ArcType, нам нужно подключить нашу базу данных и настроить рабочее пространство. Для этого следуйте инструкциям ниже.

Шаг 1

Откройте ArcType, нажмите «У меня есть существующая база данных» и выберите тип базы данных. Для этого урока мы используем MySQL.

Шаг 2

Предоставьте необходимую информацию для базы данных и нажмите Сохранить Анкет

Шаг 3

Теперь вы должны увидеть базу данных в ArcType. Затем перейдите к таблицу твитов. У вас должно быть что -то похожее на изображение ниже.

В настоящее время у нас есть несколько данных твитов за май в 2021 году, сохранившиеся в таблице твитов. Чтобы создать тепловую карту данных, нам нужно подвести итог подсчета ретвитов для твитов, созданных каждый день в мае месяца, и группировать все твиты, которые последователи пользователя ретвитировали датой и именем пользователя.   Кроме того, поскольку Барак Обама и Рианна являются двумя из самых популярных людей в Твиттере, мы должны учитывать размер следующих последствий каждой учетной записи, чтобы получить более четкую картину в наших данных.

Чтобы достичь этого, нажмите на Новый запрос Кнопка, затем сохраните и запустите запрос SQL ниже:

SELECT

  username,

  (

    CASE

      WHEN (username = 'rihanna') 

              THEN (SUM(retweet_count) / 102300000 * 100)

      WHEN (username = 'BarackObama') 

              THEN (SUM(retweet_count) / 129600000 * 100)

      WHEN (username = 'TheRock') 

              THEN (SUM(retweet_count) / 15200000 * 100)

      WHEN (username = 'Cristiano') 

              THEN (SUM(retweet_count) / 92400000 * 100)

    END

  ) AS tweet_heat,

  CONCAT('May ', created_at)

FROM

  app_tweets

GROUP BY

  created_at,

  username

ORDER BY

  created_at ASC

Запуск приведенного выше кода предоставит вам данные, как показано на изображении ниже.

Чтобы создать диаграмму тепловой карты для данных твита выше, следуйте инструкциям ниже:

Создайте новую панель аркту

Создайте новую вкладку, затем выберите Новая приборная панель Кнопка в верхнем меню. Затем нажмите на + Добавить Кнопка, затем выберите «Диаграмма».

Получить данные таблицы из сохраненного запроса

Нажмите на Выберите данные диаграммы На пустой панели приборной панели.

Отредактируйте заголовок и выберите запрос, который вы сохранили выше (в моем случае, Tweetsdailystats) в качестве источника данных.

Назначить столбцы результатов для нагревания оси карты

Выберите «Тепловая карта» как тип диаграммы, затем перетащите данные, расположенные на рисунке ниже.

Настройка тепловой карты Arctype

Наконец, перейдите на вкладку «Дополнительно», затем введите «ретвиты в день» в качестве значения оси Y.

После выполнения приведенных выше инструкций у вас должна быть тепловая карта, похожая на то, что на изображении ниже.

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

Визуализация твитов пользователей

Создайте новый запрос с запросом SQL ниже. Затем беги и сохраните запрос.

WITH alldates AS(

  SELECT

    distinct created_at

  FROM

    app_tweets

  ORDER BY

    1

),

alltimes AS(

  SELECT

    distinct time

  FROM

    app_tweets

  ORDER BY

    1

),

timetable AS(

  SELECT

    *

  FROM

    alldates,

    alltimes

  ORDER BY

    1

)

SELECT

  CONCAT('May ',t.created_at) AS day,

  CONCAT(t.time,':00') AS hour,

  COUNT(a.tweet_number) as tweets

FROM

  timetable t

LEFT OUTER JOIN app_tweets a ON (a.username = 'BarackObama' AND a.created_at = t.created_at AND a.time = t.time)

GROUP BY t.time, t.created_at

ORDER BY t.created_at, t.time

Создайте новую диаграмму тепловой карты, используя данные запроса, которые вы сохранили выше. Затем настройте тепловую карту, чтобы иметь день Поле в оси X, час в оси Y, и твиты в оси Z.

Карта тепла отображается на каждом твите, сделанном одной из знаменитостей (то есть Бараком Обамой) в мае 2021 года, сгруппированного к дню и часу дня, когда пользователь создал твит.

Запрос на ретвиты пользователя Twitter

Создайте новый запрос с запросом SQL ниже. Затем беги и сохраните запрос.

WITH alldates AS(

  SELECT

    distinct created_at

  FROM

    app_tweets

  ORDER BY

    1

),

alltimes AS(

  SELECT

    distinct time

  FROM

    app_tweets

  ORDER BY

    1

),

timetable AS(

  SELECT

    *

  FROM

    alldates,

    alltimes

  ORDER BY

    1

)

SELECT

  CONCAT('May ',t.created_at) AS day,

  CONCAT(t.time,':00') AS hour,

  SUM(a.retweet_count) as retweets

FROM

  timetable t

LEFT OUTER JOIN app_tweets a ON (a.username = 'BarackObama' AND a.created_at = t.created_at AND a.time = t.time)

GROUP BY t.time, t.created_at

ORDER BY t.created_at, t.time

Создайте новую диаграмму тепловой карты, используя данные запроса, которые вы сохранили выше. Затем настройте тепловую карту, чтобы иметь день Поле в оси X, час в оси Y, и ретвиты в оси Z.

На приведенной выше карте тепла отображается деятельность ретвитов для каждого твита, сделанного одним из знаменитостей (то есть, Барака Обама) в мае 2021 года, сгруппированного с днем и часом дня, который пользователь создал твит.

Визуализируйте соотношение твитов-реттизок

Создайте новый запрос с запросом SQL ниже. Затем бегите и сохраните запрос:

WITH alldates AS(

  SELECT

    distinct created_at

  FROM

    app_tweets

  ORDER BY

    1

),

alltimes AS(

  SELECT

    distinct time

  FROM

    app_tweets

  ORDER BY

    1

),

timetable AS(

  SELECT

    *

  FROM

    alldates,

    alltimes

  ORDER BY

    1

)

SELECT

  CONCAT('May ',t.created_at) AS day,

  CONCAT(t.time,':00') AS hour,

  CAST((SUM(a.retweet_count)/COUNT(tweet_number)) AS UNSIGNED) as ratio

FROM

  timetable t

LEFT OUTER JOIN app_tweets a ON (a.username = 'BarackObama' AND a.created_at = t.created_at AND a.time = t.time)

GROUP BY t.time, t.created_at

ORDER BY t.created_at, t.time

Создайте новую диаграмму тепловой карты, используя данные запроса, которые вы сохранили выше. Затем настройте тепловую карту, чтобы иметь день Поле в оси X, час в оси Y, и Соотношение в оси Z.

В этой статье вы научились отслеживать данные твита с Tweepy и визуализировать их как тепловую карту на приборной панели с ArcType Анкет Кроме того, вы увидели, как легко запустить запросы SQL в вашей базе данных, используя ArcType, и получили возможность изучить некоторые из основных функций и функций.

Исходный код приложения приборной панели и ссылки на приборную панель ArcType SQL доступны на GitHub . Если у вас есть какие -либо вопросы, не стесняйтесь обращаться ко мне в Twitter: @ LordChuks3 Анкет

Оригинал: “https://dev.to/chukslord1/building-a-tweets-heat-map-charts-with-tweepy-django-and-arctype-12i9”