Python快速数据处理库CSVkit

借助Python的力量和命令行证明观点,利用数据和一个快速处理库。

Matthew Ritter

http://www.kdnuggets.com/2016/01/csvkit-fast-python-library.html

你是否曾经参与过电子邮件讨论,或者有某个人宣称你确信的“事实”并不是真的?这是不是令人沮丧,不得不停下正在做的,把事情带回正确的轨道?试一下这个轻量级的Python库,你会得到可以更快粘贴到回复的确凿结果,而不是键入“如果运行附件中的代码你会清楚地看到……”。

进入csvkit

这个Python库允许你在命令行中使用Python。顾名思义,它输入csv,并提供单行分析选项的“瑞士军刀”。我将用来自一些列象棋比赛中的真实数据展示这些步骤。csvkit-csvlook

获得数据

首先需要下载数据。由他们的网站简单调用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

csvkit-bar-graph

这个轻而快的库有一个轻而快的介绍,里面有包含安装指引在内的更多信息,在他们很棒的文档网站上。