Ich habe Python satt, also habe ich versucht, die Daten mit nehan zu analysieren (ich möchte sogar mit Corona live gehen) - Teil 2)

Gruß

Hallo, das ist Sunfish. ** "Twtter x Corona" ** Wir werden weiter analysieren. Teil 1 analysierte den Tweet-Text morphologisch und berechnete sogar die Anzahl der häufig vorkommenden Wörter, die täglich erscheinen.

↓ Ausgewählte häufig verwendete Wörter 27 スクリーンショット 2020-10-05 17.53.26.png

Suchen Sie nach Auf- / Ab-Trendwörtern aus Twitter-Daten

Mehr als ein halbes Jahr ist vergangen, seit das Koronavirus zu einem sozialen Problem wurde. Folgen wir dem Tweet, was in den Menschen aufsteigt und was vergessen wird. Im zweiten Teil werden wir die Regressionsanalyse verwenden, um Wörter mit Auf- / Ab-Trends zu finden.

Daten

Wir werden die Daten zur Anzahl der Vorkommen nach Tag und Wort verwenden, die im ersten Teil erstellt wurden. ↓ Daten スクリーンショット 2020-10-12 18.37.23.png ↓ Wenn visualisiert スクリーンショット 2020-10-05 17.56.28.png

Vorbereitung der Regressionsanalyse

Im Laufe der Tage möchte ich die Wörter finden, die mehr oder weniger erscheinen. Mit anderen Worten

y:Anzahl der Tweets für ein bestimmtes Wort=a\times x:Anzahl der verstrichenen Tage+b

Lassen Sie uns eine solche Regressionsgleichung ableiten und die Steigung "a" und den Korrelationskoeffizienten beobachten. Als Datenoperation ist es notwendig, die "verstrichenen Tage" aus den Datumsdaten zu berechnen. Weisen Sie als Ansatz Seriennummern, Wort für Wort und Datum in aufsteigender Reihenfolge zu.

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(['Wort'])[['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

↓ Achten Sie auf die x-Achse. Nachdem wir die Anzahl der verstrichenen Tage erreicht haben, sind wir bereit für die Regressionsanalyse. スクリーンショット 2020-10-12 18.57.13.png

Führen Sie eine Regressionsanalyse durch. Wort für Wort

Wir werden beobachten, wie sich die ausgewählten 24 Wörter entsprechend der Anzahl der Tage ändern, die seit den Ergebnissen der Regressionsanalyse vergangen sind. Wenn ich versuche, es in Python zu schreiben, ist es schwierig, für jedes Wort eine Schleife zu erstellen.

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

def corr_xy(X, y):
    """Finden Sie den Korrelationskoeffizienten zwischen der Zielvariablen und der erklärenden Variablen"""
    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=['Korrelationskoeffizient mit Zielvariable'])
    corr['Erklärende Variable'] = 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(
            {
                'Erklärende Variable': X.columns,
                'Koeffizient': np.round(model.params, 5),
                'Standardabweichung': np.round(model.bse, 5),
                't Wert': np.round(model.tvalues, 5),
                'Pr(>|t|)': np.round(model.pvalues, 5)
            },
            columns=['Erklärende Variable', 'Koeffizient', 'Standardabweichung', 't Wert', 'Pr(>|t|)'])
        summary = summary.merge(corr, on='Erklärende Variable', 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

↓ Mit nehan können Sie die mühsame Schleifenverarbeitung mit der Option "Modell für jede Gruppe erstellen" vermeiden. スクリーンショット 2020-10-12 20.04.14.png

Und wir haben das Ergebnis der Regressionsanalyse für jedes Wort erhalten. Erklärende Variable = const ist eine Abschnittsinformation. スクリーンショット 2020-10-12 19.13.16.png

Konzentrieren Sie sich auf Auf- / Ab-Trendwörter

Es gibt verschiedene Interpretationen, aber hier

Extrahieren Sie die Wörter, wenn sie korreliert sind.

port_27 = port_25[(port_25['Korrelationskoeffizient mit Zielvariable'] <= -0.4) |
                  (port_25['Korrelationskoeffizient mit Zielvariable'] >= 0.4)]

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

Schauen wir uns die Wortinformationen genauer an. スクリーンショット 2020-10-12 19.28.43.png

Ergebnisse beobachten

Aufwärtstrend Wort

Abwärtstrendwort

↓ ** Live **, Übergang nach Anzahl der Tage スクリーンショット 2020-10-12 19.29.58.png ↓ ** Regierung **, Änderung nach Anzahl der Tage スクリーンショット 2020-10-12 19.30.49.png

Zusammenfassung

Die Bedrohung durch Corona ist nicht verschwunden, aber die Anzahl der Wörter, die wir in kritischen Zeiten häufig in den Nachrichten sehen, hat abgenommen, und die Anzahl der Wörter, die stark von Selbstbeherrschung beeinflusst wurden, wie Ereignisse und Live-Auftritte, hat zugenommen. Sie können sehen, wie es geht. Natürlich kann dies allein nicht als "jeder will live gehen!" ** bezeichnet werden, aber ich möchte dieses Thema als eine Überlegung abschließen, die auf den bisherigen Daten basiert.

Wir hoffen, dass Sie die Attraktivität von nehan verstehen, einem programmierfreien Analysetool, das mit verschiedenen Analysen und Visualisierungen aus vorverarbeiteten Daten verknüpft werden kann.

Recommended Posts

Ich habe Python satt, also habe ich versucht, die Daten mit nehan zu analysieren (ich möchte sogar mit Corona live gehen) - Teil 2)
Ich habe Python satt, also habe ich versucht, die Daten mit nehan zu analysieren (ich möchte sogar mit Corona live gehen) - Teil 1)
Ich hatte Python satt und analysierte die Daten mit Nehan (Corona verwandt, ist das Wort jetzt?)
Ich habe versucht, die statistischen Daten der neuen Corona mit Python abzurufen und zu analysieren: Daten der Johns Hopkins University
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich möchte Daten mit Python analysieren können (Teil 3)
Ich möchte Daten mit Python analysieren können (Teil 1)
Ich möchte Daten mit Python analysieren können (Teil 4)
Ich möchte Daten mit Python analysieren können (Teil 2)
Ich habe versucht, die Daten des Fußballturniers der FIFA Fussball-Weltmeisterschaft Russland mit Fußball zu analysieren
Ich möchte den Anfang des nächsten Monats mit Python ausgeben
[Pandas] Ich habe versucht, Verkaufsdaten mit Python zu analysieren. [Für Anfänger]
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
Ich möchte Protokolle mit Python analysieren
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
(Python) Ich habe versucht, 1 Million Hände zu analysieren ~ Ich habe versucht, die Anzahl der AA ~ zu schätzen
Ich habe versucht, die Beschleunigung von Python durch Cython zu verifizieren und zu analysieren
Ich habe versucht, die Negativität von Nono Morikubo zu analysieren. [Vergleiche mit Posipa]
Ich habe versucht, die Standardrolle neuer Mitarbeiter mit Python zu optimieren
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Ich habe versucht, die Tweets von JAWS DAYS 2017 mit Python + ELK einfach zu visualisieren
Ich habe versucht, die Literatur des neuen Corona-Virus mit Python automatisch an LINE zu senden
[Python & SQLite] Ich habe den erwarteten Wert eines Rennens mit Pferden im 1x-Gewinnbereich ① analysiert
☆ Mr. Anzai… !! Ich möchte die Daten analysieren …… Teil 1 Datenvorbereitung ☆ Analysieren wir die NBA-Spielerstatistiken (Ergebnisse) mit Python. Basketball
Ich bin ein Amateur am 14. Tag von Python, aber ich möchte maschinelles Lernen mit Scicit-Learn ausprobieren
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
Ich möchte mit Python-Datenklasse nach hinten erben
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe versucht, die Laufdaten des Rennspiels (Assetto Corsa) mit Plotly zu visualisieren
Ich habe versucht, die Verarbeitungsgeschwindigkeit mit dplyr von R und pandas von Python zu vergleichen
Beim 15. Offline-Echtzeitversuch habe ich versucht, das Problem des Schreibens mit Python zu lösen
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
Ich habe versucht, die Emotionen des gesamten Romans "Wetterkind" zu analysieren
Ich habe versucht, mit Python faker verschiedene "Dummy-Daten" zu erstellen
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
[Python] Ich möchte die Option -h mit argparse verwenden
[Python] Ich habe versucht, Tweets über Corona mit WordCloud zu visualisieren
[Python] Ich habe versucht, die folgende Beziehung von Twitter zu visualisieren
Ich möchte die Natur von Python und Pip kennenlernen
[Python] Ich habe versucht, Daten mit der API von Wikipedia zu sammeln
Ich habe versucht, die Punktgruppendaten-DB der Präfektur Shizuoka mit Vue + Leaflet anzuzeigen
Ich habe versucht, das Problem von F02 zu lösen, wie man mit Python offline in Echtzeit schreibt
Ich schrieb einen Test in "Ich habe versucht, die Wahrscheinlichkeit eines Bingospiels mit Python zu simulieren".
Ich habe versucht, das Ranking des Qiita-Adventskalenders mit Python zu kratzen
Ich habe versucht, die Anfängerausgabe des Ameisenbuchs mit Python zu lösen
Ich möchte das Wetter mit LINE bot feat.Heroku + Python wissen
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
Ich möchte mit Python eine beliebige URL aus der Zeichenfolge der HTML-Quelle extrahieren
Ich möchte die Effizienz mit Python auch im experimentellen System verbessern. (5) Ich möchte am Ende des Experiments eine Benachrichtigung mit der Slack-API senden
Ich habe versucht, mit Python eine Liste von Primzahlen zu erstellen
Ich habe versucht, die Sprecheridentifikation mithilfe der Sprechererkennungs-API von Azure Cognitive Services mit Python zu überprüfen. # 1