码迷,mamicode.com
首页 > 其他好文 > 详细

nlp 电商评论处理 -史诗级长文

时间:2019-05-07 21:28:36      阅读:312      评论:0      收藏:0      [点我收藏+]

标签:pandas   相关性   替换   als   das   iss   sns   小数   san   


#
auther bioamin #nlp of 电商评论 #-*- conding = utf-8 -*- import numpy as np import pandas as pd #画图的包 import matplotlib.pyplot as plt import seaborn as sns plt.rcParams[font.sans-serif]=[SimHei] plt.rcParams[axes.unicode_minus]=False #忽略警告 import warnings warnings.filterwarnings("ignore") import missingno new_cloumname = {"Clothing ID":"服装id","Age":"年龄","Title":"评论者标题", "Review Text":"评论内容","Rating":"分数","Recommended IND":"是否推荐", "Positive Feedback Count":"赞同该评论的人数", "Division Name":"产品高级分类", "Department Name":"产品大类", "Class Name":"产品的二级分类"} #读取数据并且利用 rename() 函数输入字典替换列名 df = pd.read_csv("Comment.csv") df=df.rename(columns = new_cloumname) df.head()

技术图片

missingno.matrix(df,fontsize = 25)

技术图片

col = "评论内容"
#删除缺失值
df = df.dropna(subset=[col])
missingno.matrix(df,fontsize = 25)

技术图片

#增加新特征
df["评论字数"]=df["评论内容"].astype(str).apply(len)
df.head()

技术图片

#评分和字数 数据可视化
#先sns.FacetGrid画出轮廓
#然后用map填充内容
g = sns.FacetGrid(data = df,col = "分数")
g.map(plt.hist,"评论字数",bins=10)
plt.show()
#评分越高,评论字数越多

技术图片

#评分与字数关系的可视化2
sns.pointplot(x="分数",y="评论字数",data=df)
plt.show()
#评分为3的人最喜欢写评论

技术图片

#找出与服装评分相关性最强的10个变量 
k=10
#df.corr()  相关系数的计算可以调用pearson方法或kendell方法或spearman方法,默认使用pearson方法。
#round()  四舍五入,保留2位小数
corr = round(df.corr(),2)
corr

技术图片

#panadas.Dataframe
# pd.DataFrame.nlargest(n ,cloumns,keep="first")  get the row of a DataFrame by the largest values of columns
cols = corr.nlargest(k,分数)
cols

技术图片

cols = corr.nlargest(k,分数)["分数"].index
cm = round(df[cols].corr(),2)
#np.zeros_like()    Return an array of zeros with the same shape and type as a given array.
#
mask = np.zeros_like(cm,dtype = np.bool)
mask[np.triu_indices_from(mask)] = True
plt.figure(figsize = (8,8))
cmap = sns.diverging_palette(220,10,as_cmap = True)
sns.heatmap(cm,mask = mask,cmap = cmap ,center = 0,annot = True ,cbar_kws = {"shrink":.5})

技术图片

df.groupby(["分数",pd.cut(df["年龄"],np.arange(0,100,10))]).size().unstack(0).plot.bar(stacked = True)

plt.show()

技术图片

#产品类别与年龄
df.groupby(["产品大类",pd.cut(df["年龄"],np.arange(0,100,10))]).size().unstack(0).plot.bar(stacked = True)

plt.show()
30-40 40-50是购物的主要年龄段 在各个产品类别中,top在各个年龄段的销量都不错 

技术图片

 

nlp 电商评论处理 -史诗级长文

标签:pandas   相关性   替换   als   das   iss   sns   小数   san   

原文地址:https://www.cnblogs.com/students/p/10828051.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!