优达twitter 清理_云吸狗吸出的啊哈时刻
——一顆吃飽沒事干強行擼貓老被咬的鹵蛋對搞笑萌寵推特WeRateDogs的過度分析
僅以此文獻給高冷狂傲拽炸天見雞胸肉一秒變乖的蛋蛋:
蛋蛋的帥照
(一臉怨念地)如果不是因為我每次去擼你你都狠狠咬我的手,這個項目早八百年前就擼完了(cai guai)~
綜述
這個項目是優達學城(Udacity)數據分析師(進階)納米學位的第二個項目。以數據清洗的演練為主要目的,并附帶了額外的分析部分。
我們分析的數據集是推特用戶 @dog_rates 的推特記錄,推特昵稱為 WeRateDogs。WeRateDogs 是一個推特主,他以詼諧幽默的方式對人們的寵物狗評分。這些評分通常以 10 作為分母。但是分子則一般大于 10:11/10、12/10、13/10 等等。為什么會有這樣的評分?因為 "They're good dogs Brent." WeRateDogs 擁有四百多萬關注者,曾受到國際媒體的報道。(這一段搬運自優達學城的項目介紹文件,略有修改)
我們在原始數據集中發現了14個問題,其中12個是質量問題,2個是整潔度問題。隨后我們進行了一系列清洗操作。清洗操作完成后,我們為數據集手工添加了5個新的特征。最后,我們得到了15年11月-17年8月,賬號發出的1991條推文和它們相關的數據。在以點贊量和轉贊比為核心指標,進行了推文受歡迎程度的主題探索后,我們發現以下三個有趣的現象:
人們對不同品種的狗的喜愛程度沒有統計學意義上顯著的區別;
WeRateDogs推文中,關于小狗的沒有關于大狗的受歡迎;
推主打出的低分和高分推文在受歡迎方式上有區別:低分推文的轉贊比較高,而高分推文的平均點贊量更高。
我們自信,截至2019年2月底,這個項目數據所作清洗的細致程度和后續分析的深度,在全球這一項目的所有公開作品中都能排在前列。
希望查看項目代碼,完整代碼輸出和數據集的朋友,請移步至此項目的GitHub頁面。代碼輸出中的文案如與此文(或項目報告文件內容)不同,以此文(或項目報告文件內容)為準。代碼輸出中的文案未經編輯和校對。
1. WeRateDogs是什么?可以補鈣嗎?
WeRateDogs推特頭像
WeRateDogs是推特上受歡迎的萌寵推主之一。其主要風格為搞笑,具體表現形式為使用推文為一張狗狗(well,理論上都是)的照片進行十分制的打分。盡管其滿分為10分,但推主常常打出10分以上的高分(13,14等),并一本正經的配上推文說明理由,十分有趣。推主有時也會一本正經給一些并不是狗的照片打分,喜劇效果十足。某些時候某些狗狗會被刻意打出低分,同樣配上令人捧腹的推文。
WeRateDogs創建于11月15日。創始人時坎貝爾大學的(輟)學生Matt Nelson,當時讀該校高爾夫管理專業的大二學生。當時,他和他的朋友們一起在一家蘋果蜜蜂餐廳(Applebee's)的餐桌旁,用WeRateDogs賬號發出了第一條推特。
如同天底下所有真實的創業故事那樣,這個獨特的推特賬號的發展并非一帆風順。15年11、12月是最初的激情,很快挑戰便接踵而至:
大學繁重的課業使得Nelson疲憊不堪,嚴重睡眠不足,甚至不得不放棄了高爾夫球(well,作為一名高爾夫管理專業的學生,這好像有點,emmm......too much);
16年2月,甚至有人給他下套,聲稱WeRateDogs侵犯了圖片版權;
16年春季,他招聘并最終開除了兩名員工;其中一位還想買下他的賬號。
正在發推的Matt,和知道他在云吸狗并十分哀怨的大金毛Zoey
這里當然沒有主人公強撐這,憑著極度的自信、過人的膽識強撐著運營,并最后成功逆襲的故事。身心俱疲的Nelson當然想過放棄。他聯系了John Ricci,一位擁有豐富社交媒體運營經驗的市場人,想要賣掉賬號一了百了,沒想到后者居然拒絕了。Rucci看到了賬號的潛力,極力勸說Matt改變方式堅持運營,并在16年某個未知的時間點開始幫助他運營。Rucci每天幫Matt篩選出20-30張各地粉絲發來的請求打分的照片,而Nelson則挑出兩張,分別在中午和晚上8:00左右發出即可。慢慢的,Nelson重新找到了節奏。17年某個未知的時間點,升入大四的Nelson退學,全心投入推特賬號的運營。
現在,WeRateDogs主要依靠自營電商盈利,向通過推特賬號積攢的粉絲售賣寫有推特賬號標志性語錄的狗狗圍巾、衛衣等。Nelson自己透露,每個月的收入在1萬美元左右。
2. 我們為啥閑著沒事兒干會對一個推特賬號感興趣?
Well,首先,這是一份作業。命題作文的命題如此,不研究它還能研究啥。
不過嘛,這個推特賬號也不是特別沒有意思。顯然,WeRateDogs誤打誤撞探索出的這一定位十分有趣。如果我們拍一拍腦門調取一下我們的(未經檢驗、直覺構成的)常識,我們不難認為在傳統上:
1)萌寵推主千千萬萬;
2)絕大多數萌寵的推文都停留在“啊!好萌!”的層次上;
3)萌寵推主們之間的競爭主要依靠誰更萌獲勝;
4)這樣的生態體系顯然很容易導致嚴重的同質化,進而演變為洗稿和相互抄襲;
5)給狗狗評價和打分的博主又太過嚴肅顯得不近人情;
6)傳統的搞笑博主又幾乎沒有與寵物結合起來的。
通過直覺,我們不難得出馬后炮式的經典結論:系統性的發掘狗狗的萌點,并通過帶有喜劇色彩的文案強化,最后配上打破傳統令人捧腹的打分和評價,令人耳目一新。這并不令人意外(說得就好像我們也能搞出來一樣)。
但是,正如開心麻花的喜劇,在讓觀眾開懷大笑之余,也有商業和受歡迎程度的考量一樣,WeRateDogs的內容質量顯然也是有部分更受歡迎的。問題是,究竟是怎樣的內容更受歡迎呢?
在進行分析之前,我們需要明確,什么是“更受歡迎”。傳統意義上,我們需要知道一條推特在發出的時候有多少關注者,這條推特有多少瀏覽量,多少點贊數和多少轉發數,來一步一步計算轉化比例。在這一框架中,更多的瀏覽量可能意味著火爆,但運營者們顯然更關注點贊和轉發的數據。
在這篇過度分析中,我們將圍繞兩個維度進行受歡迎程度的探索:
點贊量,在拿不到關注量和瀏覽量這兩個數據的前提之下,點贊量(數據集中叫favorite,Teitter上實際叫like)是最能直接反映一條推文得到關注和贊賞的指標;
轉贊比(Retweet/Favorite Ratio),衡量的是轉發用戶占點贊用戶的比例,用于衡量核心用戶占整體點贊用戶的比例;
轉贊比可以用來衡量核心用戶占比的理論依據如下:
一個用戶在社交網絡上發出的內容,本質上都是他/她的社交貨幣;
社交貨幣是建立人設的一部分,是用戶與周遭用戶交流的一種前置條件,因此相比起點贊,轉發更加困難,因其牽扯到個人形象問題;
社交貨幣依靠轉發和原創內容生成;點贊不涉及分享,絕大多數社交網絡(嗯我沒有說微信朋友圈)里看不到點贊的詳細信息,并不構成社交貨幣;
轉發,意味著用戶愿意將推文內容作為自己人設的一部分;這可能意味著他/她是這一話題的核心粉絲,并且不介意周圍人知道這一點,哪怕,在此案例中,這枚社交貨幣是娛樂用途。
3. 推特賬號運營的基本情況一覽
在嘗試使用數據解答任何問題之前,需要使用數據對全局進行大概的了解。不然任何分析都是無源之水無本之木。
3.1 WeRateDogs的啊哈哈時刻
最棒寶貝:勤奮好學大柯基!14分!(最高評分)
學霸基本基
This is Cassie. She is a college pup. Studying international doggo communication and stick theory. 14/10 so elegant much sophisticate https://t.co/t1bfwz5S2A
最佳人氣:婦女之友!(最多點贊)
婦女之友
Here's a super supportive puppo participating in the Toronto #WomensMarch today. 13/10 https://t.co/nTz3FtorBc
最多鐵粉:超萌小柯基!(最高轉贊比)
超萌小柯基
Retweet the h*ck out of this 13/10 pupper #BellLetsTalk https://t.co/wBmc7OaGvS
欸喂喂喂,Matt你這樣構成誘導分享啊!不怕被平臺封嗎?!
特別·最具驚喜獎:最新發現的神秘物種!
咦這是什么奇怪的狗狗~
Cool dog. Enjoys couch. Low monotone bark. Very nice kicks. Pisses milk (must be rare). Can't go down stairs. 4/10 https://t.co/vXMKrJC81s
以及,特別·最佳粉絲獎(& 最少鐵粉獎):天生慧眼Kelvin Hill !
火眼金睛就是你~
3.2 分數越來越高,當然是因為超棒狗狗越來越多啦!
狗狗平均評分逐月走勢
將賬號打出的分數按月匯集,繪制為箱型圖。平均分數越來越高;單月的分數區間越來越小
3.3 成長的煩惱:轉贊率一路下滑
推特點贊/轉發量延時間軸分布
將每一條推特信息的點贊量(綠)和轉發量(黃)取10的對數后繪制成散點圖;將轉贊率取5日移動平均值繪制為折線圖;取賬號點贊量創下新高的推特,用紅色做特別標注。三者沿同樣的時間序列排序。
隨著時間的推移,雖然賬號的點贊量和轉發數都在上漲,但新高間隔越來越長,轉贊比一路下降的趨勢不可逆轉。
3.4 爆發—跌倒—站穩腳跟:艱難的16年4月,賬號歷史上的至暗時刻
賬號運營情況逐月變化情況
將賬號的推特條數(紅色折線),點贊量和轉發量按月匯總,分別繪制加(上)和和平均值(下)的柱狀圖。
在初期的爆發之后,16年春季推特賬號的點贊量和推特條數不斷下滑。結合媒體的報道,當時賬號確實正在經受初期的失敗和團隊動蕩。不過在如此的壓力之下,Matt的推文質量(平均點贊量和轉發量)還能保持,非常厲害!
4. 推文幾點,星期幾發都行:客觀因素對推文受歡迎程度影響不大
4.1 Matt Nelson是個夜貓子,越夜越瘋狂那種
推文狀況(按小時聚合)
推文狀況(分年按小時聚合)
將推文數據按小時聚合,繪制點贊量、轉發量,轉贊比和推文條數。
我們發現:MattNelson喜歡在下午和晚上發推。
不過,為他創下了最高點贊量的式凌晨6點的一條推文。就是這條推文,使我們不得不給這幅圖的y軸主坐標取對數。不得不說,他老人家真的是越夜越瘋狂啊~
不過,17年他再也沒有在5點到13點之間發過推特了。被媽媽罵了?
4.2 周一生產力爆棚,但對推文的受歡迎程度影響不大
推文狀況(按周聚合)
推文狀況(分年按周聚合)
將推文的發帖量,平均點贊量和轉發量按星期匯集。
長期來看:周一Matt的發帖量略高,周三平均點贊量更高,但總體趨勢平緩。我們不認為這其中蘊藏著什么秘密。
當然,我們有可能是錯的。如果將數據去趨勢化再聚集,說不定就是另外一個故事了。
5. 眾汪平等,小狗疲勞,與高低有別——對推文特征的觀察
在我們提取了一系列推文特征之后,我們最終得出了這三個有意思的結論。
5.1 眾汪平等
平均點贊量Top10
篩選出數據集中被機器學習判斷“一定是狗”的條目。按照品種字段聚合,計算平均點贊量,平均轉贊比和推特條數。選出前10名,按照平均點贊量由高到低排列??梢钥吹?#xff1a;薩盧基獵犬,法國斗牛犬等品種有相對更高的平均點贊量。
但是,我們進一步的檢驗表明,這些品種中存在的平均點贊量和轉贊比的區別并沒有統計學意義上的區別:根據已知的條件判斷,隨著推特條數的增多,這些品種的平均點贊量和平均轉贊比很可能趨于一致。也就意味著,我們沒有足夠的證據認為他們的受歡迎程度是不同的。(冗長的統計學證明我們就不貼上來啦~)
5.2 小狗疲勞:小奶狗居然不吃香?!
狗狗大小與受歡迎程度
推主Marr Nelson在表述狗狗的時候發明了如下詞匯:
Doggo,可以簡單的理解為大狗(盡管作者表示這并不代表大狗就不是寶寶了)
Pupper,可以簡單的理解為小狗,主要是體型小,一般年齡也比較小(但這不代表大狗就不是寶寶了)
Puppo,可以簡單的理解為青春期的狗狗,介于大狗和小狗之間(也可能是表現得像pupper的doggo)
Floofer,可以簡單的理解為毛好看的狗狗。
這些詞匯主要用于形容不同狗狗的生長狀態。從詞匯構成的角度來看,其主要由一個主詞匯和后綴變體組成(例如doggo = dog + go, pupper = pup + per),營造出一種喜慶但略顯低齡化的語言現象(待補充)。上述所謂的“簡單理解”,是指在盡可能不曲解原意的情況下,拋棄作者營造的一切搞笑成分,并盡量壓縮理解難度。總而言之言而總之一言以蔽之,這個分類比較隨意,親愛的讀者你大概知道這么個意思就行。
我們按照上述分類條件將推文匯總。我們發現小狗和未說明的推特條目似乎沒有其他分類平均點贊量高。進一步的統計分析則支持了上述觀察??磥碓贛att這里萌萌噠的小奶狗不太行呀~
5.3 高低有別:低分有鐵粉,高分更吸睛
不同分數等級的推文點贊與轉發量分布情況(嗯我們最滿意的一張圖無誤了)
我們將分數分為4個等級:
分數段
類別(中)
類別(英)
0-3.5
極低
Very Low
3.5-7
低
Low
7-10
中
Medium
10-14
高
High
以推文的點贊量和轉發量分別為橫、縱坐標繪制散點圖,并表明其分數類別,可以看到不同的分數組在分布上有明顯的差別。
不同分數等級的受歡迎程度
以上述分數段分組,繪制點贊量和轉贊比的箱型圖。似乎高分組的平均點贊量更高,低分與超低分組擁有更高的轉贊比。后續的統計學檢驗支持了我們這一結論:低分有鐵粉,高分更吸睛。
這可能是由于低分組主要集中在賬號創立早期,轉贊比本身就較高的時代,拉高了平均值。下圖顯示了分數分組占比的逐年變化情況。
分數等級的逐年占比變化圖
附錄:數據集的基本情況介紹,及數據清洗步驟簡介
數據集基本情況簡介
綜述
我們一共使用了三個數據集。分別是:
twitter_archive_enhanced.csv:包含推文內容,推文id和使用編寫糟糕的程序提取的一些特征。
tweet.json:每條推特的附加數據,包含了推文的轉發和點贊情況(因此也是此項目的核心數據集)。此數據集我們直接使用了優達學城提供的版本,沒有選擇通過Twitter API獲取。
image-predictions-download.tsv:包含對推文圖片中狗狗品種的預測。按照項目要求,這個文件使用了Requst庫獲取。
主數據集字段名稱及字段描述
列名稱
含義
tweet_id
推文id
timestamp
推文時間戳
text
推文內容
rating_numerator
推文中對狗狗評分的分子
rating_denominator
推文中對狗狗評分的分母
name
推文中狗狗的名字
doggo
狗狗是否為大狗
floofer
狗狗是否是毛好看的狗狗
pupper
狗狗是否是小狗
puppo
狗狗是否是青春期的狗狗
retweeted_status_id
推文是否是轉發推文
識別出的數據集問題
質量問題
主數據集中,name列有大量空值,和錯誤的情況;
主數據集中,部分數據錯誤的提取了其他包含“/”的文本作為分數,這些數據被保存在了tweets_mulpitple_number數據集中;
主數據集中,有一行數據雖然包含數字,但是一條籌款的推文,并不包含評分;這條數據被保存在了tweets_fund_raise數據集中;
主數據集中,部分數據存在多只狗狗統一打(總)分的情況,導致這些條目的分子和分母顯著較高;這些數據儲存在tweets_multiple_dogs中;
主數據集中,部分數據存在推文主題真的是狗狗的情況下,有分子提取錯誤的情況;主要體現在這些分數為了某些紀念日等,使用了特殊的小數分數;這些數據儲存在tweets_wrong_numerator_dog中;
主數據集中,部分數據在主題可能不是狗的情況下,有分子提取錯誤的情況;這些數據儲存在了tweets_wrong numerator_NOT_dog數據集中;
主數據集中,timestamp列數據類型錯誤;
主數據集中,有部分數據屬于轉發的推特,與原始數據重復;
主數據集中,部分數據里只有一只狗,卻因為text列中包含兩個狗狗分類的信息,而擁有兩個分類;這些數據被儲存在了_1dog_2stage數據集中;
主數據集中,部分數據,一條推特對兩只處于不同生長階段的打了同樣的分數,因此擁有兩個分類;這些數據被儲存在了_2dogs_1tweet數據集中;
包含轉發和點贊信息的retweets_lite數據集中,id列應更名為tweets_id,與dogrates_lite和breeds_lite保持一致;
主數據集中,有部分數據包含兩組正確的分數,但只提取了一組;這些數據被保存在了tweets_multiple_number_case2數據集中(tweets_multiple_number中的數據不在此列)。
整潔度
主數據集中,doggo,floofer,pupper,puppo四列是一個變量的觀察結果,應該被儲存在一列中;
包含轉發和點贊信息的retweets_lite數據集應當和主數據集dogrates_lite合并,因其觀察的而對象是相同的。
數據清洗的步驟
針對質量問題的操作:
刪除影響分析的數據
刪除了一條tweet_id為810984652412424192的推特,因其是一條籌款推文,并不包含這份報告的分析范圍之內;
刪除了兩條評分顯著異常的推文,其中一條慶祝了美國獨立日,另一條似乎是為名人;
在驗證轉發數據不包含任何未知的信息后,我們抓住轉發推特都帶有“RT @”的特征刪除了他們
補全空值
通過優化的正則表達式重新提取了狗狗的名字:我們重做了name列,存在多只狗狗的推文,其name列值使用了&將兩名字連接(可能影響了名字頻率統計);
修復錯誤
修復語言表達造成的的一只狗狗對應多個分類問題(人工辨別,手動清理)
修復推文中就是有兩只不同分類的狗狗的問題:我們為這類推文單獨建立了一個分類(使用&連接不同的分類名稱),順便解決了狗狗生長狀態四列需要合并為一列的問題;
修復推文中存在多個“/”導致分數提取錯誤的問題:我們提取了存在該項錯誤的行,使用專為這項任務涉及的正則表達式重新提取分數信息,并將這些分數信息更新回原數據集;
修復小數點導致的分數提取錯誤的問題:顯然在推特賬號的發展過程當中,推主的打分標準發生過一些變化;
修復推文中包含兩組正確的分數,但只提取了一組的問題:我們使用一個新的正則表達式為這些行提取了這些分數,并將它們暫存在新的分數列中;
修復了一條推文對多只狗狗打總分的情況:我們拋棄了原來的分數系統,直接計算了每一條推文所有分數的平均分作為推文的唯一分數;在修復這一問題的過程中,也順便解決了上一條錯誤修復導致的一條推文有兩個分數的問題;
修復了dogrates數據集下timestamp列數據類型錯誤的問題:將其修正為datatime數據類型;
統一了不同數據集中代表同一變量的不同列名稱;
修改了breeds_clean數據集中不適宜的名稱。
針對整潔度問題的操作:
將標明狗狗生長狀態的四列合并為一列(已在針對質量問題修復的過程中修復)
將項目涵蓋的三個數據集合并,因其觀察的對象本質上是一樣的。
對數據集的進一步探索
在以上工作完成之后,我們確實得到了一個清洗干凈的數據集,但它還不足以解答我們的問題:有沒有因素能幫助我們確定,這條推文會更受歡迎?為此,我們在上述工作的基礎之上,進一步提取了如下信息,以幫助我們進一步探索數據集:
通過人稱和物主代詞,利用正則表達式,從text列提取推文主體的性別信息;這一步驟的執行效果似乎比網上其他同學的效果要好,有更少的遺漏,并通過人工辨別修復了一些錯誤;
啟用全新變量“轉贊比”:通過計算轉發/點贊的比例,得出某一條推文更深層次受歡迎程度;
通過這項指標,一般的分析中我們也無需再看單獨的轉發數量;
通過這一指標,我們能更好的衡量推特賬號核心粉絲的變化情況,并為深入分析打下基礎;
計算了推文點贊量和轉發量的各項里程碑,以幫助我們更好的理解推特賬號的發展歷程;
將評分分組,以衡量不同分數之間的點贊量和轉贊比情況;1分,7分和13分一定代表著三種不同的推文風格,其受歡迎程度的不同顯然值得我們進一步探索;這項分析與回歸分析的結論結合,可能能讓我們有更進一步的思考;
將推文是否是狗進行分類:我們注意到,圖像預測機器學習的數據集里,對同樣圖像做了三次預測。我們發現,綜合考慮其三次預測的結果,能夠更好的說明推文的實質內容。我們根據圖像預測的結果將推文分成了三大類:不是狗(三次預測結果全部為False),有可能是狗(三次預測結果有一次為True),和是狗(三次預測結果全部為True)。根據我們列舉的例子,這三類實質上代表了不同類型的內容,也決定了推主在表達時的推文風格可能也有所不同,而這很可能能夠幫助我們進一步不同推文的探索受歡迎程度的區別。
其他可能值得一提的技術細節
能夠快速通過主鍵跨數據集篩選和調取數據的ISIN函數。其邏輯和可拓展性都大大強于常見于CSDN的利用join去數據集差集的方法;
繪制餅狀圖,并自動忽略指定比例下注解的value_count函數;
使用plotly繪制的可交互可視化;
使用seaborn繪制復雜的包含多個子圖的可視化圖像,和對可視化顏色的全方位主動控制。
總結
以上是生活随笔為你收集整理的优达twitter 清理_云吸狗吸出的啊哈时刻的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python语句中ord_浅谈Pytho
- 下一篇: iangularjs 模板_Angula