
【導語】:今天我們來聊聊最近的社交游戲新寵--劇本殺,Python技術部分請看第三部分。
Show me data,用數據說話
今天我們聊一聊 劇本殺
如果問,線下聚會可以玩兒什么?狼人殺?密室逃脫?
nonono,說道現在社交游戲的新寵,就不得不提到ta——劇本殺。
劇本殺,最初源于歐美派對游戲“謀殺之謎”。玩家們需要根據自己拿到的劇本扮演角色,與其他玩家一起共同演繹故事,通過線索推斷、交流,共同找到兇手并揭開故事全貌。
與狼人殺相似的是,二者都需要通過推理和表演找出兇手或者是掩飾自己。不同的是,狼人殺只有一個固定的劇情,即狼人在夜晚殺害村民,村民要在白天找出兇手。
而劇本殺則有不同的故事,無論從劇本、犯罪、作案到人物劇情都很多樣化,加上線下劇本殺配備的服裝、布景、道具,甚至玩上一局劇本殺,感覺像是經歷了一場驚險刺激的沉浸式懸疑電影!
今天,我們就用數據跟大家盤一盤劇本殺。
01被高分綜藝帶火的劇本殺
很多小伙伴第一次聽說劇本殺,可能都是因為《明星大偵探》(下文簡稱《明偵》)。2016年的3月,芒果TV首播明星推理真人秀《明偵》第一季。目前《明偵》共推出了五季,播出后在豆瓣的評分都還不錯,分別是9.3/ 9.1 / 9.1 / 8.6/ 8.5.角色扮演、搜證、推理基本構成了許多人對劇本殺的第一印象。
隨著《明偵》的大火,劇本殺也逐漸走進大眾的視野。
說白了,劇本殺就是一個集邏輯推理和角色扮演于一體的社交游戲。人生如戲,劇本殺讓玩家通過演繹角色切身體會到不一樣的多彩人生,同時通過邏輯推理讓玩家在游戲中獲得解謎燒腦的樂趣。
02從線下門店到線上應用 劇本殺到底有多火?
近幾年,劇本殺無論是線下實體店還是線上應用都得到了迅速的發(fā)展。
根據對美團點評的數據整理,2017年年初,劇本殺門店還僅有幾十家,2018年年初增加到幾百家,截至2019年12月,全國的劇本殺店已經由1月初的2400家飆升到12000家,一年之間開出一萬家門店。
在今年2020年初,因受疫情影響,無法出門活動的人們迅速將目光聚集到了線上。大年初一,正處于疫情初期,就有用戶反應《我是謎》APP游戲卡頓,同時微博熱搜榜劇本殺APP《我是謎》也登榜,大量網友均反映系統(tǒng)崩潰。
隨后《我是謎》創(chuàng)始人林世豪連忙發(fā)微博表示,對激增的訪問人數感到驚訝,并表示馬上叫程序員來修復。
說道劇本殺的核心,當然是劇本啦。故事寫得好不好,情節(jié)和邏輯設置是否吸引人都是玩家尤其關注的點。那么哪些劇本最受追捧,劇本都在什么價錢呢?下面我們帶大家分析下淘寶店鋪的數據。
03用Python分析淘寶店鋪劇本殺數據
作為桌游當中的一種,劇本殺在淘寶的銷量數據如何呢?
我們用Python爬取了淘寶上的桌游劇本殺的關鍵詞數據,下面一起具體看看:
桌游銷量TOP10淘寶店鋪
首先,我們看看那些桌游店鋪最熱門。
其中這家九卓家居專營店銷量最高,其次位居二三的分別是游卡桌游昆高專賣店和艾雅玩具店。不過要注意的是,比起普通玩家,這些店鋪買東西的主力肯定還是各大桌游店。
桌游店鋪地區(qū)排名TOP10
這方面可以看到,桌游方面的淘寶店鋪主要還是位于一線城市的。其中,上海、廣東為第一第二位。浙江名列第三,北京位居第四。
桌游卡牌的價格區(qū)間
什么價位的桌游卡牌銷量最高呢?
通過分析發(fā)現,顯然50元以下的桌游銷量最高,銷售額占比高達42.72%。其次是50-100元的,銷售額占比22.47%。然后比較貴的100-200的桌游銷售額占比17.05%。
其中最主要的原因就是便宜,現在的50塊錢可能連一頓下午茶錢都不夠,二是因為50塊錢的桌游大多數以紙牌為主,小巧便利,方便攜帶,出門消磨時光必備物件,很適合我們的生活方式,想要玩大型桌游,還是踏實去桌游店吧,規(guī)則看不懂還有法官。
劇本殺店鋪銷量數據
說完桌游店鋪的數據,那么專門出售劇本殺相關產品的店鋪數據如何呢?我們挑選了一家最火爆的劇本殺店鋪,進行了分析。下面看到具體分析步驟:
我們使用Python獲取了淘寶網上GoDan正版劇本殺商城商品和熱評的數據進行了數據分析,地址如下:
https://shop387156301.taobao.com/category-1515015677.htm
實做過程分為:
數據獲取
數據預處理
數據分析與可視化
1、數據獲取
代碼
# 導入所需包 import pandas as pd import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 登錄淘寶 def login_taobao_acount(): # 登錄URL login_url = 'https://login.taobao.com/member/login.jhtml' # 打開網頁 browser.get(login_url) # 支付寶登錄 log = wait.until( EC.element_to_be_clickable((By.CSS_SELECTOR, '#login-form > div.login-blocks.sns-login-links > a.alipay-login')) ) log.click() # 解析一頁 def parse_one_page(): # 保存信息 title = [] price = [] sales_num = [] comment_num = [] # 獲取內容 contents = browser.find_elements_by_xpath('//*[@id="J_ShopSearchResult"]//div[@class="item3line1"]//dl[contains(@class, "item")]') for content in contents: # 獲取標題 title.append(content.find_element_by_xpath('.//dd[@class="detail"]/a').text) # 獲取價格 price.append(content.find_element_by_xpath('.//dd[@class="detail"]//div[@class="cprice-area"]').text) # 獲取銷量 sales_num.append(content.find_element_by_xpath('.//div[@class="sale-area"]').text) # 獲取評論 comment_num.append(content.find_element_by_xpath('.//h4').text) # 保存數據 df_one = pd.DataFrame({ 'title': title, 'price': price, 'sales_num': sales_num, 'comment_num': comment_num }) return df_one # 獲取所有頁 def get_all_page(): df_all = pd.DataFrame() # 初始URL start_url = 'https://shop387156301.taobao.com/category-1515015677.htm' # 獲取URL browser.get(start_url) # 休眠 time.sleep(3) for i in range(7): # 共6頁 # 打印進度 print('正在獲取第{}頁'.format(i+1)) # 運行函數 df_one = parse_one_page() # 循環(huán)追加 df_all = df_all.append(df_one, ignore_index=True) # 判斷 if i == 6: break else: # 點擊翻頁 click_button = browser.find_element_by_css_selector('#J_ShopSearchResult > div > div.shop-hesper-bd.grid > div.pagination > a.J_SearchAsync.next') click_button.click() # 休眠3秒 time.sleep(3) return df_all if __name__ == '__main__': # 實例化 browser = webdriver.Chrome() wait = WebDriverWait(browser, 10) # 先登錄 login_taobao_acount() df = get_all_page()
我們獲取到的數據格式如下,共有7頁146條數據:
df.head()
2、數據導入和數據預處理
主要包含以下部分工作:
title:提取一級標題和二級標題
price:提取數值
sales_num:提取數值
comment_num:提取數值
sales_amount:price * sales_num
# 導入包 import numpy as np import pandas as pd import re # 讀入數據 df = pd.read_excel('../data/淘寶劇本商城數據.xlsx') # 去重 df = df.drop_duplicates() # 異常替換-預售 df['title'] = df.title.str.replace(r'【預售】', '') # 標題 df['title_1'] = df.title.str.extract(r'【(.*?)】') df['title_2'] = df.title.str.extract(r'【.*?】(.*)') df['title_2'] = df.title_2.str.replace(re.compile(r'【.*?】'), '') # strip df['title_1'] = df.title_1.str.strip() df['title_2'] = df.title_2.str.strip() # 價格 df['price'] = df.price.str.extract(r'(\d+)').astype('int') # 銷量 df['sales_num'] = df.sales_num.str.extract(r'(\d+)').astype('int') # 評論數量 df['comment_num'] = df.comment_num.str.extract(r'(\d+)').astype('int') # 計算銷售額 df['sales_amount'] = df['price'] * df['sales_num'] # 刪除title df = df.drop(['title'], axis=1) df.head()
3、數據探索和可視化
from pyecharts.charts import Bar, Pie, Page from pyecharts import options as opts from pyecharts.globals import SymbolType, WarningType WarningType.ShowWarning = False
GoDan商城價格分布
bins = [0,200,500,1000,4900] bins_label = ['0-200', '200-500', '500-1000', '1000以上'] price_num = pd.cut(df.price, bins=bins, labels=bins_label) price_num = price_num.value_counts().sort_index() price_num
# 產生數據對 data_pair = [list(z) for z in zip(price_num.index.tolist(), price_num.values.tolist())] # 繪制餅圖 # {a}(系列名稱),(數據項名稱),{c}(數值), geybsqlxm7mc(百分比) pie1 = Pie(init_opts=opts.InitOpts(width='1350px', height='750px')) pie1.add('', data_pair=data_pair, radius=['35%', '60%']) pie1.set_global_opts(title_opts=opts.TitleOpts(title='GoDan商城商品價格分布'), legend_opts=opts.LegendOpts(orient='vertical', pos_top='15%', pos_left='2%')) pie1.set_series_opts(label_opts=opts.LabelOpts(formatter=":geybsqlxm7mc%")) pie1.set_colors(['#2C69B0', '#EA6B73', '#AC613C', '#E9C39B']) pie1.render()![]()
首先看到價格區(qū)間。對比桌游50元以下的價格商品最熱門,GoDan的劇本殺就很不一樣了,而是價格在200 - 500之間產品最多,占比77.87%。畢竟一個劇本大概需要過五萬字的文學創(chuàng)作,這個價錢也對得起我們的內容創(chuàng)作者。
銷量TOP10劇本
# 銷量top10 sales_top10 = df.groupby('title_1')['sales_num'].sum().sort_values(ascending=False)[:10] sales_top10 = sales_top10.sort_values() sales_top10
title_1 朝別梨怨 61 孤城 62 愛幼婦產醫(yī)院 64 古鏡奇談-月染長安 66 殺人回憶 76 愿我如星君如月 81 惡淵百物語 92 古木吟 95 窺鏡 96 情辭白帝 134 Name: sales_num, dtype: int32
# 條形圖 bar1 = Bar(init_opts=opts.InitOpts(width='1350px', height='750px')) bar1.add_xaxis(sales_top10.index.to_list()) bar1.add_yaxis('', sales_top10.values.tolist()) bar1.set_global_opts(title_opts=opts.TitleOpts(title='GoDan商城銷量Top10劇本'), visualmap_opts=opts.VisualMapOpts(max_=134)) bar1.set_series_opts(label_opts=opts.LabelOpts(position='right')) bar1.reversal_axis() bar1.render()
最后就是萬眾矚目的top10的劇本排名,前三名「情辭百帝」、「窺鏡」、「古木吟」C君都還沒有玩過,可能是孤落寡聞了,但是「殺人回憶」這個本很多家桌游店都推過,玩起來非常不錯,有機會可以統(tǒng)統(tǒng)嘗試下。
04玩了幾百場劇本殺,如何精準發(fā)現當中套路
最近C君也沉迷于劇本殺,在玩了很多很多很多劇本后,發(fā)現一個驚人的事實,關于一個不用思考就可以找出兇手的邏輯,分享給你,保準你每次都是MVP。
當你玩了上百次劇本殺以后,你會發(fā)現當中的犯案動機真的是多種多樣的,有時候還讓人特別意想不到。所以想但從殺人動機、證據推理上推斷出兇手那根本不可能,而且現在許多新出劇本寫的越來越離譜,那該怎么玩兒呢?
所以古人有云,撥開表明看本質,當中的核心點就是“存在感”,而且是人越少越準。其實這和狼人殺中的珉人是一個道理,都是玄學。
但是劇本殺是游戲,是短時間信息密集游戲,所以每一個出場人物都有他純在的道理。舉個例子,去電影院看《唐人街探案》,人人都是福爾摩斯,但在生活中秒變腦殘黨,為什么?
其中很重要的就是圈層限定,兇手肯定是常出現的幾個人之中,去掉主角、去掉醬油、可能只有一個人讓你選了,劇本殺也一樣,每個人都有必要的任務,你把每個人任務弄清楚,基本可以得出兇手是誰,這可比去盤邏輯簡單多了。
有人會問,這不就失去了劇本殺的原本的樂趣了么?那就錯了,其實玩劇本殺的人都知道,能投對兇手的劇本都是好劇本,投錯了的劇本都是垃圾,最后結果還是很重要的。
結語
最后想說的是,劇本殺真的可以發(fā)散人的思維,因為這里有各種稀奇古怪的劇情,比電視劇可有意思多了,喜歡演戲,喜歡開腦洞的朋友們一定要去嘗試下哦。
參考文獻
劇本殺,能「殺」出一條財路嗎?| 36氪新風向
https://mp.weixin.qq.com/s/evCJdX6JMc3szImf8hwwQw
《天天向上》告訴你,劇本殺有多火
https://mp.weixin.qq.com/s/e4Y6r5pc1qJ2t5pOpfF3Zg
劇本殺是什么?
https://www.douban.com/note/693384771/
線上井噴,社交新寵劇本殺真的是門好生意嗎?
https://www.shangyexinzhi.com/article/517685.html
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
SQL Server 中 CONVERT 函數的日期轉換:從基礎用法到實戰(zhàn)優(yōu)化 在 SQL Server 的數據處理中,日期格式轉換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關聯查詢效率:打破 “拆分必慢” 的認知誤區(qū) 在 MySQL 數據庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數據分析師:表結構數據 “獲取 - 加工 - 使用” 全流程的賦能者 表結構數據(如數據庫表、Excel 表、CSV 文件)是企業(yè)數字 ...
2025-09-18DSGE 模型中的 Et:理性預期算子的內涵、作用與應用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數據分析師:解鎖表結構數據特征價值的專業(yè)核心 表結構數據(以 “行 - 列” 規(guī)范存儲的結構化數據,如數據庫表、Excel 表、 ...
2025-09-17Excel 導入數據含缺失值?詳解 dropna 函數的功能與實戰(zhàn)應用 在用 Python(如 pandas 庫)處理 Excel 數據時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應用 在數據分析與統(tǒng)計學領域,假設檢驗是驗證研究假設、判斷數據差異是否 “ ...
2025-09-16CDA 數據分析師:掌控表格結構數據全功能周期的專業(yè)操盤手 表格結構數據(以 “行 - 列” 存儲的結構化數據,如 Excel 表、數據 ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數量的準確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進行 HTTP 網絡請求開發(fā)時(如使用requests ...
2025-09-15CDA 數據分析師:激活表格結構數據價值的核心操盤手 表格結構數據(如 Excel 表格、數據庫表)是企業(yè)最基礎、最核心的數據形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調用、數據爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數據的科學計數法問題 為幫助 Python 數據從業(yè)者解決pd.read_csv讀取長浮點數據時的科學計數法問題 ...
2025-09-12CDA 數據分析師:業(yè)務數據分析步驟的落地者與價值優(yōu)化者 業(yè)務數據分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務邏輯:從規(guī)則拆解到數據把關的實戰(zhàn)指南 在業(yè)務系統(tǒng)落地過程中,“業(yè)務邏輯” 是連接 “需求設計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數據驅動下的精準零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當下,精準營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數據分析師與戰(zhàn)略 / 業(yè)務數據分析:概念辨析與協同價值 在數據驅動決策的體系中,“戰(zhàn)略數據分析”“業(yè)務數據分析” 是企業(yè) ...
2025-09-11Excel 數據聚類分析:從操作實踐到業(yè)務價值挖掘 在數據分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數據中挖 ...
2025-09-10統(tǒng)計模型的核心目的:從數據解讀到決策支撐的價值導向 統(tǒng)計模型作為數據分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10