
康夏散書事件的技術(shù)分析:在數(shù)據(jù)面前,他無能為力
在寫這篇文章之前,我特意翻看了一下最近的微博??吹揭呀?jīng)有人拿到了康夏的書,并且也收到了退款。那么,至少,隨著時間推移,事情的真相會變得更清楚。
我之所以要寫這篇文章,其一是因為我和康夏有過兩封郵件,一通長電話的接觸,幫他做了發(fā)書和退款數(shù)據(jù)的基本整理;其二是因為,從我對Excel這個工具的理解和經(jīng)驗,以及對數(shù)據(jù)長期的觀察,認為康夏賣書過程中間至少有一半的狀況是由數(shù)據(jù)引發(fā),他的確被數(shù)據(jù)“坑”了;其三,原本過去也就過去了,大家都知道康夏最后選擇訣別社交網(wǎng)絡(luò),但未來一定還會有個人甚至企業(yè),會在社交網(wǎng)絡(luò)上發(fā)起有商品交易的互動行為,而數(shù)據(jù),將決定事件走向“天堂”或“地獄”。
我希望把數(shù)據(jù)的經(jīng)驗分享出來,以便發(fā)起人將來可以作為參考,參與者也更能理解事件的進程。而且,從我個人來講,以Excel數(shù)據(jù)狀況為事實,想要告訴大家,我們認為的康夏的某些錯誤,其實他真的無能為力,甚至,已經(jīng)盡力。
我和康夏本是徹徹底底的陌生人,在這件事之前我沒有關(guān)注他的微博和公眾號,甚至不知道有這么一個人存在。有一天,我看到朋友圈里一位最近剛剛長聊過的,和我育兒理念非常相似,且相互認同的朋友,轉(zhuǎn)發(fā)了康夏收到77萬元時的第一篇說明文章。而我這位朋友在朋友圈表達的意思是,通過康夏賣書這件事,她發(fā)現(xiàn)有很多和她相同的讀書人,她很開心。出于對她個人品質(zhì)的認可,我看完了那篇文章。當(dāng)時腦子里瞬間出現(xiàn)了兩個想法:一是,康夏表現(xiàn)的非常有誠意,是個不錯的人;另外,他一定會遭遇嚴重到他沒辦法解決的數(shù)據(jù)問題。由于我信任我這位朋友,愛屋及烏,再加上我的數(shù)據(jù)觀點一直是,原始數(shù)據(jù)對于數(shù)據(jù)工作有決定性作用。所以,既然是緣分讓我看到了這件事,我決定幫幫他。
我給他發(fā)去了一封郵件,說:“我對數(shù)據(jù)有些研究,覺得你可能馬上會面臨極大的數(shù)據(jù)難題。如果到時候需要幫助,就通過郵件聯(lián)系我。”為了證明我是一個真實存在的人(沒辦法,互聯(lián)網(wǎng)上的信息真真假假),我還讓他上網(wǎng)搜搜,好確定我不是什么騙子。我是5月19日給他發(fā)的郵件,5月20日,他的回復(fù)是:“太感動了……非常感謝,已經(jīng)快被海量數(shù)據(jù)搞死了?!?
接下來的內(nèi)容,是純技術(shù)性的,Excel用得稍好的人會理解得更清楚一些。如果你壓根兒不知道什么是Vlookup函數(shù),也沒有聽說過數(shù)據(jù)透視表,也不知道Excel中函數(shù)和數(shù)據(jù)處理的一般原則,那么,這一段你可能無法比較有共鳴的感受到什么叫“數(shù)據(jù)災(zāi)難”。
康夏在后來的文章中反復(fù)提到幾個東西:1萬條支付數(shù)據(jù),一個人打款多次,做匹配很難,有的人信息填寫不全,支付寶限制20個字。一般人看到這樣的文字,都不會有特別的感受,但事實上,數(shù)據(jù)災(zāi)難就藏在這里面。他說的這張支付數(shù)據(jù)表,我給大家看看。(為了真實起見,我用的是康夏發(fā)給我的原始數(shù)據(jù),但為了別人的隱私,我把與個人相關(guān)的關(guān)鍵數(shù)據(jù)做了類似遮擋、縮短等處理。我嘗試了把圖片另存下來,可以看到表格細節(jié)。)
第一點——支付數(shù)據(jù)太多
這張表一共有11744條支付數(shù)據(jù)(截圖的時候往上挪動了一些,因為這部分數(shù)據(jù)更有代表性),若用肉眼看,手工整理,假設(shè)一條數(shù)據(jù)10秒,那也不是一般地球人體力和精力能承受的。在企業(yè)做過從系統(tǒng)中導(dǎo)出的這樣的表的人,就會很清楚其中的痛楚。所以,首先,數(shù)據(jù)量的確大到超出手工整理范圍了。我之所以強調(diào)手工,一是因為康夏告訴我他不怎么會用Excel,二是我后面會講的,這份數(shù)據(jù)有先天的問題,函數(shù)等等只能給到輔助性的處理信息,而沒辦法真正批量得到最精準的結(jié)果。
第二點——支付數(shù)據(jù)先天有缺陷
表格中藍色框內(nèi)的內(nèi)容,體現(xiàn)了“支付寶限制20個字”以及“一個人多次打款”這兩件事。限制20個字帶來的嚴重后果,就是買家必須通過多次打款,每次留20個字,才能填寫清楚自己完整的地址以及對于書的喜好,甚至,還要給康夏留言,說兩句貼心話。而這件事給后期處理帶來的是什么呢?
我們必須假設(shè)1萬條支付信息中,有名字相同的人,那么,在發(fā)書和整理數(shù)據(jù)的時候,就要把名字相同的人挑出來。而由于一個人就可能形成了多條數(shù)據(jù)記錄,那么,張三(1號)有10條數(shù)據(jù)(很多個0.1塊錢),張三(2號)有5條數(shù)據(jù),Excel根本沒辦法知道,到底有幾個張三。傳統(tǒng)的“去重”方法不可行,用數(shù)據(jù)透視表計數(shù)的方法也不可行。而且,表格中其他數(shù)據(jù),例如“交易號”、“交易創(chuàng)建時間”、“付款時間”等都不能用于輔助判斷,到底有多少重名的人。這就為后期的匹配埋下了嚴重隱患。
你可能會問:為什么要匹配?匹配什么?因為支付數(shù)據(jù)里,很多人一激動,根本沒留地址,甚至電話也沒有。那么,康夏就沒有辦法給他們寄書,也不可能聯(lián)系到他們(能力和精力都不行)。他就只能從自己的收集渠道,也就是他講的,公眾號、QQ、通訊錄、通訊地址上拔下來的,有地址和電話的,給他留言的買家中,用他們的信息再去支付大表里進行匹配,看他們是否已經(jīng)付款,以及付了多少錢,才能決定,應(yīng)該給誰發(fā)書,發(fā)幾本。匹配的過程,雖然是Vlookup可以輕易做的,但這中間又有其他問題,所以,Vlookup的最終結(jié)果只能說湊合能用,這后面會講。
第三點——文本信息無法整理
表格中黑色框的部分,一個叫“商品名稱”,一個叫“備注”。我不知道買家在操作支付寶的時候是怎么輸入的,但顯然,在一份原始數(shù)據(jù)中,有兩列文本描述的信息是極大的數(shù)據(jù)災(zāi)難。因為,這兩列,有的人填的內(nèi)容相同,有的人在兩列中內(nèi)容互補,有的人填了其中一列而另外一列沒填,有的人把電話寫在“商品名稱”列,而有的寫在“備注”列。
Excel對于數(shù)據(jù)的判斷,是按屬性來的,例如:單元格填歷史、地理、天文這樣的代表科目的屬性詞。假如單元格內(nèi)是一句話,要提取其中某個部分可就困難了。你可能說,不是有文本函數(shù)可以做嗎?對的,文本函數(shù)Right/Left/Mid/Search都可以做,但1萬行數(shù)據(jù)要有統(tǒng)一的規(guī)律才能批量處理。而像這張支付數(shù)據(jù)表,文本部分根本沒有任何規(guī)律可言,且分布在兩列里面。這是違反Excel數(shù)據(jù)結(jié)構(gòu)規(guī)則的,所以,它幫不上忙。假設(shè),文本只是分布在兩列中,而同一個人的打款記錄只有一條數(shù)據(jù),那么,用&符號或者Concatenate函數(shù),可以把兩部分文本合并到一個單元格,還有可能進行關(guān)鍵信息的提取。
但前面說過,張三可能有9條打款記錄,每一條備注了20個字,也就是說,不僅在行方向需要合并單元格內(nèi)容,在列方向也要合并,這幾乎是不可能的。而提取不出支付數(shù)據(jù)中的關(guān)鍵文本信息,就相當(dāng)于對買家的身份、聯(lián)系方式、喜好等一無所知。也許還有人覺得,既然你康夏接了這個活兒,死也得用手工的方式,一條一條把數(shù)據(jù)對出來,這樣才對得起觀眾。
公平的講,姑且不說那段時間他有5000封郵件要處理,每分鐘微信都會留幾百條信息,還要打包,處理各種瑣事,就說啥事情也不做,只盯著數(shù)據(jù)看,一條核對30秒,中間不停,那也是一個時間上的天文數(shù)字。
親身體會數(shù)據(jù),比從文字上看要殘酷得多
既然說到了工作量的問題,我覺得有必要多說兩句。我們平時看文章里寫維護10個微信群,一個人去了26個國家深度旅游,或者800條數(shù)據(jù)要核對。這些數(shù)字往往看起來不太累,但真實做起來,卻要人命。羅輯思維二期會員招募的時候,一個死磕俠管理10個微信群,一個群幾百號人,一分鐘就會產(chǎn)生幾千條留言,而且每分鐘都在產(chǎn)生。你想想,讀完都不可能,怎么在里面回復(fù)。那時候,我親眼看見死磕俠們吐血地每天加班到凌晨甚至5點,那是一段回憶起來簡直血腥的日子。26個國家深度旅游,看起來沒很多吧,但假設(shè)一年兩次選2個國家深度旅游,26個國家需要13年。從17歲花季要干到30而立。800條數(shù)據(jù)核對看起來也不多,做做就知道了。
所以,從數(shù)據(jù)的角度,親身體會真的比文字上看到的要殘酷得多。有時候是盡力而為,但大多數(shù)時候是無能為力。
第二張表——康夏自己整理的買家信息
前面說了那么多,想要證明的是,支付寶導(dǎo)出來的支付數(shù)據(jù),由于有先天的缺陷,是無法用于做出發(fā)書或退款決定的(退款一會兒詳細講)。于是,康夏通過各種渠道,收集了2607條比較完整的買家信息。接下來,他就面臨要將這2607條數(shù)據(jù)(截止5月23日他給到我的),去到1萬條支付數(shù)據(jù)中進行匹配的工作。
匹配的目的是:第一,看這個買家真實體現(xiàn)在支付寶中的支付金額是多少?第二,看這個買家是否已經(jīng)支付?前者,用于決定該寄出幾本書;后者,用于決定是不是要寄書。這時候,麻煩就來了。兩張表唯一可以進行匹配的只有“姓名”,在支付數(shù)據(jù)中叫做“交易對方”。姓名這件事很容易出問題,按照Vlookup的默認規(guī)則,只能匹配出第一條數(shù)據(jù),當(dāng)有相同名字的人存在于支付數(shù)據(jù)中時,Vlookup無法精確判斷誰和康夏收集的這個名字對應(yīng)。這是處理后的數(shù)據(jù)可能不精準的第一原因。
匹配到對應(yīng)的名字后,要通過Vlookup提取他/她具體支付的款項。由于支付數(shù)據(jù)中一個人可能打款9次,第一條記錄也許是0.1塊錢,這就不對。那么,把支付數(shù)據(jù)中的金額先按降序排列,再匹配呢?也不行。因為,有的人是8個0.1塊,1個99塊,可以用99塊作為最終結(jié)果。而有的人是3個30塊,那么,Vlookup只能匹配出其中一個30塊來,就產(chǎn)生極大的錯誤了。
假如先用數(shù)據(jù)透視表,按“交易對方”,也就是人名做金額的匯總后,再用Vlookup匹配,行不行?也不行。因為,在1萬條支付記錄中,我們根本不知道有幾個重名的人。數(shù)據(jù)透視表會把他們的金額加在一起,而這時候做出來的金額匹配,會出更大的問題??迪挠锌赡芙o張三(1號)寄去了6本書,但實際上,他只付了3本書的錢,而另外一個張三(2號)就會給了錢沒有收到書,后期還收不到退款,這事兒就鬧得更大了。
我想說這根本不是人干的活兒,沒錯,進退兩難,有心無力。
各種數(shù)據(jù)缺陷下的折衷方案
從任何角度來講,我都沒有立場幫康夏決定應(yīng)該寄書給誰。所以,我提供的僅僅是數(shù)據(jù)的初步整理和匹配,并且盡量給他更多的數(shù)據(jù)維度以便他做決定。同時,設(shè)定好退款清單的自動獲得,這件事很重要。至于那張表他最后是怎么使用的,我也不得而知,能確定的是,這應(yīng)該為他節(jié)約了至少一周的時間。兵荒馬亂中,能爭取到時間就很寶貴了,康夏自己在一篇文章中開心地說快了半個月,當(dāng)然,后來都刪了。最終的寄書清單和退款清單,也許是從這張表來的。
這張表用名字,從2607條完整的買家數(shù)據(jù)中,匹配出了已經(jīng)支付的1896個買家,并且提取了一條對應(yīng)的備注信息用于參考,以及與收集來的地址做可能的對照。
他要做的是,根據(jù)自己的判斷,從1896個買家中選出要寄書的人,在表格的“發(fā)貨標記”列選中“是”,這些數(shù)據(jù)就會返回到1萬條支付數(shù)據(jù)中,將對應(yīng)的人標記出來。那么,剩下的就是需要退款的買家清單。由于支付寶已經(jīng)答應(yīng)幫他做統(tǒng)一的退款,但清單需要他提供。所以,康夏必須先搞定所有的數(shù)據(jù),把寄書的清單確定下來,甚至可能把書真實的寄了,才能給到支付寶一份最終的退款數(shù)據(jù),退款這件事才能開始進行。
康夏在這件事上沒有撒謊,退款的確不是點一個按鈕就可以完成的,那么多個0.1塊錢,假如他自己進行了一部分操作,后續(xù)數(shù)據(jù)的對應(yīng)就更加難上加難,到時候場面會完全失控。
結(jié)語
過去的一段時間,很多文章從社交和互聯(lián)網(wǎng)方面,分析了康夏賣書事件演變過程中的種種原因和結(jié)果。孰是孰非,真相如何,我確定我自己也搞不清楚。就像有一篇文章說,對于一個事件,局外人就算以為自己知道了所有細節(jié),其實也不知道其中真正的細節(jié)。
我不愿意去揣測康夏的心思,但也沒辦法相信網(wǎng)絡(luò)上各方的言論,只是憑著自己原始的感受,以及有限的接觸,包括上面講到的數(shù)據(jù)災(zāi)難。我會覺得,他并不可惡。真正要作惡的人,應(yīng)該不會和自己的父母一起來干這件事,也許請臨時工會更好。對于即將留學(xué)的人,大部分都會至少準備半年吧,而臨到走之前,誰又會愿意給自己惹一身事呢。再有,康夏也不是一個突然從石頭里蹦出來的人,他之前在公眾號里的形象,對于關(guān)注他的人來說,也是認可才會參與到這個事件里來的。我是愿意相信這里面有信息不對稱所導(dǎo)致的誤會,也有一個人面對突發(fā)網(wǎng)絡(luò)事件的措手不及,同時,在特定情況下腦子短路也許會做不當(dāng)選擇的可能。
無論怎樣,一棒子打死一個人,否定他的所有過去,是沒必要的。而且,他在自己的公眾號和自己的粉絲玩了一件事,這點自由還是應(yīng)該給他的。就像蔡康永在康熙來了有一集中,對黃國倫的建議:你家不收拾,只要你們夫妻倆自己受得了就行,其實,也不關(guān)別人的事。但是,以后倒也不用再把沒有收拾的照片拿出來嚇人??迪馁u書事件至此,至少,慢慢已經(jīng)有人收到書,收到退款了。而康夏本人,因為這件事離開了社交網(wǎng)絡(luò)。一陣風(fēng)起云涌,終歸回到平靜。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計學(xué)領(lǐng)域,假設(shè)檢驗是驗證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進行 HTTP 網(wǎng)絡(luò)請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數(shù)據(jù)的科學(xué)計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點數(shù)據(jù)時的科學(xué)計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動下的精準零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價值 在數(shù)據(jù)驅(qū)動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實踐到業(yè)務(wù)價值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價值導(dǎo)向 統(tǒng)計模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10