臺州響應(yīng)式建站seo外鏈建設(shè)方法
🤵?♂? 個人主頁:@艾派森的個人主頁
?🏻作者簡介:Python學(xué)習(xí)者
🐋 希望大家多多支持,我們一起進(jìn)步!😄
如果文章對你有幫助的話,
歡迎評論 💬點贊👍🏻 收藏 📂加關(guān)注+
目錄
一、項目介紹
二、數(shù)據(jù)集介紹
三、實驗過程
3.1導(dǎo)入數(shù)據(jù)()
?3.2數(shù)據(jù)預(yù)處理
3.3數(shù)據(jù)可視化
3.4詞云圖分析?
3.5情感分析
四、總結(jié)
五、文末推薦與福利
源代碼
一、項目介紹
????????在本次實驗中,我們采用了先進(jìn)的文本挖掘和數(shù)據(jù)分析技術(shù),對京東平臺上MatePad11的用戶評論進(jìn)行了全面深入的分析。通過使用Python編程語言,我們首先實現(xiàn)了自動化爬取用戶評論的關(guān)鍵信息,并將這些數(shù)據(jù)進(jìn)行了預(yù)處理。
????????預(yù)處理階段,我們采用了自然語言處理技術(shù),對文本進(jìn)行了清洗、分詞、詞性標(biāo)注等操作,為后續(xù)的數(shù)據(jù)分析奠定了基礎(chǔ)。此外,我們還運用了情感分析算法,對用戶評論的情感傾向進(jìn)行了自動分類,以便更好地把握用戶對該產(chǎn)品的態(tài)度和感受。
????????在進(jìn)行數(shù)據(jù)預(yù)處理之后,我們進(jìn)一步對用戶評論數(shù)據(jù)進(jìn)行了可視化分析。通過使用數(shù)據(jù)可視化工具和技術(shù),我們將用戶評論數(shù)據(jù)呈現(xiàn)為直觀的圖形和圖表,包括條形圖、餅圖、詞云圖等。這些圖形和圖表不僅可以幫助我們快速了解用戶評論的整體情況,還能夠發(fā)現(xiàn)產(chǎn)品特點、用戶需求以及口碑趨勢等方面的信息。
????????在詞云圖分析方面,我們采用了基于文本的詞頻分析方法,對用戶評論中出現(xiàn)的關(guān)鍵詞進(jìn)行了統(tǒng)計和分析。通過構(gòu)建詞云圖,我們能夠以更加直觀的方式展示出用戶評論中提及的關(guān)鍵詞的分布情況,進(jìn)而分析出該產(chǎn)品的特點以及用戶的關(guān)注點。這些信息對于企業(yè)制定有針對性的營銷策略具有重要意義。
????????在情感分析方面,我們運用了基于機(jī)器學(xué)習(xí)的文本分類技術(shù),將用戶評論按照情感傾向分為正面、負(fù)面和中性三類。通過情感分析,我們可以了解到用戶對產(chǎn)品的真實感受和態(tài)度,從而為企業(yè)提供改進(jìn)產(chǎn)品、優(yōu)化服務(wù)和制定營銷策略等方面的依據(jù)。
二、數(shù)據(jù)集介紹
? ? ? ? 本數(shù)據(jù)集來源于京東上MatePad11的用戶評論數(shù)據(jù),共有1300條,10列變量,各變量的含義如下:
comment_id:評論ID
nick_name:用戶昵稱
location:IP地址
creation_time:評論的時間
product_color:產(chǎn)品的顏色
product_size:產(chǎn)品的內(nèi)存大小
score:評價分值
useful_vote_count:評論的點贊量
reply_count:評論的回復(fù)量
content:評論內(nèi)容
三、實驗過程
3.1導(dǎo)入數(shù)據(jù)
首先導(dǎo)入本次實驗用到的第三方庫,并加載數(shù)據(jù)集,查看前兩條數(shù)據(jù)
?查看數(shù)據(jù)大小
查看數(shù)據(jù)基本信息
?
查看數(shù)值型變量的描述性統(tǒng)計
?
查看非數(shù)值型變量的描述性統(tǒng)計?

3.2數(shù)據(jù)預(yù)處理
首先統(tǒng)一各變量的缺失值情況,發(fā)現(xiàn)并不存在缺失值
?
檢測數(shù)據(jù)是否存在重復(fù)值
刪除重復(fù)值?
?
上面我們發(fā)現(xiàn)產(chǎn)品顏色中其實還包括了產(chǎn)品的型號和顏色,于是我們可以將其拆解為兩個變量,然后將評論時間轉(zhuǎn)為時間類型數(shù)據(jù)。?
3.3數(shù)據(jù)可視化
1.不同顏色的產(chǎn)品購買數(shù)量
從圖中可以看出曜石黑的銷量遠(yuǎn)領(lǐng)先于其他顏色,而海島藍(lán)的銷量最低。?
2.不同內(nèi)存大小的產(chǎn)品購買數(shù)量
從圖中可看出8+128GB的銷量是遠(yuǎn)遠(yuǎn)領(lǐng)先于其他兩種型號的產(chǎn)品,可見企業(yè)在生產(chǎn)產(chǎn)品的時候需進(jìn)行一個合理的分配,迎合消費市場的需求。?
3.最近一段時間內(nèi)產(chǎn)品的評論數(shù)量
?4.不同顏色產(chǎn)品的平均得分
5.不同型號產(chǎn)品的平均得分
3.4詞云圖分析?
????????詞云圖是一種可視化工具,通過顏色和大小不同的字體來呈現(xiàn)文本數(shù)據(jù)中出現(xiàn)頻率較高的詞匯,常用于文本挖掘和數(shù)據(jù)分析。以下是詞云圖分析的優(yōu)點和缺點:
優(yōu)點:
- 應(yīng)用范圍廣:詞云圖可以應(yīng)用于各種文本數(shù)據(jù),包括報告、演講稿、新聞報道、會議總結(jié)等,同時可以嵌入PPT、論文等文檔中,展示文本的主題和重點。
- 制作簡單:隨著數(shù)據(jù)可視化技術(shù)的不斷發(fā)展,現(xiàn)在有很多在線制圖軟件可以制作詞云圖,如微詞云、鏑數(shù)圖表、圖表秀等,制作過程簡單方便。
- 內(nèi)容直接:詞云圖通過不同的顏色和大小來區(qū)分不同的詞匯,讓讀者可以快速地了解到文本的主題和重點,并且可以通過顏色和大小的變化來呈現(xiàn)詞匯的重要程度。
- 趣味性強:相比于傳統(tǒng)的柱狀圖、折線圖等,詞云圖更加美觀、有趣,能夠吸引讀者的注意力,同時可以根據(jù)不同的主題和需求來調(diào)整詞云形狀、用顏色表達(dá)情感傾向等,使其更具趣味性。
缺點:
- 信息缺失:雖然詞云圖可以展示文本中高頻詞匯的出現(xiàn)情況,但是對于低頻詞匯的展示不夠明顯或者遺漏,因此可能會造成信息缺失的問題。
- 缺乏邏輯:詞云圖通過單個詞匯的出現(xiàn)頻率來呈現(xiàn)信息,但有時候缺乏邏輯聯(lián)系,難以表達(dá)完整的內(nèi)容主題。需要讀者通過主觀理解來給詞匯填充合理的敘述邏輯。
這里我們首先定義一個畫詞云圖的函數(shù)
接著調(diào)用函數(shù),將評論內(nèi)容傳入
3.5情感分析
????????Snownlp是一個基于Python的自然語言處理庫,能夠處理中文文本內(nèi)容。其中,情感分析是Snownlp的一個重要應(yīng)用。
????????情感分析是指對文本所表達(dá)出的情感進(jìn)行分析和判斷,并從中提取有用信息的過程。Snownlp情感分析的功能包括:針對中文文本進(jìn)行情感判斷,識別出文本的情感極性(正面、負(fù)面、中性),以及情感強度的量化(如0~1之間的數(shù)值表示情感的強烈程度)。這些功能可以幫助企業(yè)和政府決策者了解用戶對某個主題、產(chǎn)品或事件的情感態(tài)度,從而做出更為精準(zhǔn)的決策。
使用Snownlp進(jìn)行情感分析的過程包括以下步驟:
- 安裝Snownlp庫:在命令行中使用pip命令安裝snownlp庫。
- 導(dǎo)入Snownlp庫:在Python腳本中導(dǎo)入snownlp模塊。
- 準(zhǔn)備文本數(shù)據(jù):收集需要進(jìn)行情感分析的文本數(shù)據(jù),可以是一段文字、一篇新聞報道等。
- 使用Snownlp進(jìn)行情感分析:使用snownlp的函數(shù)和方法對文本數(shù)據(jù)進(jìn)行情感分析,可以得到文本的情感極性以及情感強度的量化值。
- 可視化分析結(jié)果:將分析結(jié)果以圖表或表格的形式呈現(xiàn),方便決策者快速了解用戶的情感態(tài)度。
在安裝了之后,直接調(diào)用sentiments方法即可,然后根據(jù)得到的情感分值我們定義0.6以上的為積極,0.2~0.6為中性,0.2以下為消極。
接著將情感分析的結(jié)果進(jìn)行可視化
?
接著,我們將積極、中性、消極的評論進(jìn)行詞云圖可視化
從積極評論詞云圖中,我們可以發(fā)現(xiàn)產(chǎn)品的外觀、運行速度得到了消費者的充分肯定;中性和消極評論詞云圖結(jié)果比較相似,重點都是價格的問題,究其原因是消費者在買了產(chǎn)品后,發(fā)現(xiàn)產(chǎn)品進(jìn)行了降價進(jìn)而導(dǎo)致了不滿的情緒。?
四、總結(jié)
????????綜上所述,本次實驗通過使用Python爬取、數(shù)據(jù)預(yù)處理、數(shù)據(jù)可視化、詞云圖分析和情感分析等技術(shù)手段,全面挖掘了京東平臺上MatePad11用戶評論的關(guān)鍵信息。這些數(shù)據(jù)分析結(jié)果對于企業(yè)及時調(diào)整營銷策略、了解用戶需求以及評估產(chǎn)品的口碑等方面都具有重要的指導(dǎo)意義。同時,這些技術(shù)方法不僅適用于本次實驗中的MatePad11用戶評論分析,還可以廣泛應(yīng)用于其他領(lǐng)域的數(shù)據(jù)挖掘和分析工作。
????????通過本次實驗的分析結(jié)果,企業(yè)可以制定更加精準(zhǔn)的營銷策略,以更好地滿足目標(biāo)客戶的需求。例如,針對MatePad11的本次實驗結(jié)果,企業(yè)可以考慮以下營銷策略:優(yōu)化產(chǎn)品的某些特點或功能;推出針對性強的廣告宣傳;調(diào)整價格策略以吸引更多用戶購買;加強售后服務(wù)以提高用戶滿意度等。
????????此外,對于新產(chǎn)品開發(fā)的企業(yè)來說,通過本次實驗的分析結(jié)果可以更好地了解用戶需求和市場趨勢,從而以用戶需求為導(dǎo)向設(shè)計開發(fā)新產(chǎn)品。這將有助于提高新產(chǎn)品的市場競爭力,幫助企業(yè)在激烈的市場競爭中獲得更大的市場份額。
????????總之,通過本次實驗的應(yīng)用,企業(yè)可以獲得寶貴的用戶評論數(shù)據(jù)分析和挖掘經(jīng)驗。這些經(jīng)驗不僅有助于提高企業(yè)的營銷效果和產(chǎn)品開發(fā)能力,還能夠幫助企業(yè)更好地了解用戶需求和市場趨勢,從而在激烈的市場競爭中立于不敗之地。
五、文末推薦與福利
《Python數(shù)據(jù)挖掘:入門、進(jìn)階與實用案例分析》免費包郵送出3本!
?
內(nèi)容簡介:? ?
????????這是一本以項目實戰(zhàn)案例為驅(qū)動的數(shù)據(jù)挖掘著作,它能幫助完全沒有Python編程基礎(chǔ)和數(shù)據(jù)挖掘基礎(chǔ)的讀者快速掌握Python數(shù)據(jù)挖掘的技術(shù)、流程與方法。
????????在寫作方式上,本書與傳統(tǒng)的“理論與實踐結(jié)合”的入門書不同,它以數(shù)據(jù)挖掘領(lǐng)域的知名賽事“泰迪杯”數(shù)據(jù)挖掘挑戰(zhàn)賽(已舉辦10屆)和“泰迪杯”數(shù)據(jù)分析技能賽(已舉辦5屆)(累計1500余所高校的10余萬師生參賽)為依托,精選了11個經(jīng)典賽題,將Python編程知識、數(shù)據(jù)挖掘知識和行業(yè)知識三者融合,讓讀者在實踐中快速掌握電商、教育、交通、傳媒、電力、旅游、制造等7大行業(yè)的數(shù)據(jù)挖掘方法。????????本書不僅適用于零基礎(chǔ)的讀者自學(xué),還適用于教師教學(xué),為了幫助讀者更加高效地掌握本書的內(nèi)容,本書提供了以下10項附加價值:
(1)建模平臺:提供一站式大數(shù)據(jù)挖掘建模平臺,免配置,包含大量案例工程,邊練邊學(xué),告別紙上談兵
(2)視頻講解:提供不少于600分鐘Python編程和數(shù)據(jù)挖掘相關(guān)教學(xué)視頻,邊看邊學(xué),快速收獲經(jīng)驗值
(3)精選習(xí)題:精心挑選不少于60道數(shù)據(jù)挖掘練習(xí)題,并提供詳細(xì)解答,邊學(xué)邊練,檢查知識盲區(qū)
(4)作者答疑:學(xué)習(xí)過程中有任何問題,通過“樹洞”小程序,紙書拍照,一鍵發(fā)給作者,邊問邊學(xué),事半功倍
(5)數(shù)據(jù)文件:提供各個案例配套的數(shù)據(jù)文件,與工程實踐結(jié)合,開箱即用,增強實操性
(6)程序代碼:提供書中代碼的電子文件及相關(guān)工具的安裝包,代碼導(dǎo)入平臺即可運行,學(xué)習(xí)效果立竿見影
(7)教學(xué)課件:提供配套的PPT課件,使用本書作為教材的老師可以申請,節(jié)省備課時間
(8)模型服務(wù):提供不少于10個數(shù)據(jù)挖掘模型,模型提供完整的案例實現(xiàn)過程,助力提升數(shù)據(jù)挖掘?qū)嵺`能力
(9)教學(xué)平臺:泰迪科技為本書提供的附加資源提供一站式數(shù)據(jù)化教學(xué)平臺,附有詳細(xì)操作指南,邊看邊學(xué)邊練,節(jié)省時間
(10)就業(yè)推薦:提供大量就業(yè)推薦機(jī)會,與1500+企業(yè)合作,包含華為、京東、美的等知名企業(yè)
通過學(xué)習(xí)本書,讀者可以理解數(shù)據(jù)挖掘的原理,迅速掌握大數(shù)據(jù)技術(shù)的相關(guān)操作,為后續(xù)數(shù)據(jù)分析、數(shù)據(jù)挖掘、深度學(xué)習(xí)的實踐及競賽打下良好的技術(shù)基礎(chǔ)。
- 抽獎方式:評論區(qū)隨機(jī)抽取3位小伙伴免費送出!
- 參與方式:關(guān)注博主、點贊、收藏、評論區(qū)評論“人生苦短,拒絕內(nèi)卷!”(切記要點贊+收藏,否則抽獎無效,每個人最多評論三次!)
- 活動截止時間:2023-10-18?20:00:00
京東購買鏈接:https://item.jd.com/13814157.html
?名單公布時間:2023-10-18?21:00:00?
源代碼
import pandas as pd
import matplotlib.pylab as plt
import numpy as np
import seaborn as sns
sns.set(font='SimHei')
plt.rcParams['font.sans-serif'] = ['SimHei'] #解決中文顯示
plt.rcParams['axes.unicode_minus'] = False #解決符號無法顯示
import warnings
warnings.filterwarnings('ignore')df = pd.read_csv('MatePad11.csv')
df.head(2)
df.shape
df.info()
df.describe() # 查看數(shù)值型變量的描述性統(tǒng)計
df.describe(include='O') # 查看非數(shù)值型變量的描述性統(tǒng)計
df.isnull().sum()
any(df.duplicated()) # 檢測數(shù)據(jù)集中是否存在重復(fù)數(shù)據(jù)
df.drop_duplicates(inplace=True) # 刪除重復(fù)數(shù)據(jù)
df.shape
plt.figure(figsize=(30,12))
sns.countplot(df['product_color'])
plt.xticks(rotation=90,fontsize=18)
plt.xlabel('產(chǎn)品顏色',fontsize=20)
plt.ylabel('產(chǎn)品數(shù)量',fontsize=20)
plt.title('不同產(chǎn)品型號的購買數(shù)量',fontsize=20)
plt.show()
df['product_type'] =df['product_color'].apply(lambda x:x.split('11')[1].split('】')[0])
df['product_color'] = df['product_color'].apply(lambda x:x.split('】')[1])
df['creation_time'] = df['creation_time'].astype('datetime64[D]')
可視化分析
sns.countplot(df['product_color'])
plt.xlabel('產(chǎn)品顏色')
plt.ylabel('產(chǎn)品數(shù)量')
plt.title('不同顏色的產(chǎn)品購買數(shù)量')
plt.show()
sns.countplot(df['product_size'])
plt.xlabel('內(nèi)存大小')
plt.ylabel('產(chǎn)品數(shù)量')
plt.title('不同內(nèi)存大小的產(chǎn)品購買數(shù)量')
plt.show()
plt.figure(figsize=(14,6))
df.groupby(df['creation_time']).count()['content'].plot()
plt.ylabel('評論數(shù)量')
plt.title('最近一段時間內(nèi)產(chǎn)品的評論數(shù)量')
plt.show()
df.head(2)
df.groupby('product_color').mean()['score'].plot(kind='bar')
plt.xticks(rotation=0)
plt.ylabel('評價得分')
plt.title('不同顏色產(chǎn)品的平均得分')
plt.show()
df.groupby('product_type').mean()['score'].plot(kind='bar')
plt.xticks(rotation=0)
plt.ylabel('評價得分')
plt.title('不同型號產(chǎn)品的平均得分')
plt.show()
import re
import jiebadef chinese_word_cut(mytext):jieba.load_userdict('dic.txt') # 這里你可以添加jieba庫識別不了的網(wǎng)絡(luò)新詞,避免將一些新詞拆開jieba.initialize()# [^0-9A-Za-z]表示匹配單個非數(shù)字和非字母# 去除評論中類似“外觀材質(zhì): 屏幕效果: 運行速度:”這樣的詞語mytext = re.sub(r'[^0-9A-Za-z][^0-9A-Za-z][^0-9A-Za-z][^0-9A-Za-z]:','',mytext)# 文本預(yù)處理 :去除一些無用的字符只提取出中文出來new_data = re.findall('[\u4e00-\u9fa5]+', mytext, re.S)new_data = " ".join(new_data)# 文本分詞seg_list_exact = jieba.cut(new_data)result_list = []with open('停用詞庫.txt', encoding='utf-8') as f: # 可根據(jù)需要打開停用詞庫,然后加上不想顯示的詞語con = f.readlines()stop_words = set()for i in con:i = i.replace("\n", "") # 去掉讀取每一行數(shù)據(jù)的\nstop_words.add(i)for word in seg_list_exact:if word not in stop_words and len(word) > 1:result_list.append(word) return " ".join(result_list)df['content_cut'] = df['content'].apply(chinese_word_cut)
df['content_cut']
# 分詞后的有些詞語對于后面分析是沒有價值的,比如“平板”,“京東”,所以我們將這些詞語加入停用詞庫中
import collections
import stylecloud
from PIL import Imagedef draw_WorldCloud(df,pic_name,color='white'):data = ''.join([re.sub(r'[^0-9A-Za-z][^0-9A-Za-z][^0-9A-Za-z][^0-9A-Za-z]:','',item) for item in df])# 文本預(yù)處理 :去除一些無用的字符只提取出中文出來new_data = re.findall('[\u4e00-\u9fa5]+', data, re.S)new_data = "".join(new_data)# 文本分詞seg_list_exact = jieba.cut(new_data)result_list = []with open('停用詞庫.txt', encoding='utf-8') as f: #可根據(jù)需要打開停用詞庫,然后加上不想顯示的詞語con = f.readlines()stop_words = set()for i in con:i = i.replace("\n", "") # 去掉讀取每一行數(shù)據(jù)的\nstop_words.add(i)for word in seg_list_exact:if word not in stop_words and len(word) > 1:result_list.append(word)word_counts = collections.Counter(result_list)# 詞頻統(tǒng)計:獲取前100最高頻的詞word_counts_top = word_counts.most_common(100)print(word_counts_top)# 繪制詞云圖stylecloud.gen_stylecloud(text=' '.join(result_list), collocations=False, # 是否包括兩個單詞的搭配(二字組)font_path=r'C:\Windows\Fonts\msyh.ttc', #設(shè)置字體,參考位置為 C:\Windows\Fonts\ ,根據(jù)里面的字體編號來設(shè)置size=800, # stylecloud 的大小palette='cartocolors.qualitative.Bold_7', # 調(diào)色板background_color=color, # 背景顏色icon_name='fas fa-cloud', # 形狀的圖標(biāo)名稱 gradient='horizontal', # 梯度方向max_words=2000, # stylecloud 可包含的最大單詞數(shù)max_font_size=150, # stylecloud 中的最大字號stopwords=True, # 布爾值,用于篩除常見禁用詞output_name=f'{pic_name}.png') # 輸出圖片# 打開圖片展示img=Image.open(f'{pic_name}.png')img.show()
draw_WorldCloud(df['content_cut'],'MatePad11用戶評論詞云圖')
#加載情感分析模塊
from snownlp import SnowNLP
# 遍歷每條評論進(jìn)行預(yù)測
values=[SnowNLP(i).sentiments for i in df['content']]
#輸出積極的概率,大于0.5積極的,小于0.5消極的
#myval保存預(yù)測值
myval=[]
good=0
mid=0
bad=0
for i in values:if (i>=0.6):myval.append("積極")good=good+1elif 0.2<i<0.6:myval.append("中性")mid+=1else:myval.append("消極")bad=bad+1
df['預(yù)測值']=values
df['評價類別']=myval
df.head(3)
rate=good/(good+bad+mid)
print('好評率','%.f%%' % (rate * 100)) #格式化為百分比
#作圖
y=values
plt.rc('font', family='SimHei', size=10)
plt.plot(y, marker='o', mec='r', mfc='w',label=u'評價分值')
plt.xlabel('用戶')
plt.ylabel('評價分值')
# 讓圖例生效
plt.legend()
#添加標(biāo)題
plt.title('評論情感分析',family='SimHei',size=14,color='blue')
plt.show()
y = df['評價類別'].value_counts().values.tolist()
plt.pie(y,labels=['積極','中性','消極'], # 設(shè)置餅圖標(biāo)簽colors=["#d5695d", "#5d8ca8", "#65a479"], # 設(shè)置餅圖顏色autopct='%.2f%%', # 格式化輸出百分比)
plt.show()
draw_WorldCloud(df[df['評價類別']=='消極']['content'],'MatePad消極評價詞云圖')
draw_WorldCloud(df[df['評價類別']=='積極']['content'],'MatePad積極評價詞云圖')
draw_WorldCloud(df[df['評價類別']=='中性']['content'],'MatePad中性評價詞云圖')