借助Python的力量和命令行证明观点,利用数据和一个快速处理库。
Matthew Ritter
http://www.kdnuggets.com/2016/01/csvkit-fast-python-library.html
你是否曾经参与过电子邮件讨论,或者有某个人宣称你确信的“事实”并不是真的?这是不是令人沮丧,不得不停下正在做的,把事情带回正确的轨道?试一下这个轻量级的Python库,你会得到可以更快粘贴到回复的确凿结果,而不是键入“如果运行附件中的代码你会清楚地看到……”。
进入csvkit
这个Python库允许你在命令行中使用Python。顾名思义,它输入csv,并提供单行分析选项的“瑞士军刀”。我将用来自一些列象棋比赛中的真实数据展示这些步骤。
获得数据
首先需要下载数据。由他们的网站简单调用curl:
curl -O https://blog.chartio.com/assets/images/blog/2013/csv/chess.csv
curl做了什么?它直接下载一个文件,就像通过浏览器做的那样。当有大量名称类似的数据文件时(比如“website_visitors_201501.csv”,“website_visitors_201502.csv”等等),执行一个循环可能非常有用。
注:Windows需要额外安装curl。CSVkit支持OSX和Linux,在Windows上也可使用,但未经充分测试。
分析
假设他们一直在为网站主机付费的话,你应该已经得到了数据的一个CSV文件副本,在你的工作目录中,只需要几秒时间。既然有了数据,就可以开始利用CSVkit的力量。让我们看一下前几行:
csvsort chess.csv | csvlook | head
让我们再看看最后几行(注意,与常见的“tail”命令不同,文件头不会丢失):
csvsort -r chess.csv | csvlook | head
准备好看看谁胜利次数最多了吗?生成一个透视表只需要一行操作:
csvstat chess.csv -c Winner –freq
就是这样!从数据到洞察只需要四个步骤,而且老实讲第三步只是为了好玩。
走得更远
想要看看他们赢了谁?有一个精巧的工具可以让你对CSV文件执行SQL,不需要任何准备工作:
csvsql –query “select Winner, case when White != Winner then White else Black end loser, count() countstar from chess group by Winner order by count() desc” chess.csv
Winner,loser,countstar
Mark,Dave,111
Dave,Mark,89
Draw,Mark,5
Stalemate,Mark,5
Justin,Mark,2
Nate,Dave,1
也许这样一段文本会让你的读者不知所措,因此你想输出图形。没问题!只要引入另一个小库,就能在命令行中得到一个条形图:
csvsql –query “select Winner, count() countstar from chess group by Winner order by count()” chess.csv | csvformat -D : | tail -n +2 | asciigraph
这个轻而快的库有一个轻而快的介绍,里面有包含安装指引在内的更多信息,在他们很棒的文档网站上。