一个以有见地的角度对pandas进行lint的工具。
项目描述
pandas-vet
pandas-vet
是一个用于 flake8
的插件,它为 pandas
代码提供了有见地的lint。
基本用法
以下是一个名为 drop_column.py
的脚本,其中包含有效的pandas代码
# drop_column.py
import pandas
df = pandas.DataFrame({
'col_a': [i for i in range(20)],
'col_b': [j for j in range(20, 40)]
})
df.drop(columns='col_b', inplace=True)
安装了 pandas-vet
后,如果我们在此脚本上运行Flake8,我们将看到三个警告被触发。
$ flake8 drop_column.py
./drop_column.py:2:1: PD001 pandas should always be imported as 'import pandas as pd'
./drop_column.py:4:1: PD901 'df' is a bad variable name. Be kinder to your future self.
./drop_column.py:7:1: PD002 'inplace = True' should be avoided; it has inconsistent behavior
我们可以使用这些来改进代码。
# pandastic_drop_column.py
import pandas as pd
ab_dataset = pd.DataFrame({
'col_a': [i for i in range(20)],
'col_b': [j for j in range(20, 40)]
})
a_dataset = ab_dataset.drop(columns='col_b')
有关完整列表,请参阅文档的 支持警告 页面。
动机
从 pandas 开始可能会有点困难。互联网上的常见帮助站点充斥着不同的实现方式,以及一些pandas文档本身也劝阻使用的功能。 pandas-vet
(希望) 通过对pandas最佳实践的一些有见地的立场,帮助使pandas对新手来说更加友好。它旨在帮助用户减少pandas的宇宙。
创建lint的想法源于 Ania Kapuścińska 在2019年PyCascades上的演讲,"负责任地lint代码!"。该软件包主要是在2019年PyCascades冲刺期间开发的。
许多观点源自于 Ted Petrou 的优秀作品 《最小必要Pandas》。其他想法来源于pandas文档或其他地方。《Pandas黑白卡片》中也包含许多相同的观点。