我计划创建一个'table'类,我可以在整个数据分析程序中使用它来存储收集的数据。目标是制作这样的简单表:
ID Mean size Stdv Date measured Relative flatness
----------------------------------------------------------------
1 133.4242 34.43 Oct 20, 2013 32093
2 239.244 34.43 Oct 21, 2012 3434
我将遵循此帖子中的sqlite3建议:python-data-structure-for-maintaing-tabular-data-in-memory,但我仍然需要将其保存为csv文件(而不是dbase)并且我希望它在我们去的时候吃掉我的数据:添加每当有新措施可用且被认为有趣时,这些列就会出现。为此,该类需要能够确定抛出的数据的数据类型。
Sqlite3具有有限的数据类型,float,int,date和string。 Python和numpy一起有很多类型。是否很容易快速确定变量的数据类型是什么?因此,当输入包含新字段的新数据时,我的表类可以自动添加列。
我不太关心性能,表格应该相当小。
我想像我这样使用我的课程:
dt = Table()
dt.add_record({'ID':5, 'Mean size':39.4334'})
dt.add_record({'ID':5, 'Goodness of fit': 12})
在最后一行,有新数据。 Table类需要弄清楚是什么类型的数据,然后在sqlite3表中添加一列。把它全部变成字符串似乎有点松软,我仍然希望保持我的高精度浮动正确....
另外:如果这样的事情已经存在,我想知道它。
答案 0 :(得分:1)
似乎您的问题是:“是否很容易快速确定变量的数据类型是什么?”。这是一个简单的问题,答案是:
type(variable)
。
但是你提供的背景需要更仔细的回答。
自SQLite3 only provides only a few data types (slightly different ones than what you said), you need to map your input variables to the types provided by SQLite3.以来 但是您可能会遇到其他问题:如果您不希望事先修复列类型,则可能需要在接收新记录时更改列类型。
例如,对于示例中的Goodness of fit
列,首先得到一个int(12)。但是你可能第二次得到一个浮点数(例如10.1),这表明两个值都必须被解释为浮点数。如果你下次收到一个字符串,那么所有字符串都必须是字符串,对吧?但是,数字的确切格式也很重要:当你将它们解释为浮点数时,12和12.0是相同的,当你将它们解释为字符串时它们不是;当您将所有值转换为字符串时,第一个值可能会变为“12.0”。
因此,当同一列的连续值类型不匹配时,或者您尝试根据新值转换先前的值时,抛出异常;但有时您可能需要重新阅读输入。
然而,一旦你做出关于预期行为的决定,它应该不是一个非常难以实现的问题。 关于你的上一个问题:我个人不知道这个问题的现有实施。