J'en ai marre de Python, alors j'ai essayé d'analyser les données avec nehan (je veux aller vivre même avec Corona) -Partie 2)

salutation

Bonjour, c'est sunfish. ** "Twtter x Corona" ** Nous continuerons à analyser. Partie 1 a analysé morphologiquement le texte du tweet et a même calculé le nombre de mots fréquents qui apparaissent quotidiennement.

↓ Sélection de mots fréquemment utilisés 27 スクリーンショット 2020-10-05 17.53.26.png

Rechercher des mots de tendance haut / bas à partir des données Twitter

Plus de six mois se sont écoulés depuis que le virus corona est devenu un problème social. Suivons du tweet ce qui monte chez les gens et ce qui est oublié. Dans la deuxième partie, nous utiliserons l'analyse de régression pour trouver des mots avec des tendances à la hausse / à la baisse.

Les données

Nous utiliserons les données sur le nombre d'occurrences par jour et mot créé dans la première partie. ↓ Données スクリーンショット 2020-10-12 18.37.23.png ↓ Lorsque visualisé スクリーンショット 2020-10-05 17.56.28.png

Se préparer à effectuer une analyse de régression

Au fil des jours, j'aimerais trouver les mots qui apparaissent plus ou moins. En d'autres termes

y:Nombre de tweets pour un mot spécifique=a\times x:Nombre de jours écoulés+b

Dérivons une telle équation de régression et observons la pente «a» et le coefficient de corrélation. En tant qu'opération de données, il est nécessaire de calculer les "jours écoulés" à partir des données de date. En guise d'approche, attribuez les numéros de série, mot par mot et la date dans l'ordre croissant.

from scipy.spatial.distance import cdist
import pandas as pd
import statsmodels.api as sm

port_23 = port_22.copy()
model_params = {'method': 'first', 'ascending': True}
port_23[['Created_At']] = pd.to_datetime(port_23[['Created_At']])
port_23['index'] = port_23.groupby(['mot'])[['Created_At']].rank(**model_params)
port_23[['Created_At']] = port_23[['Created_At']].map(lambda x: x.date())

スクリーンショット 2020-10-12 18.53.53.png

↓ Faites attention à l'axe des x. Maintenant que nous avons le nombre de jours écoulés, nous sommes prêts pour l'analyse de régression. スクリーンショット 2020-10-12 18.57.13.png

Effectuer une analyse de régression. Mot par mot

Nous observerons comment les 24 mots sélectionnés changent en fonction du nombre de jours écoulés à partir des résultats de l'analyse de régression. Quand j'essaye de l'écrire en python, il est difficile de faire une boucle pour chaque mot.

group_keys = ['mot']
X_columns = ['index']
Y_column = 'compter'
groups = port_23.groupby(group_keys)
models = {}
summaries = {}

def corr_xy(X, y):
    """Trouvez le coefficient de corrélation entre la variable objective et la variable explicative"""
    X_label = X.columns.tolist()
    X = X.T.values
    y = y.values.reshape(1, -1)
    corr = 1 - cdist(X, y, metric='correlation')
    corr = pd.DataFrame(corr, columns=['Coefficient de corrélation avec la variable objective'])
    corr['Variable explicative'] = X_label
    return corr

for i, g in groups:
    X = g[X_columns]
    Y = g[Y_column].squeeze()
    corr = corr_xy(X, Y)
    try:
        model = sm.OLS(y, sm.add_constant(X, has_constant='add')).fit()
        model.X = X.columns
        models[i] = model
        summary = pd.DataFrame(
            {
                'Variable explicative': X.columns,
                'coefficient': np.round(model.params, 5),
                'écart-type': np.round(model.bse, 5),
                'valeur t': np.round(model.tvalues, 5),
                'Pr(>|t|)': np.round(model.pvalues, 5)
            },
            columns=['Variable explicative', 'coefficient', 'écart-type', 'valeur t', 'Pr(>|t|)'])
        summary = summary.merge(corr, on='Variable explicative', how='left')
        summaries[i] = summary
    except:
        continue

res = []
for key, value in summaries.items():
    value[group_keys] = key
    res.append(value)

concat_summary = pd.concat(res, ignore_index=True)
port_24 = models
port_25 = concat_summary

↓ Avec nehan, vous pouvez éviter le traitement de boucle gênant avec l'option Créer un modèle pour chaque groupe. スクリーンショット 2020-10-12 20.04.14.png

Et nous avons obtenu le résultat de l'analyse de régression pour chaque mot. «Variable explicative = const», est une information de section. スクリーンショット 2020-10-12 19.13.16.png

Concentrez-vous sur les mots de tendance haut / bas

Il y a différentes interprétations, mais ici

Extrayez les mots au fur et à mesure qu'ils sont corrélés.

port_27 = port_25[(port_25['Coefficient de corrélation avec la variable objective'] <= -0.4) |
                  (port_25['Coefficient de corrélation avec la variable objective'] >= 0.4)]

スクリーンショット 2020-10-12 19.14.51.png

Examinons de plus près le mot information. スクリーンショット 2020-10-12 19.28.43.png

Observez les résultats

Mot de tendance haussière

Mot de tendance baissière

↓ ** Live **, transition par nombre de jours スクリーンショット 2020-10-12 19.29.58.png ↓ ** Gouvernement **, changement par nombre de jours スクリーンショット 2020-10-12 19.30.49.png

Résumé

La menace de Corona n'est pas partie, mais le nombre de mots que nous voyons souvent dans les nouvelles pendant les périodes critiques a diminué, et le nombre de mots qui ont été fortement influencés par la retenue, tels que les événements et les performances en direct, a augmenté. Vous pouvez voir comment cela se passe. Bien sûr, cela ne peut pas être considéré à lui seul comme ** "tout le monde veut aller vivre!" **, mais je voudrais conclure ce thème en tenant compte des données à ce jour.

Nous espérons que vous comprendrez l'attrait de nehan, un outil d'analyse sans programmation qui peut être lié à diverses analyses et visualisations à partir de données prétraitées.

Recommended Posts

J'en ai marre de Python, alors j'ai essayé d'analyser les données avec nehan (je veux aller vivre même avec Corona) -Partie 2)
J'en ai marre de Python, alors j'ai essayé d'analyser les données avec nehan (je veux aller vivre même avec Corona) -Partie 1)
J'étais fatigué de Python, alors j'ai analysé les données avec nehan (lié à Corona, est-ce que ce mot est maintenant?)
J'ai essayé d'obtenir et d'analyser les données statistiques de la nouvelle Corona avec Python: données de l'Université John's Hopkins
J'ai essayé de trouver l'entropie de l'image avec python
Je veux pouvoir analyser des données avec Python (partie 3)
Je veux pouvoir analyser des données avec Python (partie 1)
Je veux pouvoir analyser des données avec Python (partie 4)
Je veux pouvoir analyser des données avec Python (partie 2)
J'ai essayé d'analyser les données du tournoi de football de la Coupe du monde de football en Russie avec l'action de football
Je veux sortir le début du mois prochain avec Python
[Pandas] J'ai essayé d'analyser les données de ventes avec Python [Pour les débutants]
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python
Je veux analyser les journaux avec Python
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
(Python) J'ai essayé d'analyser 1 million de mains ~ J'ai essayé d'estimer le nombre d'AA ~
J'ai essayé de vérifier et d'analyser l'accélération de Python par Cython
J'ai essayé d'analyser la négativité de Nono Morikubo. [Comparer avec Posipa]
J'ai essayé de rationaliser le rôle standard des nouveaux employés avec Python
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
J'ai essayé de sauvegarder les données avec discorde
J'ai essayé d'obtenir des données CloudWatch avec Python
J'ai essayé de visualiser facilement les tweets de JAWS DAYS 2017 avec Python + ELK
J'ai essayé d'envoyer automatiquement la littérature du nouveau virus corona à LINE avec Python
[Python & SQLite] J'ai analysé la valeur attendue d'une course avec des chevaux dans la fourchette 1x win ①
☆ M. Anzai… !! Je veux analyser les données …… Partie 1 Préparation des données ☆ Analysons les statistiques des joueurs NBA (résultats) avec Python. basketball
Je suis un amateur le 14e jour de python, mais je veux essayer l'apprentissage automatique avec scicit-learn
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé de résoudre Soma Cube avec python
Je veux hériter de l'arrière avec la classe de données python
J'ai essayé de résoudre le problème avec Python Vol.1
J'ai essayé de résumer les opérations de chaîne de Python
J'ai essayé de visualiser les données de course du jeu de course (Assetto Corsa) avec Plotly
J'ai essayé de comparer la vitesse de traitement avec dplyr de R et pandas de Python
Le 15e temps réel hors ligne, j'ai essayé de résoudre le problème de l'écriture avec python
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
J'ai essayé de simuler la propagation de l'infection avec Python
J'ai essayé d'analyser les émotions de tout le roman "Weather Child" ☔️
J'ai essayé de créer diverses "données factices" avec Python faker
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
[Python] Je souhaite utiliser l'option -h avec argparse
[Python] J'ai essayé de visualiser des tweets sur Corona avec WordCloud
[Python] J'ai essayé de visualiser la relation de suivi de Twitter
Je veux connaître la nature de Python et pip
[Python] J'ai essayé de collecter des données en utilisant l'API de wikipedia
J'ai essayé d'afficher les données du groupe de points DB de la préfecture de Shizuoka avec Vue + Leaflet
J'ai essayé de résoudre le problème de F02 comment écrire en temps réel hors ligne avec Python
J'ai écrit un doctest dans "J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python"
J'ai essayé de gratter le classement du calendrier de l'avent Qiita avec Python
J'ai essayé de résoudre l'édition du débutant du livre des fourmis avec python
Je veux connaître la météo avec LINE bot avec Heroku + Python
J'ai essayé d'automatiser l'arrosage du pot avec Raspberry Pi
Je souhaite extraire une URL arbitraire de la chaîne de caractères de la source html avec python
Je souhaite améliorer l'efficacité avec Python même dans le système expérimental (5) Je souhaite envoyer une notification à la fin de l'expérience avec l'API slack
J'ai essayé de créer une liste de nombres premiers avec python
J'ai essayé de vérifier l'identification du locuteur par l'API de reconnaissance du locuteur d'Azure Cognitive Services avec Python. # 1