小编hen*_*gkk的帖子

python 测试覆盖率与之前运行的比较

我正在使用coverage.py以 html 报告的形式检查单元测试的代码覆盖率。

coverage run -m pytest
coverage html
Run Code Online (Sandbox Code Playgroud)

该报告非常酷,它显示了总体覆盖率 % 和单个 .py 文件的覆盖率 %。每次我完成一些代码更改时,我都会重新运行覆盖率报告,以检查我的单元测试用例是否可以很好地覆盖新代码。然而,问题是我必须手动发现是否有任何 .py 文件的覆盖率特别低。

有什么方法或现有工具可以用来将测试覆盖率与之前/历史运行进行比较?这样我就可以轻松发现是否有任何 .py 文件的覆盖率显着下降。

python unit-testing code-coverage coverage.py test-coverage

7
推荐指数
1
解决办法
2935
查看次数

math.isclose() 的类型检查

基本上我在声明中的 PyCharm 中得到了以下警告math.isclose(a_val, b_val)

Expected type 'SupportsFloat', got 'Number' instead

最小的、可重现的示例如下。

from numbers import Number
import math

a_val = '123'
b_val = 123.4

if isinstance(a_val, Number) and isinstance(b_val, Number):
    is_close = math.isclose(a_val, b_val, abs_tol=0.5)
Run Code Online (Sandbox Code Playgroud)

实际上,a_val和b_val来自其他地方,可以返回浮点型、整数或字符串。如果 和a_val都是b_val数字,我想检查它们是否几乎相等。否则,如果其中任何一个是字符串,则忽略它。

a_val问题 - 在通过和b_valto之前进行类型检查的最佳方法是什么math.isclose()?应该做什么改变来清除 PyCharm 警告?

python pycharm python-3.x

5
推荐指数
1
解决办法
551
查看次数

为什么f字符串格式不能用于Pandas DataFrame?

给定一个带有Product Id和的DataFrame Amount:

df = pd.DataFrame([['504145', 12000.0],
                   ['555933', 23010.5]],
                  columns=['Product Id', 'Amount'])
df
Out[1]: 
  Product Id   Amount
0     504145  12000.0
1     555933  23010.5
Run Code Online (Sandbox Code Playgroud)

我想基于添加一个“说明”列Amount,该列应如下所示:

  Product Id   Amount        Description
0     504145  12000.0  Amount is 12000.0
1     555933  23010.5  Amount is 23010.5
Run Code Online (Sandbox Code Playgroud)

当我使用f字符串格式设置时,结果是将整个列Amount作为一个序列进行聚合,而不是将特定行的值用于字符串连接:

df['Description'] = f'Amount is {df["Amount"].astype(str)}'
df
Out[2]: 
  Product Id   Amount                                        Description
0     504145  12000.0  Amount is 0    12000.0\n1    23010.5\nName: Am...
1     555933  23010.5  Amount is 0    12000.0\n1    23010.5\nName: Am...
Run Code Online (Sandbox Code Playgroud)

但是,使用+以下命令进行简单的字符串连接也可以正常工作: …

python dataframe python-3.x pandas f-string

5
推荐指数
1
解决办法
64
查看次数

按单列的分位数对 pandas 数据框进行分组

抱歉,如果这是重复的帖子 - 但我找不到相关的帖子

from random import seed
seed(100)
P = pd.DataFrame(np.random.randint(0, 100, size=(1000, 2)), columns=list('AB'))
Run Code Online (Sandbox Code Playgroud)

我想要的是P按列的四分位数/分位数/十分位数/等进行分组A,然后按组计算聚合统计数据(例如mean)。我可以将列的十分位数定义为

P['A'].quantile(np.arange(10) / 10)
Run Code Online (Sandbox Code Playgroud)

我不知道如何对 的十分位数进行分组A。提前致谢!

python dataframe pandas

2
推荐指数
1
解决办法
2742
查看次数