我可以修改 pd.Series.value_counts 以便默认为 `dropna=False` 吗?

Can I modify pd.Series.value_counts so that by default `dropna=False`?

当使用pd.Series.value_counts时,我几乎总是添加参数dropna=False。有没有一种简单的方法可以将其设置为默认值而无需创建单独的函数?

我 (among others) 也很好奇为什么默认值首先设置为 True 的解释。

import pandas as pd; import numpy as np

# initialize series
s = pd.Series([1,1,2,3,np.nan])

# would like s.value_counts() to have the same output as s.value_counts(dropna=False)
s.value_counts(dropna=False)

可以查看pd.Series.value_counts的参数:

print(pd.Series.value_counts.__annotations__)
# Ouput
{'normalize': 'bool', 'sort': 'bool', 'ascending': 'bool', 'dropna': 'bool'}

以及关联的默认值:

print(pd.Series.value_counts.__defaults__)
# Ouput
(False, True, False, None, True)

因此,您可以更改它们,使 dropna 的默认值变为 False:

pd.Series.value_counts.__defaults__ = (False, True, False, None, False)

print(s.value_counts())
# Output
1.0    2
2.0    1
3.0    1
NaN    1