0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python分析9萬條數(shù)據(jù) 復仇者聯(lián)盟誰才是C位

電子工程師 ? 來源:fqj ? 2019-05-05 09:13 ? 次閱讀

《復聯(lián) 4》國內(nèi)上映第十天,程序員的江湖里開始流傳這樣一個故事,即:

漫威宇宙,其實就講了一件事情。整個宇宙就好比一個項目組。其中有一群叫作美國隊長、鋼鐵俠、驚奇隊長、浩克、索爾等人在維護這個項目,兢兢業(yè)業(yè)的維護整個項目。

某一天,出現(xiàn)了一個天才程序員,叫滅霸。當他加入到這家公司的時候,他意識到,這個項目已經(jīng)非常龐大,僅僅是編譯,就要幾個小時。運行起來負重累累。而服務器資源又非常的有限,老板又不給預算買新機器,如果一直繼續(xù)這么開發(fā)下去,這個項目遲早要出現(xiàn) P0 事故。于是,他下定決定要把這個項目全面優(yōu)化,使用用面向?qū)ο笏枷?,提取重復代碼,業(yè)務拆分,算法優(yōu)化等手段,徹底優(yōu)化,目標是代碼量減少 50%。

美國隊長帶領(lǐng)的項目組叫復仇者聯(lián)盟,發(fā)現(xiàn)了滅霸程序員的想法后,阻止并警告滅霸說:不要輕易去改老代碼??!很容易出 bug 的,代碼能跑就行??!

那么,作為一個寫程序員的電影,我們怎么不能用數(shù)據(jù)來分析一下,喜歡漫威宇宙的觀眾對《復聯(lián) 4》的評價呢?

抓取數(shù)據(jù)

業(yè)界朋友們,在電影分析中,使用貓眼的數(shù)據(jù)比較多。在本文中,筆者也使用了貓眼的接口來獲取數(shù)據(jù),方便處理,數(shù)據(jù)量也比較多。

Python 中,使用 Request 可以很方便地發(fā)送請求,拿到接口返回的 JSON 數(shù)據(jù),來看代碼:

defgetMoveinfo(url):session=requests.Session()headers={"User-Agent":"Mozilla/5.0",
"Accept":"text/html,application/xhtml+xml",
"Cookie":"_lxsdk_cuid="}response=session.get(url,headers=headers)ifresponse.status_code==200:
returnresponse.textreturnNone

請求返回的是一個 JSON 數(shù)據(jù),拿到我們想要的評論原始數(shù)據(jù),并將數(shù)據(jù)存儲在數(shù)據(jù)庫中:

defsaveItem(dbName,moveId,id,originalData):conn=sqlite3.connect(dbName)conn.text_factory=strcursor=conn.cursor()ins="INSERTORREPLACEINTOcommentsvalues(?,?,?)"v=(id,originalData,moveId)cursor.execute(ins,v)cursor.close()conn.commit()conn.close()

經(jīng)過大概兩個小時,終于從貓眼爬取了大約 9 萬條數(shù)據(jù)。數(shù)據(jù)庫文件已經(jīng)超過了 100M 了。

數(shù)據(jù)清洗

因為在上面抓取下來的數(shù)據(jù),直接進行了原數(shù)據(jù)的存儲,沒有進行數(shù)據(jù)的解析處理。接口中包含了很多數(shù)據(jù),有用戶信息、評論信息等。本次分析,只使用了部分數(shù)據(jù),所以需要將用到的相關(guān)數(shù)據(jù)清洗出來:

defconvert(dbName):conn=sqlite3.connect(dbName)conn.text_factory=strcursor=conn.cursor()cursor.execute("select*fromcomments")data=cursor.fetchall()foritemindata:commentItem=json.loads(item[1])movieId=item[2]insertItem(dbName,movieId,commentItem)cursor.close()conn.commit()conn.close()definsertItem(dbName,movieId,item):conn=sqlite3.connect(dbName)conn.text_factory=strcursor=conn.cursor()sql='''INSERTORREPLACEINTOconvertDatavalues(?,?,?,?,?,?,?,?,?)'''values=(getValue(item,"id"),movieId,getValue(item,"userId"),getValue(item,"nickName"),getValue(item,"score"),getValue(item,"content"),getValue(item,"cityName"),getValue(item,"vipType"),getValue(item,"startTime"))cursor.execute(sql,values)cursor.close()conn.commit()conn.close()

通過 JSON 庫將原始數(shù)據(jù)解析出來,將我們需要的信息存儲到新的數(shù)據(jù)表中。

數(shù)據(jù)分析

因為沒有任何一個平臺能夠拿到用戶的購票數(shù)據(jù),我們只能從評論的數(shù)據(jù)中,以小見大,從這些數(shù)據(jù)中,分析出一些走勢。 在評論數(shù)據(jù)中,我們能看到評論用戶所在的城市。將數(shù)據(jù)所在的位置解析,劃分到各對應的行政省,可以看到每個省評論數(shù)量,見下圖(顏色越紅,用戶評論數(shù)量越多):

城市

從圖中可以看到, 上海、廣州、四川用戶的數(shù)量顯然要比其他城市的用戶數(shù)量要多得多。再來看一下代碼:

data=pd.read_sql("select*fromconvertData",conn)city=data.groupby(['cityName'])city_com=city['score'].agg(['mean','count'])city_com.reset_index(inplace=True)fo=open("citys.json",'r')citys_info=fo.readlines()citysJson=json.loads(str(citys_info[0]))printcity_comdata_map_all=[(getRealName(city_com['cityName'][i],citysJson),city_com['count']
[i])foriinrange(0,city_com.shape[0])]data_map_list={}foritemindata_map_all:
ifdata_map_list.has_key(item[0]):
value=data_map_list[item[0]]
value+=item[1]
data_map_list[item[0]]=value
else:
data_map_list[item[0]]=item[1]
data_map=[(realKeys(key),data_map_list[key])forkeyindata_map_list.keys()]

漫威電影一直深受中國朋友們喜歡的高分電影。豆瓣評分 8.7 分,那我們的評論用戶中,又是一個什么樣的趨勢呢?見下圖:

Python分析9萬條數(shù)據(jù) 復仇者聯(lián)盟誰才是C位

評分數(shù)

從圖中可以看到,評 5 分的數(shù)量遠高于其他評分,可見中國的觀眾朋友確實喜歡漫威的科幻電影。

復聯(lián)從 1 開始便是漫威宇宙各路超級英雄的集結(jié),到現(xiàn)在的第 4 部,更是全英雄的匯聚。那么,在這之中,哪位英雄人物更受觀眾歡迎?先看代碼:

attr=["滅霸","美國隊長","鋼鐵俠","浩克","奇異博士","蜘蛛俠","索爾","黑寡婦","鷹眼","驚奇隊長","幻視","猩紅女巫","蟻人","古一法師"]alias={"滅霸":["滅霸","Thanos"],"美國隊長":["美國隊長","美隊"],"浩克":["浩克","綠巨人","班納","HULK"],"奇異博士":["奇異博士","醫(yī)生"],"鋼鐵俠":["鋼鐵俠","stark","斯塔克","托尼","史塔克"],"蜘蛛俠":["蜘蛛俠","蜘蛛","彼得","荷蘭弟"],"索爾":["索爾","雷神"],"黑寡婦":["黑寡婦","寡姐"],"鷹眼":["鷹眼","克林頓","巴頓","克林特"],"驚奇隊長":["驚奇隊長","卡羅爾","驚奇"],"星云":["星云"],"猩紅女巫":["猩紅女巫","緋紅女巫","旺達"],"蟻人":["蟻人","蟻俠","Ant","AntMan"],"古一法師":["古一","古一法師","法師"]}v1=[getCommentCount(getAlias(alias,attr[i]))foriinrange(0,len(attr))]bar=Bar("Hiro")bar.add("count",attr,v1,is_stack=True,xaxis_rotate=30,yaxix_min=4.2,xaxis_interval=0,is_splitline_show=True)bar.render("html/hiro_count.html")

運行結(jié)果如下圖,可以看到鋼鐵俠鋼鐵俠是實至名歸的 C 位,不僅電影在電影中是,在評論區(qū)仍然也是實至名歸的 C 位,甚至于遠超美隊、寡姐和雷神:

Python分析9萬條數(shù)據(jù) 復仇者聯(lián)盟誰才是C位

英雄評論次數(shù)

從以上觀眾分布和評分的數(shù)據(jù)可以看到,這一部劇,觀眾朋友還是非常地喜歡。前面,從貓眼拿到了觀眾的評論數(shù)據(jù)?,F(xiàn)在,筆者將通過 Jieba 把評論進行分詞,然后通過 Wordcloud 制作詞云,來看看,觀眾朋友們對《復聯(lián)》的整體評價:

詞云分析

可以看到,滅霸和鋼鐵俠出現(xiàn)的詞頻比其他英雄要高很多。這是否表示,這部劇的主角就是他們兩個呢?

細心的朋友應該發(fā)現(xiàn)了,鋼鐵俠、滅霸的數(shù)量在詞云和評論數(shù)量里面不一致。原因在于,評論數(shù)量就按評論條數(shù)來統(tǒng)計的,而詞云中,使用的是詞頻,同一條評論中,多次出現(xiàn)會多次統(tǒng)計。所以,滅霸出現(xiàn)的次數(shù)居然高于了鋼鐵俠。

最后,再來分析一下鋼鐵俠與滅霸的情感分析,先上代碼:

defemotionParser(name):conn=conn=sqlite3.connect("end.db")conn.text_factory=strcursor=conn.cursor()likeStr="like"%"+name+"%""cursor.execute("selectcontentfromconvertDatawherecontent"+likeStr)values=cursor.fetchall()sentimentslist=[]foriteminvalues:
sentimentslist.append(SnowNLP(item[0].decode("utf-8")).sentiments)plt.hist(sentimentslist,bins=np.arange(0,1,0.01),facecolor="#4F8CD6")
plt.xlabel("SentimentsProbability")
plt.ylabel("Quantity")
plt.title("AnalysisofSentimentsfor"+name)
plt.show()cursor.close()conn.close()

此處,使用 SnowNLP 來進行情感分析。

情感分析,又稱為意見挖掘、傾向性分析等。簡單而言,是對帶有情感色彩的主觀性文本進行分析、處理、歸納和推理的過程。

Python分析9萬條數(shù)據(jù) 復仇者聯(lián)盟誰才是C位

滅霸

鋼鐵俠

從圖中看到, 鋼鐵俠的正向情感要比滅霸的正向情感要高,反派角色就是容易被人抗拒。

最最后,從《銀河護衛(wèi)隊》時期穿越而來的滅霸在最后分鐘變成了粉末消散而去,這也給我們程序員一個警鐘:

“重構(gòu)代碼,改善設計,降低系統(tǒng)復雜度,這樣做很好。但是,一定要保證系統(tǒng)的穩(wěn)定運行,不留安全隱患,不然,早晚會丟掉自己的工作?!?/p>

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7113

    瀏覽量

    89303
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4812

    瀏覽量

    68830
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4802

    瀏覽量

    84889

原文標題:Python分析9萬條數(shù)據(jù)告訴你復仇者聯(lián)盟誰才是絕對C位

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    科沃斯DK39復仇者聯(lián)盟版掃地機器人開箱體驗

    如果你是一個電影愛好,一定不會錯過當前最熱門的電影——復仇者聯(lián)盟3,作為漫威宇宙近十年的最強集結(jié),曾經(jīng)各自為戰(zhàn)的超級英雄們,為了對抗共同的敵人而齊聚復仇者
    的頭像 發(fā)表于 05-21 10:35 ?5711次閱讀

    一加6復仇者聯(lián)盟版圖賞

    一加6復仇者聯(lián)盟版 隨著《復仇者聯(lián)盟3:無限戰(zhàn)爭》的熱映,有不少品牌方也選擇在這個時間節(jié)點推出復聯(lián)版產(chǎn)品,搶跟一波熱潮,一加手機也是其中之一。5月17日,一加6正式發(fā)布,除了普通版本外
    的頭像 發(fā)表于 05-28 14:35 ?4588次閱讀

    銘瑄正式推出復仇者M3 RGB內(nèi)存,具有12種燈效的復仇者M3實際表現(xiàn)如何呢?

    復仇者M3燈效方面,預設有絢彩RGB燈效,5個獨立光效區(qū)域,支持主板軟件調(diào)控,12種燈效模式,和其他支持調(diào)控的硬件同步,展現(xiàn)別致的燈光氛圍。
    的頭像 發(fā)表于 07-20 15:48 ?4774次閱讀

    復仇者”ER無人機持續(xù)飛行了23.4小時,完成模擬偵察任務

    通用原子公司“復仇者”ER無人機創(chuàng)造了新的續(xù)航紀錄,該無人機在典型情報、監(jiān)視與偵察(ISR)任務設置中持續(xù)飛行了23.4小時,執(zhí)行了模擬偵察任務。
    發(fā)表于 07-30 14:31 ?4523次閱讀

    復仇者M3用性價比吹響了普及RGB“馬甲”的號角

    3200MHz時銘瑄復仇者M3的讀取、寫入和復制性能分別提升了33.12%、29.14%和21.72%,延遲也降低至83.6ns。
    的頭像 發(fā)表于 08-30 10:22 ?3747次閱讀

    臺積電組成復仇者聯(lián)盟 重回戰(zhàn)場對抗英特爾

    趁對手放緩腳步,英特爾過去的手下敗將,結(jié)合臺積電的先進制程組成復仇者聯(lián)盟,一一重回半導體的舞臺發(fā)光發(fā)熱,這是今年值得注意的投資機會。
    的頭像 發(fā)表于 05-27 14:08 ?2525次閱讀

    小米手環(huán)4復仇者聯(lián)盟系列限量版發(fā)布 售價349元

    小米手環(huán)4復仇者聯(lián)盟系列限量版正式亮相,售價349元
    發(fā)表于 06-13 15:59 ?5437次閱讀

    小米手環(huán)4復仇者聯(lián)盟限量版正式開賣 售價349元

    6月28日消息,小米商城官方微博預告,小米手環(huán)4復仇者聯(lián)盟限量版將在今天上午10點正式開賣,售價349元。
    發(fā)表于 06-28 14:47 ?1516次閱讀

    小米手環(huán)4復仇者聯(lián)盟限量版高清圖賞

    7月29日消息,小米手環(huán)4還帶來了復仇者聯(lián)盟限量版,售價349元。包含金屬銘牌、收藏證書、定制腕帶等,其中定制腕帶為美隊、鋼鐵俠、漫威三款,致敬熒幕經(jīng)典英雄。
    的頭像 發(fā)表于 07-30 10:08 ?7484次閱讀

    AMAZFIT智能手表2ECG版和復仇者聯(lián)盟系列限量版因工藝復雜無法按時開售

    7月30日晚,華米科技發(fā)布公告,由于全陶瓷表身工藝十分復雜、加工難度很高,導致原定于本月上市的AMAZFIT智能手表2 ECG版和復仇者聯(lián)盟系列限量版無法按時開售,后續(xù)上市日期確定之后,我們將第一時間通知。
    發(fā)表于 07-31 14:28 ?1389次閱讀

    94折采購元器件 還能免費看“復仇者聯(lián)盟”?

    94折采購元器件,還能免費看“復仇者聯(lián)盟”?
    的頭像 發(fā)表于 03-01 11:13 ?1650次閱讀

    AMAZFIT智能手表2復仇者聯(lián)盟限量版將于10月18日開啟限量預售

    6月11日,華米發(fā)布AMAZFIT智能手表2,定位旗艦,支持三網(wǎng)4G通話,標準版定價999元,ECG版售價1299元。此外還有復仇者聯(lián)盟限量版,售價1499元。
    發(fā)表于 10-15 16:20 ?1783次閱讀

    英特爾宣布《復仇者聯(lián)盟》系列酷睿處理器停產(chǎn)

    、i9-10850K 和 i9-10900K 都將停產(chǎn)。 IT之家了解到,今年 8 月底,英特爾在京東上架了復仇者聯(lián)盟珍藏版的 i7-10700KA 和 i
    的頭像 發(fā)表于 12-19 09:41 ?3489次閱讀

    復仇者聯(lián)盟工廠監(jiān)控裝置

    電子發(fā)燒友網(wǎng)站提供《復仇者聯(lián)盟工廠監(jiān)控裝置.zip》資料免費下載
    發(fā)表于 11-08 15:18 ?0次下載
    <b class='flag-5'>復仇者</b><b class='flag-5'>聯(lián)盟</b>工廠監(jiān)控裝置

    科技巨頭組建“復仇者聯(lián)盟”,挑戰(zhàn)英偉達的NVLink技術(shù)

    據(jù)報導,包括 AMD、谷歌、微軟、英特爾(Intel)、博通(Broadcom)和思科(Cisco)在內(nèi)的多家國際科技龍頭聯(lián)手,組成“復仇者聯(lián)盟”,欲挑戰(zhàn) NVIDIA 的 NVLink 技術(shù)。
    的頭像 發(fā)表于 05-31 11:54 ?680次閱讀