我在进行情绪分析时遇到 TypeError,我该如何解决这个问题?

I get a TypeError while doing sentiment analysis, how can I fix this issue?

我正在对比特币新闻进行情绪分析。在我编码的过程中,出现了一个 TypeError 问题。希望您能帮助我,在此先感谢您!

from newsapi.newsapi_client import NewsApiClient
from textblob import TextBlob
import pandas as pd
import numpy as np
from bs4 import BeautifulSoup
import datetime
from datetime import time
import csv
from dateutil import parser

api = NewsApiClient(api_key='my key')

all_articles = api.get_everything(q='bitcoin',
                                      sources='bbc-news,the-verge,financial-times,metro,business-insider,reuters,bloomberg,cnbc,cbc-news,fortune,crypto-coins-news',
                                      domains='bbc.co.uk,techcrunch.com',
                                      from_param='2019-10-20',
                                      to='2019-11-19',
                                      language='en',
                                      sort_by='relevancy',
                                      page_size=100)

news= pd.DataFrame(all_articles['articles'])

news['polarity'] = news.apply(lambda x: TextBlob(x['description']).sentiment.polarity, axis=1)
news['subjectivity'] = news.apply(lambda x: TextBlob(x['description']).sentiment.subjectivity, axis=1)
news['date']= news.apply(lambda x: parser.parse(x['publishedAt']).strftime('%Y.%m.%d'), axis=1)
news['time']= news.apply(lambda x: parser.parse(x['publishedAt']).strftime('%H:%M'), axis=1)

然后出现这个TypeError: imgur_link

您需要调试代码。您正在传递 None 值。

x['description'] 可能有一些 None 值。

news['polarity'] = news.apply(lambda x: TextBlob(x['description']).sentiment.polarity, axis=1)

确保在您的预处理阶段您的 dataframe

中没有任何 NoneNaN

正如 @Hayat 正确指出的那样,description 列中的某些行具有导致异常的 None 值。有四个这样的行,见下面的截图。

您应该删除此类行并在具有正确数据的行上进行操作。您可以使用

过滤 description 列中具有 None 的行
news_filtered = news[news['description'].notnull()]
news_filtered['polarity'] = news_filtered.apply(lambda x: TextBlob(x['description']).sentiment.polarity, axis=1)

您可能需要对其他列重复上述操作。