康夏散书事件的技术分析:在数据面前,他无能为力
在写这篇文章之前,我特意翻看了一下最近的微博。看到已经有人拿到了康夏的书,并且也收到了退款。那么,至少,随着时间推移,事情的真相会变得更清楚。
我之所以要写这篇文章,其一是因为我和康夏有过两封邮件,一通长电话的接触,帮他做了发书和退款数据的基本整理;其二是因为,从我对Excel这个工具的理解和经验,以及对数据长期的观察,认为康夏卖书过程中间至少有一半的状况是由数据引发,他的确被数据“坑”了;其三,原本过去也就过去了,大家都知道康夏最后选择诀别社交网络,但未来一定还会有个人甚至企业,会在社交网络上发起有商品交易的互动行为,而数据,将决定事件走向“天堂”或“地狱”。
我希望把数据的经验分享出来,以便发起人将来可以作为参考,参与者也更能理解事件的进程。而且,从我个人来讲,以Excel数据状况为事实,想要告诉大家,我们认为的康夏的某些错误,其实他真的无能为力,甚至,已经尽力。
我和康夏本是彻彻底底的陌生人,在这件事之前我没有关注他的微博和公众号,甚至不知道有这么一个人存在。有一天,我看到朋友圈里一位最近刚刚长聊过的,和我育儿理念非常相似,且相互认同的朋友,转发了康夏收到77万元时的第一篇说明文章。而我这位朋友在朋友圈表达的意思是,通过康夏卖书这件事,她发现有很多和她相同的读书人,她很开心。出于对她个人品质的认可,我看完了那篇文章。当时脑子里瞬间出现了两个想法:一是,康夏表现的非常有诚意,是个不错的人;另外,他一定会遭遇严重到他没办法解决的数据问题。由于我信任我这位朋友,爱屋及乌,再加上我的数据观点一直是,原始数据对于数据工作有决定性作用。所以,既然是缘分让我看到了这件事,我决定帮帮他。
我给他发去了一封邮件,说:“我对数据有些研究,觉得你可能马上会面临极大的数据难题。如果到时候需要帮助,就通过邮件联系我。”为了证明我是一个真实存在的人(没办法,互联网上的信息真真假假),我还让他上网搜搜,好确定我不是什么骗子。我是5月19日给他发的邮件,5月20日,他的回复是:“太感动了……非常感谢,已经快被海量数据搞死了。”
接下来的内容,是纯技术性的,Excel用得稍好的人会理解得更清楚一些。如果你压根儿不知道什么是Vlookup函数,也没有听说过数据透视表,也不知道Excel中函数和数据处理的一般原则,那么,这一段你可能无法比较有共鸣的感受到什么叫“数据灾难”。
康夏在后来的文章中反复提到几个东西:1万条支付数据,一个人打款多次,做匹配很难,有的人信息填写不全,支付宝限制20个字。一般人看到这样的文字,都不会有特别的感受,但事实上,数据灾难就藏在这里面。他说的这张支付数据表,我给大家看看。(为了真实起见,我用的是康夏发给我的原始数据,但为了别人的隐私,我把与个人相关的关键数据做了类似遮挡、缩短等处理。我尝试了把图片另存下来,可以看到表格细节。)
第一点——支付数据太多
这张表一共有11744条支付数据(截图的时候往上挪动了一些,因为这部分数据更有代表性),若用肉眼看,手工整理,假设一条数据10秒,那也不是一般地球人体力和精力能承受的。在企业做过从系统中导出的这样的表的人,就会很清楚其中的痛楚。所以,首先,数据量的确大到超出手工整理范围了。我之所以强调手工,一是因为康夏告诉我他不怎么会用Excel,二是我后面会讲的,这份数据有先天的问题,函数等等只能给到辅助性的处理信息,而没办法真正批量得到最精准的结果。
第二点——支付数据先天有缺陷
表格中蓝色框内的内容,体现了“支付宝限制20个字”以及“一个人多次打款”这两件事。限制20个字带来的严重后果,就是买家必须通过多次打款,每次留20个字,才能填写清楚自己完整的地址以及对于书的喜好,甚至,还要给康夏留言,说两句贴心话。而这件事给后期处理带来的是什么呢?
我们必须假设1万条支付信息中,有名字相同的人,那么,在发书和整理数据的时候,就要把名字相同的人挑出来。而由于一个人就可能形成了多条数据记录,那么,张三(1号)有10条数据(很多个0.1块钱),张三(2号)有5条数据,Excel根本没办法知道,到底有几个张三。传统的“去重”方法不可行,用数据透视表计数的方法也不可行。而且,表格中其他数据,例如“交易号”、“交易创建时间”、“付款时间”等都不能用于辅助判断,到底有多少重名的人。这就为后期的匹配埋下了严重隐患。
你可能会问:为什么要匹配?匹配什么?因为支付数据里,很多人一激动,根本没留地址,甚至电话也没有。那么,康夏就没有办法给他们寄书,也不可能联系到他们(能力和精力都不行)。他就只能从自己的收集渠道,也就是他讲的,公众号、QQ、通讯录、通讯地址上拔下来的,有地址和电话的,给他留言的买家中,用他们的信息再去支付大表里进行匹配,看他们是否已经付款,以及付了多少钱,才能决定,应该给谁发书,发几本。匹配的过程,虽然是Vlookup可以轻易做的,但这中间又有其他问题,所以,Vlookup的最终结果只能说凑合能用,这后面会讲。
第三点——文本信息无法整理
表格中黑色框的部分,一个叫“商品名称”,一个叫“备注”。我不知道买家在操作支付宝的时候是怎么输入的,但显然,在一份原始数据中,有两列文本描述的信息是极大的数据灾难。因为,这两列,有的人填的内容相同,有的人在两列中内容互补,有的人填了其中一列而另外一列没填,有的人把电话写在“商品名称”列,而有的写在“备注”列。
Excel对于数据的判断,是按属性来的,例如:单元格填历史、地理、天文这样的代表科目的属性词。假如单元格内是一句话,要提取其中某个部分可就困难了。你可能说,不是有文本函数可以做吗?对的,文本函数Right/Left/Mid/Search都可以做,但1万行数据要有统一的规律才能批量处理。而像这张支付数据表,文本部分根本没有任何规律可言,且分布在两列里面。这是违反Excel数据结构规则的,所以,它帮不上忙。假设,文本只是分布在两列中,而同一个人的打款记录只有一条数据,那么,用&符号或者Concatenate函数,可以把两部分文本合并到一个单元格,还有可能进行关键信息的提取。
但前面说过,张三可能有9条打款记录,每一条备注了20个字,也就是说,不仅在行方向需要合并单元格内容,在列方向也要合并,这几乎是不可能的。而提取不出支付数据中的关键文本信息,就相当于对买家的身份、联系方式、喜好等一无所知。也许还有人觉得,既然你康夏接了这个活儿,死也得用手工的方式,一条一条把数据对出来,这样才对得起观众。
公平的讲,姑且不说那段时间他有5000封邮件要处理,每分钟微信都会留几百条信息,还要打包,处理各种琐事,就说啥事情也不做,只盯着数据看,一条核对30秒,中间不停,那也是一个时间上的天文数字。
亲身体会数据,比从文字上看要残酷得多
既然说到了工作量的问题,我觉得有必要多说两句。我们平时看文章里写维护10个微信群,一个人去了26个国家深度旅游,或者800条数据要核对。这些数字往往看起来不太累,但真实做起来,却要人命。罗辑思维二期会员招募的时候,一个死磕侠管理10个微信群,一个群几百号人,一分钟就会产生几千条留言,而且每分钟都在产生。你想想,读完都不可能,怎么在里面回复。那时候,我亲眼看见死磕侠们吐血地每天加班到凌晨甚至5点,那是一段回忆起来简直血腥的日子。26个国家深度旅游,看起来没很多吧,但假设一年两次选2个国家深度旅游,26个国家需要13年。从17岁花季要干到30而立。800条数据核对看起来也不多,做做就知道了。
所以,从数据的角度,亲身体会真的比文字上看到的要残酷得多。有时候是尽力而为,但大多数时候是无能为力。
第二张表——康夏自己整理的买家信息
前面说了那么多,想要证明的是,支付宝导出来的支付数据,由于有先天的缺陷,是无法用于做出发书或退款决定的(退款一会儿详细讲)。于是,康夏通过各种渠道,收集了2607条比较完整的买家信息。接下来,他就面临要将这2607条数据(截止5月23日他给到我的),去到1万条支付数据中进行匹配的工作。
匹配的目的是:第一,看这个买家真实体现在支付宝中的支付金额是多少?第二,看这个买家是否已经支付?前者,用于决定该寄出几本书;后者,用于决定是不是要寄书。这时候,麻烦就来了。两张表唯一可以进行匹配的只有“姓名”,在支付数据中叫做“交易对方”。姓名这件事很容易出问题,按照Vlookup的默认规则,只能匹配出第一条数据,当有相同名字的人存在于支付数据中时,Vlookup无法精确判断谁和康夏收集的这个名字对应。这是处理后的数据可能不精准的第一原因。
匹配到对应的名字后,要通过Vlookup提取他/她具体支付的款项。由于支付数据中一个人可能打款9次,第一条记录也许是0.1块钱,这就不对。那么,把支付数据中的金额先按降序排列,再匹配呢?也不行。因为,有的人是8个0.1块,1个99块,可以用99块作为最终结果。而有的人是3个30块,那么,Vlookup只能匹配出其中一个30块来,就产生极大的错误了。
假如先用数据透视表,按“交易对方”,也就是人名做金额的汇总后,再用Vlookup匹配,行不行?也不行。因为,在1万条支付记录中,我们根本不知道有几个重名的人。数据透视表会把他们的金额加在一起,而这时候做出来的金额匹配,会出更大的问题。康夏有可能给张三(1号)寄去了6本书,但实际上,他只付了3本书的钱,而另外一个张三(2号)就会给了钱没有收到书,后期还收不到退款,这事儿就闹得更大了。
我想说这根本不是人干的活儿,没错,进退两难,有心无力。
各种数据缺陷下的折衷方案
从任何角度来讲,我都没有立场帮康夏决定应该寄书给谁。所以,我提供的仅仅是数据的初步整理和匹配,并且尽量给他更多的数据维度以便他做决定。同时,设定好退款清单的自动获得,这件事很重要。至于那张表他最后是怎么使用的,我也不得而知,能确定的是,这应该为他节约了至少一周的时间。兵荒马乱中,能争取到时间就很宝贵了,康夏自己在一篇文章中开心地说快了半个月,当然,后来都删了。最终的寄书清单和退款清单,也许是从这张表来的。
这张表用名字,从2607条完整的买家数据中,匹配出了已经支付的1896个买家,并且提取了一条对应的备注信息用于参考,以及与收集来的地址做可能的对照。
他要做的是,根据自己的判断,从1896个买家中选出要寄书的人,在表格的“发货标记”列选中“是”,这些数据就会返回到1万条支付数据中,将对应的人标记出来。那么,剩下的就是需要退款的买家清单。由于支付宝已经答应帮他做统一的退款,但清单需要他提供。所以,康夏必须先搞定所有的数据,把寄书的清单确定下来,甚至可能把书真实的寄了,才能给到支付宝一份最终的退款数据,退款这件事才能开始进行。
康夏在这件事上没有撒谎,退款的确不是点一个按钮就可以完成的,那么多个0.1块钱,假如他自己进行了一部分操作,后续数据的对应就更加难上加难,到时候场面会完全失控。
结语
过去的一段时间,很多文章从社交和互联网方面,分析了康夏卖书事件演变过程中的种种原因和结果。孰是孰非,真相如何,我确定我自己也搞不清楚。就像有一篇文章说,对于一个事件,局外人就算以为自己知道了所有细节,其实也不知道其中真正的细节。
我不愿意去揣测康夏的心思,但也没办法相信网络上各方的言论,只是凭着自己原始的感受,以及有限的接触,包括上面讲到的数据灾难。我会觉得,他并不可恶。真正要作恶的人,应该不会和自己的父母一起来干这件事,也许请临时工会更好。对于即将留学的人,大部分都会至少准备半年吧,而临到走之前,谁又会愿意给自己惹一身事呢。再有,康夏也不是一个突然从石头里蹦出来的人,他之前在公众号里的形象,对于关注他的人来说,也是认可才会参与到这个事件里来的。我是愿意相信这里面有信息不对称所导致的误会,也有一个人面对突发网络事件的措手不及,同时,在特定情况下脑子短路也许会做不当选择的可能。
无论怎样,一棒子打死一个人,否定他的所有过去,是没必要的。而且,他在自己的公众号和自己的粉丝玩了一件事,这点自由还是应该给他的。就像蔡康永在康熙来了有一集中,对黄国伦的建议:你家不收拾,只要你们夫妻俩自己受得了就行,其实,也不关别人的事。但是,以后倒也不用再把没有收拾的照片拿出来吓人。康夏卖书事件至此,至少,慢慢已经有人收到书,收到退款了。而康夏本人,因为这件事离开了社交网络。一阵风起云涌,终归回到平静。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
“最近复购率一直在下降,我们的营销力度不小啊,为什么用户还是走了?” “是不是广告投放的用户质量不高?还是我们的产品问题 ...
2025-02-21以下文章来源于数有道 ,作者数据星爷 SQL查询是数据分析工作的基础,也是CDA数据分析师一级的核心考点,人工智能时代,AI能为 ...
2025-02-19在当今这个数据驱动的时代,几乎每一个业务决策都离不开对数据的深入分析。而其中,指标波动归因分析更是至关重要的一环。无论是 ...
2025-02-18当数据开始说谎:那些年我们交过的学费 你有没有经历过这样的场景?熬了三个通宵做的数据分析报告,在会议上被老板一句"这数据靠 ...
2025-02-17数据分析作为一门跨学科领域,融合了统计学、编程、业务理解和可视化技术。无论是初学者还是有一定经验的从业者,系统化的学习路 ...
2025-02-17挖掘用户价值本质是让企业从‘赚今天的钱’升级为‘赚未来的钱’,同时让用户从‘被推销’变为‘被满足’。询问deepseek关于挖 ...
2025-02-17近来deepseek爆火,看看deepseek能否帮我们快速实现数据看板实时更新。 可以看出这对不知道怎么动手的小白来说是相当友好的, ...
2025-02-14一秒精通 Deepseek,不用找教程,不用买资料,更不用报一堆垃圾课程,所有这么去做的,都是舍近求远,因为你忽略了 deepseek 的 ...
2025-02-12自学 Python 的关键在于高效规划 + 实践驱动。以下是一份适合零基础快速入门的自学路径,结合资源推荐和实用技巧: 一、快速入 ...
2025-02-12“我们的利润率上升了,但销售额却没变,这是为什么?” “某个业务的市场份额在下滑,到底是什么原因?” “公司整体业绩 ...
2025-02-08活动介绍 为了助力大家在数据分析领域不断精进技能,我们特别举办本期打卡活动。在这里,你可以充分利用碎片化时间在线学习,让 ...
2025-02-071、闺女,醒醒,媒人把相亲的带来了。 我。。。。。。。 2、前年春节相亲相了40个, 去年春节相亲50个, 祖宗,今年你想相多少个 ...
2025-02-06在数据科学的广阔领域中,统计分析与数据挖掘占据了重要位置。尽管它们常常被视为有关联的领域,但两者在理论基础、目标、方法及 ...
2025-02-05在数据分析的世界里,“对比”是一种简单且有效的方法。这就像两个女孩子穿同一款式的衣服,效果不一样。 很多人都听过“货比三 ...
2025-02-05当我们只有非常少量的已标记数据,同时有大量未标记数据点时,可以使用半监督学习算法来处理。在sklearn中,基于图算法的半监督 ...
2025-02-05考虑一种棘手的情况:训练数据中大部分样本没有标签。此时,我们可以考虑使用半监督学习方法来处理。半监督学习能够利用这些额 ...
2025-02-04一、数学函数 1、取整 =INT(数字) 2、求余数 =MOD(除数,被除数) 3、四舍五入 =ROUND(数字,保留小数位数) 4、取绝对值 =AB ...
2025-02-03作者:CDA持证人 余治国 一般各平台出薪资报告,都会哀嚎遍野。举个例子,去年某招聘平台发布《中国女性职场现状调查报告》, ...
2025-02-02真正的数据分析大神是什么样的呢?有人认为他们能轻松驾驭各种分析工具,能够从海量数据中找到潜在关联,或者一眼识别报告中的数 ...
2025-02-01现今社会,“转行”似乎成无数职场人无法回避的话题。但行业就像座围城:外行人看光鲜,内行人看心酸。数据分析这个行业,近几年 ...
2025-01-31