独家 | 探索性文本数据分析的新手教程(Amazon案例研究)


作者:Abhishek Sharma

翻译:李嘉骐

校对:方星轩

本文长度为5500字,建议阅读10+分钟

本文利用Python对Amazon产品的反馈对数据文本进行探索性研究与分析,并给出结论。

标签:初学者|资料探索|电子商务|自然语言处理|Python|技术|文本

探索性数据分析(EDA)的重要性

在一个机器学习项目的全流程中是没有捷径可走的,比如我们无法在收集齐所需的数据后直接跳到模型搭建的阶段。我们需要有条理地规划方法,而在此过程中探索性数据分析(EDA)阶段是十分重要的。

我无数次在事后才认识到EDA的重要性。

在我从事这一领域的前期,总是急切地要深入研究机器学习算法,但这常常得到不确定性的结果。通过个人经历和导师的建议,我意识到在探索和理解数据上花时间是必要的。

即使是自然语言处理(NLP)项目[1]中的文本数据也是如此。我们需要对数据进行研究和探索性分析,看看是否能挖掘出有意义的发现。相信我,处理的文本数据越多,你就会感激EDA这个过程。

当然我们也不缺文本数据。我们有来自推特、数字媒体平台、博客和其他大量来源的数据。作为一个数据科学家和NLP爱好者,分析这些文本数据以帮助你的公司做出数据驱动的决策非常重要。

探索性的数据分析将这些紧密联系在一起。可以说这是NLP项目中的一个关键环节——一个你根本无法跳过的阶段。

-探索性数据分析是探索数据、形成见解、检验假设、检查预设条件并揭示数据中潜在的隐藏规律的过程。

-(Exploratory Data Analysis is the process of exploring data, generating insights, testing hypotheses, checking assumptions and revealing underlying hidden patterns in the data.)

因此,在本文中,我们将通过一个实际的例子讨论如何使用Python对文本数据进行探索性数据分析。如果你不熟悉NLP或数据可视化的辉煌而广阔的世界,可以浏览以下资源:

从零开始掌握数据可视化:

https://courses.analyticsvidhya.com/courses/tableau-2-0

NLP简介(免费课程):

https://courses.analyticsvidhya.com/courses/Intro-to-NLP

目录

  • 理解问题的设定

  • 基本的文本数据预处理

  • 用Python清洗文本数据

  • 为探索性数据分析(EDA)准备文本数据

  • 基于Python的Amazon产品评论探索性数据分析

理解问题的设定

对于任何一个机器学习项目,第一步就是理解问题。这也是我们本章要讨论的内容。

我是亚马逊系列产品的超级粉丝。我这里有一个数据集,其中包含了亚马逊的各种产品的评论,如Kindle、Fire TV、Echo等。

数据集的下载链接:

https://www.kaggle.com/datafiniti/consumer-reviews-of-amazon-products

 

该数据集大有34000多行,每行包含每个产品的评论文本、用户名、产品名称、评级和其他信息。我们的目标是使用这些数据,探索它,并从中形成自己的见解。

让我们开始使用不同的技术来研究这个数据集,并从中形成自己的见解。

 

基本的文本数据预处理

在进入数据探索阶段之前,我们需要进行基本的数据预处理,如空值插补和去除不需要的数据。那么,让我们从导入库和读取数据集开始:

import numpy as np  
import pandas as pd  
# 可视化 
import matplotlib.pyplot as plt  
# 正则化  
import re  
# 处理字符串
import string  
# 执行数学运算 
import math  
  
# 导入数据
df=pd.read_csv('dataset.csv') print("Shape of data=>",df.shape) 

数据集包含34660行和21列。但我们只需要诸如产品名称、评论文本、用户推荐(推荐或不推荐)和认为该评论有用的人数等信息。因此,我删除了其他列,并将数据集缩减为只有四列,即“名称”、“评论文本”, “评论-是否推荐”和“评论-认为此评论有用的人数”:

df=df[['name','reviews.text','reviews.doRecommend','reviews.numHelpful']]  
print("Shape of data=>",df.shape)  
df.head(5) 

让我们来看一下数据集中是否有空值:

df.isnull().sum() 

数据集中存在一些空值,所以我们删除掉这些空值后再往下进行:

df.dropna(inplace=True)  
df.isnull().sum()  

我只利用至少有500条评论的产品。这样做是为了确保每个产品都有足够数量的评论。这里,我们可以使用lambda函数和filter()来过滤数据集。

如果你想了解更多关于lambda函数,可以阅读这篇文章:什么是lambda函数?Python中Lambda函数的快速指南。我强烈建议去阅读这篇指南,因为本文之后部分将会多次使用lambda函数。

什么是lambda函数?Python中Lambda函数的快速指南:

https://www.analyticsvidhya.com/blog/2020/03/what-are-lambda-functions-in-python/

df=df.groupby('name').filter(lambda x:len(x)>500).reset_index(drop=True)  
print('Number of products=>',len(df['name'].unique()))  

现在只剩下了八种产品。另外,“评论-是否推荐”列包含二值化数据True-False; '“评论-认为此评论有用的人数”列包含浮点数,这些数据类型不能直接用来处理。因此&#x

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值