我的 df 有一列,其中
MAX_PERC
列的范围从 0 到 1。
我正在尝试
pd.qcut
找到分位数,它只适用于更高的分位数(即找到多个分位数),例如 (>0.8)
pd.qcut(df['MAX_PERC'],80,retbins=True, duplicates='drop')
重新创建数据框:
# Define the counts
count_zeros = 103168
count_ones = 32364
count_between_08_1 = 2594
count_between_0_08 = 129
# Create arrays for each range
zeros = np.zeros(count_zeros)
ones = np.ones(count_ones)
between_08_1 = np.random.uniform(0.8, 1.0, count_between_08_1)
between_0_08 = np.random.uniform(0, 0.8, count_between_0_08)
# Combine all arrays
all_values = np.concatenate([zeros, ones, between_08_1, between_0_08])
# Shuffle the array to mix the values
np.random.shuffle(all_values)
# Create the DataFrame
df = pd.DataFrame({'MAX_PERC': all_values})
为什么?应该无法计算 2 处的分位数?
关于询问例如2 个垃圾箱:
df.quantile(q=0.5,
axis=0)
返回中位数为零:
MAX_PERC 0.0
Name: 0.5, dtype: float64
但是您知道这一点,因为
count_zeros = 103168
超过了样本量的一半。
所以 2 个箱子在中位数处有箱子边缘是不可能成功的。
您可能误会了
duplicates = drop
?这不会删除重复的值,但会删除重复的垃圾箱。