0 Daumen
385 Aufrufe

Ich habe einen Dataframe, der täglich Neuigkeiten enthält. Ich versuche, die Intensität des Tagesgefühls zu analysieren : wenn das allgemeine Gefühl des Tages aus den Nachrichten positiv, negativ oder neutral ist. Hier ist der Datenrahmen df_news :

    Date    name

0  2017-10-20  Gucci debuts art installation at its Ginza sto...
1  2018-08-01  Gucci Joins Paris Fashion Week for Its Spring ...
2  2018-04-20  Gucci launches its new creative hub Gucci ArtL...
3  2017-10-20  Gucci to launch homeware line Gucci Decor - CP...
4  2017-12-07  GUCCI opens new store at Miami Design District...
5  2018-01-12  Gucci opens Gucci Garden in Florence - LUXUO
6  2018-02-26  GUCCI's wild experiment with the Fall Winter 2...
7  2018-08-09  Gucci Revamped London Flagship Store | The Imp...
8  2018-08-01  Alessandro Michele Announces new Gucci Home co...
9  2017-10-20  Before He Picks Up the CFDA’s International Aw...

Mit dem folgenden Code, den er verwendet, versuchte er, die Intensität des Gefühls zu erfassen SentimentIntensityAnalyzer von nltk.sentiment.vader :

from nltk.sentiment.vader import SentimentIntensityAnalyzer

import unicodedata
sid = SentimentIntensityAnalyzer()
for date, row in df_news.T.iteritems():
    try:
        sentence = unicodedata.normalize('NFKD', df_news.loc[date, 'name']).encode('ascii','ignore')
        #print((sentence))
        ss = sid.polarity_scores(str(sentence))
        df_news.set_value(date, 'compound', ss['compound'])
        df_news.set_value(date, 'neg', ss['neg'])
        df_news.set_value(date, 'neu', ss['neu'])
        df_news.set_value(date, 'pos', ss['pos'])
    except TypeError:
        print(df_news.loc[date, 'name'])
        print(date)



Jedoch bekomme ich für bestimmte Datumsangaben einen TypeError. Dank dem Try-Catch berücksichtigt er dies nicht und zieht mir folgende Tabelle:

    name    compound    neg neu pos

Date                    
2017-10-20  Gucci debuts art installation at its Ginza sto...             
2018-08-01  Gucci Joins Paris Fashion Week for Its Spring ...             
2018-04-20  Gucci launches its new creative hub Gucci ArtL...  0.4404  0  0.756  0.244
2017-10-20  Gucci to launch homeware line Gucci Decor - CP...             
2017-12-07  GUCCI opens new store at Miami Design District...  0  0  1  0
2018-01-12  Gucci opens Gucci Garden in Florence - LUXUO    0  0  1  0
2018-02-26  GUCCI's wild experiment with the Fall Winter 2...  0  0  1  0
2018-08-09  Gucci Revamped London Flagship Store | The Imp...  0.3182  0  0.602  0.398
2018-08-01  Alessandro Michele Announces new Gucci Home co...             
2017-10-20  Before He Picks Up the CFDA’s International Aw...

Ich eliminiere try catch, um zu verstehen, warum es fehlgeschlagen ist. Ich erhalte folgende Fehlermeldung:

    ---------------------------------------------------------------------------
    TypeError                                Traceback (most recent call last)
    <ipython-input-26-2e9dbfc62bce> in <module>
          4 for date, row in df_news.T.iteritems():
          5 #    try:
    ----> 6    sentence = unicodedata.normalize('NFKD', df_news.loc[date, 'name']).encode('ascii','ignore')
          7    #print((sentence))
          8    ss = sid.polarity_scores(str(sentence))
   
    TypeError: normalize() argument 2 must be str, not Series

Dann dachte ich, dass das Problem mit den Zeilen war, die keine Strin waren. Aber zum Beispiel beim ersten :

    >>>type(df_news['name'][0])
    str

von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community