查找大量数据集的唯一索引
blizzard的Python项目详细描述
搜索电子表格
当我们搜索普通的书面文档时,我们会将单词发送到搜索中 引擎,并得到文字页回来。
如果我们可以搜索电子表格 通过将电子表格发送到搜索引擎并取回电子表格? 结果的顺序将由各种专门统计数字决定; 正如我们使用pagerank查找相关的超文本文档一样,我们可以开发 帮助我们找到相关电子表格的其他统计数据。
数据表
我想了很多关于行和列的事情。当我们在关系中定义表时 数据库,我们可以根据 基于唯一索引的名称和类型,以及行的含义。 在电子表格中,我们仍然有列名,但我们没有得到所有的信息 否则。
我将数据表定义为描述 相似的事情,每件事情都有相似的信息 (http://www.datakind.org/blog/whats-in-a-table/)。 当我们在网格中表示一个数据表时,每一行都是一个观察值 (一件事),每一列都是一个变量。 暴雪使用这个表结构来查找任意 数据表。
唯一索引
我将唯一索引定义为数据表中的列或列的组合, 每行有不同的值。
这些独特的指数告诉我们很多;它们让我们了解 表的观测单位和我们能很好地处理的其他表 与那张桌子连接或结合。所以我做了一个独特的包裹 普通csv文件中的索引。
pip3 install special_snowflake
它叫“特殊雪花”,但它需要一个更好的名字。
如果我们将iris数据集传递给它,
"Sepal.Length","Sepal.Width","Petal.Length","Petal.Width","Species" 5.1,3.5,1.4,0.2,"setosa" 4.9,3,1.4,0.2,"setosa" 4.7,3.2,1.3,0.2,"setosa" 4.6,3.1,1.5,0.2,"setosa" ...
我们没有唯一的键
>>> special_snowflake.fromcsv(open('iris.csv')) set()
因为没有列的组合唯一地标识行。 当然,如果我们添加一个标识符列,
"Id","Sepal.Length","Sepal.Width","Petal.Length","Petal.Width","Species" 1,5.1,3.5,1.4,0.2,"setosa" 2,4.9,3,1.4,0.2,"setosa" 3,4.7,3.2,1.3,0.2,"setosa" 4,4.6,3.1,1.5,0.2,"setosa" ...
那个被退回去了。
>>> special_snowflake.fromcsv(open('iris.csv')) {('Id',)}
举个更有趣的例子,让我们看看鸡体重。
“weight”,”Time”,”Chick”,”Diet” 42,0,”1”,”1” 51,2,”1”,”1” 59,4,”1”,”1” 64,6,”1”,”1” 76,8,”1”,”1” …
我可以阅读这个数据集的文档并告诉你 它的统计单位是什么?或者我可以 就让雪花帮我想想吧。
>>> special_snowflake.fromcsv(open('chick.csv')) {('Time', 'Chick')}
统计单位是小鸡。也就是说,有些东西 在多只鸡身上观察到,多个观察结果如下 从每个(嗯,至少一个)小鸡身上取下。
有些电子表格的标识符不太明显。在这个 1219行33列表格,
>>> from urllib.request import urlopen >>> url = 'http://data.iledefrance.fr/explore/dataset/liste-des-points-de-contact-du-reseau-postal-dile-de-france/download/?format=csv' >>> fp = urlopen(url) >>> special_snowflake.fromcsv(fp, delimiter = ';') {('adresse', 'code_postal'), ('adresse', 'localite'), ('identifiant',), ('libelle_du_site',), ('wgs84',)}
我们找到了五把功能独特的钥匙。只要看看列名, 我滔滔不绝地说前两个是邮政地址部分的组合 后三种外观是形式标识符。 当我做正确的事情,看 data dictionary, 我也有同样的解释。
这告诉我这个数据集是关于邮政服务地点的, 每行一个位置。它也给了我一些想法 作为邮政服务地点的唯一标识符。
在单独的电子表格上运行这个有点酷,但更酷 在很多电子表格上运行。 在暴雪中,我发现电子表格 相同的唯一索引,然后我寻找这些电子表格之间的重叠。 重叠度高的电子表格可以很好地相互连接,并且 重叠度较低的电子表格可以很好地相互结合。
现在这一切都很粗糙,所以我有点惊讶 任何有趣的东西都会出来。