基于Python的情感分析项目--《流浪地球》
获取项目相关数据,请移步至知乎,搜索并关注“情报学小硕”私信获取
https://www.zhihu.com/people/ban-tang-zhu-yi-51
一、模块的导入及数据读取
import pandas as pd
import numpy as np
import seaborn as sns
import itertools
import re
import jieba
import matplotlib.pyplot as plt
import jieba.analyse
from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
from snownlp import SnowNLP
import plotly.express as px
from sklearn.metrics import classification_report,confusion_matrix,precision_score
from gensim import corpora, models
from gensim.models import Word2Vec
from sklearn.cluster import KMeans
# 显示cell运行时长
%load_ext klab-autotime
#警告信息的处理(忽略)
import warnings
warnings.filterwarnings('ignore')
#设置行列的显示(以查看到全部的数据行和列)
pd.set_option('display.width',50000)
pd.set_option('display.max_colwidth',5000)
pd.set_option('display.max_columns',None)
pd.set_option('display.max_rows',None)
df=pd.read_csv('./流浪地球.csv')
df.head()
二、数据预处理
1.地区数据预处理
df['citys']=df['citys'].apply(lambda x: x[2:-2] if len(x)>2 else '-1')
##此函数用于判断结果为中文还是英文(通用性函数)
def city_split(x):
x=str(x)
if x >= u'一' and x <= u'龥':
return x[:2]
else:
return 'outside'
df['province']=df['citys'].apply(city_split)
df['province']=df['province'].apply(lambda x:'黑龙江' if '讷河' in x else ('黑龙江' if '黑龙' in x else x))
2.评分数据预处理
df['scores']=df['scores'].apply(lambda x: x[2:-2] if len(x)>2 else '-1').astype('int')
3.评论数据预处理
df['evaluate']=df['evaluate'].apply(lambda x : x if len(x)==2 else 'Unkonw')
df['evaluate'].value_counts()
4.时间数据预处理
#计算截止最早的日期距离时间多久
date=pd.to_datetime(df['times'])-pd.to_datetime("2019-01-11")
df['days_of_year']=[i.days for i in date]
del date
df['date']=pd.to_datetime(df['times']).apply(lambda x:x.strftime("%Y-%m-%d"))
df['times'] = pd.to_datetime(df['times'])
df['week']=df['times'].apply(lambda x: x.week)
df['day'] = df['times'].apply(lambda x: x.day)
df['hour'] = df['times'].apply(lambda x: x.hour)
5.重复值及无用数据清理
#删除无用数据列
df.drop(['labs','user_info','times'],axis=1,inplace=True)
#查看重复量
print('重复数据量:',df.shape[0]-df.drop_duplicates().shape[0])
#删除重复值
df=df.drop_duplicates()
三、数据可视化
1. 地区分布可视化(地图)
#对各地的数据进行分组汇总
df_f=df['province'].value_counts().rename_axis('province').reset_index(name='count')
data=[]
#处理成画图时可识别的数据类型
for i in range(len(df_f)):
if df_f.iloc[i,0]!='outside'