有没有办法“静态”提示 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))
Run Code Online (Sandbox Code Playgroud)
(或者最好在某些外部 JSON 文件等中指定架构)
然后,您可以将编码过程中的df.自动完成等内容映像为或。或者 mypy(以及任何其他静态代码分析器)能够推断出诸如此类的类型。df.adf.Bdf.B[0]
虽然充满希望,但我猜这不是真的可能(或想要的......)。如果是这样,编写返回pd.DataFrame具有特定列的 's 的良好可重用代码的良好标准是什么?所以想象一下,有一个函数get_data() -> pd.DataFrame返回包含预先知道的列的数据——你如何让这个函数的用户透明?有什么比在函数的文档字符串中拼写更智能/更标准化的吗?
这可能是您已经知道的事情,但是获得您想要的自动完成功能的可靠方法是在Jupyter 笔记本中“实时”开发代码。它在数据科学应用程序中非常常用 - 对于您的实例,可能适合使用您在笔记本顶部查找的类型实例化 DataFrame 的版本,然后 Jupyter 将为列和类型提供自动完成功能,如下所示你编码。显然,在了解范围内的内容方面,它比 IDE 有很大的优势,因为数据帧实际上是在开发时加载到内存中的。
根据 above_c_level 的评论,dataenforce看起来很有希望与pytest(即开发代码后进行测试)连接,但除非与您的 IDE 有一些奇特的集成,否则我认为它无法与 Jupyter 的对象“实时知识”相匹配。
| 归档时间: |
|
| 查看次数: |
2318 次 |
| 最近记录: |