熊猫数据框的静态类型/模式

时间:2019-04-21 21:42:19

标签: python pandas

是否有一种方法可以“静态”地提示熊猫DataFrame的架构,以便我们可以在编码过程中获得代码完成,静态类型检查以及一般的可预测性?

我不介意在代码中复制架构信息并键入注释以使其工作。.

所以大概像是mypy注释类型注释:

df = pd.DataFrame({'a': [1.0, 2.4, 4.5], 'B': [1,2,3]})  # pd.schema: ('a': np.dtype(float)), ('B': np.dtype(int))

(或者最好在某些外部JSON文件等中指定架构)

然后,您可以将诸如df.自动完成在编码过程中成像到df.adf.B上。或者mypy(以及任何其他静态代码分析器)能够推断出df.B[0]的类型等等。

尽管很有希望,但我猜想这实际上是不可能的(或不希望的……)。如果是这样的话,编写返回具有特定列的pd.DataFrame的可重用代码的良好标准是什么?因此,假设有一个函数get_data() -> pd.DataFrame返回的数据具有预先已知的列-您如何使此函数对该函数的用户透明?除了将其在函数的文档字符串中说明以外,还有什么更聪明/更标准化的方法了?

2 个答案:

答案 0 :(得分:1)

这可能是您已经知道的事情,但是获得您所追求的自动完成的可靠方法是在 Jupyter notebooks 中“实时”开发代码。它在数据科学应用程序中非常常用 - 对于您的实例,使用您在笔记本顶部查找的类型实例化 DataFrame 版本可能是合适的,然后 Jupyter 将为列和类型提供自动完成功能你编码。显然,在了解范围内的内容方面,它比 IDE 有很大优势,因为数据帧实际上是在您开发时加载到内存中的。

根据 above_c_level 的评论,dataenforcepytest 的连接看起来很有希望(即在开发代码后进行测试),但除非与您的 IDE 有一些奇特的集成,否则我认为它不会能够匹配 Jupyter 对对象的“实时知识”。

答案 1 :(得分:0)

pandera 应该是您所需要的。

<块引用>

为寻求正确性的科学家、工程师和分析师提供的数据验证库。