我在进行情绪分析时遇到 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
中没有任何 None
或 NaN
值
正如 @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)
您可能需要对其他列重复上述操作。
我正在对比特币新闻进行情绪分析。在我编码的过程中,出现了一个 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
None
或 NaN
值
正如 @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)
您可能需要对其他列重复上述操作。