124在線民宿 UGC 數(shù)據(jù)挖掘?qū)崙?zhàn)--利用 pyecharts 進行可視化分析

利用 pyecharts 進行可視化分析

數(shù)據(jù)準備

本次使用數(shù)據(jù)來自實驗一的最后結(jié)果檀葛,首先使用 Pandas 加載數(shù)據(jù)未玻,并查看數(shù)據(jù)維度和第一行數(shù)據(jù)厂汗。

import pandas as pd
data = pd.read_csv('https://labfile.oss.aliyuncs.com/courses/2628/1-2.csv')
print(data.shape)
data.head(1)

數(shù)據(jù)屬性如下表所示


image.png

pyecharts 是一個基于 Python 用于生成 Echarts 圖表的類庫冯痢,本次直接可以將可視化的數(shù)據(jù)圖形在 notebook 內(nèi)部進行展示元莫。


image.png

下面我們開始安裝 pyecharts赖阻。
!pip install pyecharts==1.6.2

顧客特征分析

用戶評論高頻詞分析
詞頻分析 (Word Frequency Analysis) 是對文獻正文中重要詞匯出現(xiàn)的次數(shù)進行統(tǒng)計與分析,是文本挖掘的重要手段踱蠢。 它是文獻計量學(xué)中傳統(tǒng)的和具有代表性的一種內(nèi)容分析方法火欧,方法繁多棋电。本實驗通過簡單的詞頻法即可進行分析,基本原理是通過詞出現(xiàn)頻次多少的變化苇侵,來確定熱點及其變化趨勢,我們首先加載詞頻統(tǒng)計模塊赶盔,并由大到小排序進行展示。

# 加載詞頻統(tǒng)計模塊
from sklearn.feature_extraction.text import CountVectorizer

# 設(shè)定 topn 的高頻詞語閾值榆浓,可以根據(jù)需要進行改變大小
topn = 500
# 加載統(tǒng)計模塊
count_extract = CountVectorizer(max_features=topn)
# 開始對語料進行統(tǒng)計
count_extract.fit_transform(data['text_cut'])

# 輸入數(shù)據(jù)中的每一個詞為(word于未,value)這樣的元祖形式,然后將所有的詞放入一個list中
comment_count_pair = [(k, int(v))
                      for k, v in count_extract.vocabulary_.items()]

通過用戶評論中的高頻詞分布情況陡鹃,找出在用戶評價中出現(xiàn)頻率最高的詞語烘浦,分析用戶興趣點。 通過顧客對餐館萍鲸、飯菜等詞語的提及發(fā)現(xiàn)用戶對餐飲方面關(guān)注度較高闷叉,同理通過單間、露臺脊阴、馬桶等詞語發(fā)現(xiàn)顧客對民宿設(shè)施有強烈需求握侧,其他方面也可以同理進行分析。

# 加載詞云模塊
from pyecharts.charts import WordCloud
# 加載 pyecharts 配置模塊配置詞云顯示
from pyecharts import options as opts

comment_wordcloud = WordCloud()
# word_size_range 表示詞語大小范圍蹬叭,可以根據(jù)需要改變
comment_wordcloud.add(
    series_name="", data_pair=comment_count_pair, word_size_range=[10, 100]
)
# 設(shè)置詞云的全局配置
comment_wordcloud.set_global_opts(
    title_opts=opts.TitleOpts(title="高頻詞云分析",
                              # 設(shè)置標題文字大小
                              title_textstyle_opts=opts.TextStyleOpts(font_size=15)),
    # 顯示詞云中的詞頻數(shù)字
    tooltip_opts=opts.TooltipOpts(is_show=True),
)
# 直接在 notebook 中顯示詞云
comment_wordcloud.render_notebook()

用戶等級分析
首先對用戶等級進行聚合藕咏。

# 提取用戶等級信息
user_level_info = data['user_level'].groupby(
    data['user_level']).count().items()

# 將用戶等級標簽和統(tǒng)計量進行合并成 list
data_level_pair = [[i[0], i[1]] for i in user_level_info]
data_level_pair

通過對用戶等級信息進行餅圖可視化状知,我們發(fā)現(xiàn)大部分的顧客等級在初級用戶在評論中占最多秽五,這些用戶可能是初次或者很少居住民宿,初次居住民宿居多饥悴,喜好定位還未明確坦喘,喜歡嘗試不同的民宿風格,仍舊在嘗試新鮮期西设,這類客戶屬于民宿盈利的關(guān)鍵群體瓣铣。 第二的達人段位也占了很大的比重,居于第二位贷揽,這些顧客往往以回頭客居多棠笑,已經(jīng)對民宿有了自己的喜好認知,培養(yǎng)了自己的民宿喜好禽绪。第三位的評論等級最高級 master 占到第三位蓖救,這類顧客往往以專業(yè)點評人 PGC 的身份進行民宿居住,發(fā)出的評價內(nèi)容往往以優(yōu)質(zhì)內(nèi)容為主印屁,以意見領(lǐng)袖 KOL 居多循捺。

# 加載餅圖模塊
from pyecharts.charts import Pie

# 初始化畫布大小
pie = Pie(init_opts=opts.InitOpts(width='660px', height='350px'),)
pie.add(series_name="",
        data_pair=data_level_pair,
        label_opts=opts.LabelOpts(is_show=True,),
        )
# 設(shè)置餅圖的配置,包含標題雄人、標題的大小从橘、標簽顯示等
pie.set_global_opts(
    title_opts=opts.TitleOpts(
        title="用戶等級分布",
        title_textstyle_opts=opts.TextStyleOpts(font_size=15)),
    tooltip_opts=opts.TooltipOpts(is_show=True),
)

# 設(shè)置顯示的標簽,b 代表是標簽信息,c 表示統(tǒng)計信息
pie.set_series_opts(label_opts=opts.LabelOpts(formatter="恰力: {c}"))
pie.render_notebook()

顧客評價的時間序列分析
對時間特征進行清洗叉谜,去除發(fā)表時間中的 "發(fā)表于" 字段。

data['post_time_clean'] = data['post_time'].apply(
    lambda x: x.replace('發(fā)表于', ''))

# 查看去除后的效果
data.head(1)

按照顧客評論的日期進行統(tǒng)計排名踩萎,并取出 topn正罢,了解顧客在民宿居住時間序列上的規(guī)律。

# topn 可以根據(jù)需要進行收放
topn = 10
data['post_time_clean'].value_counts()[:topn]

開始對用戶評價的時間序列信息進行聚合驻民。

# 提取用戶評價時間和統(tǒng)計信息
post_time, post_count = [], []
for i in data['post_time_clean'].groupby(data['post_time_clean']).count().items():
    # 取出時間標簽
    post_time.append(i[0])
    # 取出計數(shù)信息
    post_count.append(i[1])

通過可視化用戶評論時間序列翻具,橫坐標表示用戶評論的時間,縱坐標表示用戶評論量回还。我們可以發(fā)現(xiàn)一些規(guī)律裆泳。通過對序列峰值和 topn 的排序可以了解到,重慶民宿在每年的五一開始直到十一都是民宿業(yè)的主要營收時間柠硕,通過評論量和訂單量的等價映射工禾,訂單量在五一和十一期間占比較大。

# 使用折線圖
from pyecharts.charts import Line

# 加載圖的配置蝗柔,長寬的參數(shù)設(shè)置
line = Line(init_opts=opts.InitOpts(width='660px', height='350px'))

# 設(shè)置橫坐標為時間
line.add_xaxis(post_time)
# 設(shè)置縱坐標為用戶評論條數(shù)
line.add_yaxis("", post_count)
# 設(shè)置標題
line.set_global_opts(title_opts=opts.TitleOpts(title='用戶評論時間序列圖'))

# 設(shè)置顯示統(tǒng)計量
line.set_series_opts(label_opts=opts.LabelOpts(is_show=True),)
line.render_notebook()

民宿特征分析

民宿店名分析
分詞器加載和預(yù)熱闻葵。

import jieba
" ".join(jieba.lcut('測試結(jié)巴'))

對民宿店名進行批量分詞,并查看第一條分詞后的民宿分詞結(jié)果癣丧。

name_cut_list = [' '.join(jieba.lcut(i)) for i in data['hotel_name'].unique()]
name_cut_list[0]

加載詞頻統(tǒng)計模塊槽畔,對分詞后的民宿店名進行詞頻統(tǒng)計。

vectorizer = CountVectorizer()
# 導(dǎo)入分詞后的店名 list
vectorizer.fit_transform(name_cut_list)

# 將統(tǒng)計信息整理成輸入的格式
name_count_pair = [(k, int(v)) for k, v in vectorizer.vocabulary_.items()]
# 打印第一個分詞統(tǒng)計量
name_count_pair[0]

通過詞云圖對民宿店名進行分析胁编,可以了解到當前民宿店名的起名方式也是滿足顧客需求厢钧,出現(xiàn)的店名關(guān)鍵詞如養(yǎng)生、觀景嬉橙、度假早直、農(nóng)家樂等,旨在打造與傳統(tǒng)的酒店的差異化市框,減少同質(zhì)化霞扬。顧客在預(yù)定的時候直接從名字就可以選擇自己喜歡的民宿類型,也為搜索引擎的檢索提供方便枫振。

# 加載詞云模塊
name_wordcloud = WordCloud()

# 設(shè)置詞云字體大小喻圃,并導(dǎo)入統(tǒng)計量信息 name_count_pair
name_wordcloud.add(
    series_name="", data_pair=name_count_pair, word_size_range=[10, 50]
)

# 詞云設(shè)置標題和大小
name_wordcloud.set_global_opts(title_opts=opts.TitleOpts(
    title="店名特征分析",
    # 設(shè)置標題大小
    title_textstyle_opts=opts.TextStyleOpts(font_size=15)),
    tooltip_opts=opts.TooltipOpts(is_show=True), )
name_wordcloud.render_notebook()

顧客滿意度分析

用戶情感極性分布分析
首先對模型推理出來的用戶情感極性保留兩位小數(shù),然后進行標簽化處理蒋得,最后打印出分類聚合的 topn 顧客情感極性排序级及。

# 批量處理 sa_model_score 列,將模型打分進行保留兩位小數(shù)進行處理
data['new_sa_model_score'] = data['sa_model_score'].apply(
    lambda x: str(round(x, 2)))

# 打印 topn 的顧客情感極性额衙,可以根據(jù)需要進行更改
topn = 5
data['new_sa_model_score'].value_counts()[:topn]

對標簽化的用戶情感極性進行分類聚合饮焦,整理成輸入格式怕吴。

# 聚合顧客情感極性和統(tǒng)計信息
user_score, user_score_count = [], []
for i in data['new_sa_model_score'].groupby(data['new_sa_model_score']).count().items():
    # 取出顧客情感極性標簽
    user_score.append(i[0])
    # 取出計數(shù)信息
    user_score_count.append(i[1])

通過對用戶細粒度的 topn 排序和打分條形圖進行分析,在前 5 的顧客情感極性中县踢,其中 4 項都是用戶很好的評價反饋转绷,大部分用戶呈現(xiàn)高分分布,整體呈現(xiàn)滿意情況硼啤。但是排在第 3 位的是用戶極低的用戶反饋议经,說明在民宿中仍舊存在用戶不滿意的方面,后續(xù)實驗將通過細粒度的用戶極性反饋研究用戶在那些方面產(chǎn)生了不滿意谴返。

from pyecharts.charts import Bar

# 初始化餅圖
bar = Bar(init_opts=opts.InitOpts(width='660px', height='350px'))

# 橫坐標為用戶真實打分
bar.add_xaxis(user_score)
# 縱坐標為顧客情感極性的統(tǒng)計量,不設(shè)置縱坐標的名字
bar.add_yaxis("", user_score_count)

# 設(shè)置圖表的名字
bar.set_global_opts(title_opts=opts.TitleOpts(title='Customer_Satisfaction'))

# 設(shè)置數(shù)據(jù)展示
bar.set_series_opts(label_opts=opts.LabelOpts(is_show=False),)

# 直接在 jupyter 上進行顯示
bar.render_notebook()

用戶情感極性占比分析
對用戶情感極性進行保留一位和標簽化處理煞肾,并打印出顧客情感極性聚合的 topn 排序。

data['pie_sa_model_score'] = data['sa_model_score'].apply(
    lambda x: str(round(x, 1)))

# 打印 topn 的顧客情感極性嗓袱,可以根據(jù)需要進行改變
topn = 5
data['pie_sa_model_score'].value_counts()[:topn]

將數(shù)據(jù)進行聚合并處理成輸入格式籍救。

# 提取處理之后的用戶情感統(tǒng)計信息
data_pie_info = data['pie_sa_model_score'].groupby(
    data['pie_sa_model_score']).count().items()

# 將用戶等級標簽和統(tǒng)計量進行合并成 list
data_pie = [[i[0], i[1]] for i in data_pie_info]
# 打印第一個標簽和統(tǒng)計量
data_pie[0]

通過粗粒度的用戶標簽聚合,超過 9 成的顧客意見情感極性呈現(xiàn)積極渠抹,并且整體滿意度較好蝙昙,但是用戶負反饋排在了第二位,雖然整體占比不大梧却,但是確實對整體的評分數(shù)影響比較大奇颠,在不改變原有體驗的情況下膛锭,了解這部分人的需求并積極改善對提高整體顧客滿意度指數(shù)有很大的幫助赦役。

# 初始化餅圖大小
pie = Pie(init_opts=opts.InitOpts(width='560px', height='350px'),)

# 導(dǎo)入聚合的用戶極性數(shù)據(jù)
pie.add(series_name="",
        data_pair=data_pie,
        label_opts=opts.LabelOpts(is_show=False,),
        )

# 在 notebook 中顯示
pie.render_notebook()

預(yù)覽最終的數(shù)據(jù)文件:

data.head(1)

建議對策:通過三階段分析得出,大部分顧客在五一和十一期間計劃出游并且對民宿的需求旺盛敌蜂,可以看出此部分顧客有著穩(wěn)定的出游計劃三椿,屬于職業(yè)人群體缺菌,另小部分群體以暑假出游,屬于學(xué)生群體搜锰,通過用戶等級分布看出以首次和次首次群體為主,并且大部人顧客以體驗為主耿战,未來可以培養(yǎng)成為穩(wěn)定客戶蛋叼。對于提升入住率,店家可以針對在職人提供雙節(jié)預(yù)定優(yōu)惠或者打折活動剂陡,吸引更多的顧客前來體驗狈涮,并通過拉新提供折扣的方式對自己的民宿進行宣傳,為了提升曝光和檢索效率鸭栖,民宿起名和特征詞應(yīng)該增加差異化歌馍,可以因地制宜并增加休閑和娛樂。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末晕鹊,一起剝皮案震驚了整個濱河市松却,隨后出現(xiàn)的幾起案子暴浦,更是在濱河造成了極大的恐慌,老刑警劉巖晓锻,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件歌焦,死亡現(xiàn)場離奇詭異,居然都是意外死亡砚哆,警方通過查閱死者的電腦和手機独撇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來躁锁,“玉大人纷铣,你說我怎么就攤上這事≌阶” “怎么了关炼?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長匣吊。 經(jīng)常有香客問我儒拂,道長,這世上最難降的妖魔是什么色鸳? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任社痛,我火速辦了婚禮,結(jié)果婚禮上命雀,老公的妹妹穿的比我還像新娘蒜哀。我一直安慰自己,他們只是感情好吏砂,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布撵儿。 她就那樣靜靜地躺著,像睡著了一般狐血。 火紅的嫁衣襯著肌膚如雪淀歇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天匈织,我揣著相機與錄音浪默,去河邊找鬼。 笑死缀匕,一個胖子當著我的面吹牛纳决,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播乡小,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼阔加,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了满钟?” 一聲冷哼從身側(cè)響起胜榔,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤胳喷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后苗分,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厌蔽,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年摔癣,在試婚紗的時候發(fā)現(xiàn)自己被綠了奴饮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡择浊,死狀恐怖戴卜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情琢岩,我是刑警寧澤投剥,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站担孔,受9級特大地震影響江锨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜糕篇,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一啄育、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拌消,春花似錦挑豌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鹦筹,卻和暖如春铝阐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盛龄。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工饰迹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人余舶。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像锹淌,于是被迫代替她去往敵國和親匿值。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容