99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁職業(yè)發(fā)展康夏散書事件的技術(shù)分析:在數(shù)據(jù)面前,他無能為力
康夏散書事件的技術(shù)分析:在數(shù)據(jù)面前,他無能為力
2016-02-26
收藏

康夏散書事件的技術(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

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }