【问题标题】:Pandas qcut returns two different results with the same dataPandas qcut 使用相同的数据返回两个不同的结果
【发布时间】:2021-03-16 23:28:46
【问题描述】:

我创建了两个格式相同的虚拟数据,然后使用 pd qcut 得到了不同的结果。请告诉我如何使输出正确(如数据1)?

数据1:

df=pd.DataFrame(list(np.zeros(10)) + list (np.ones(2)), columns=['X'])
df1=df[['X']].assign(var_bin=lambda x: pd.qcut(x['X'], q=20, duplicates='drop'))
df1['var_bin'].unique()

输出
[(-0.001, 0.35], (0.9, 1.0]] Categories (2, interval[float64]): [(-0.001, 0.35] < (0.9, 1.0]]

数据 2:

df=pd.DataFrame(list(np.zeros(1000)) + list (np.ones(200)), columns=['X'])
df1=df[['X']].assign(var_bin=lambda x: pd.qcut(x['X'], q=20, duplicates='drop'))
df1['var_bin'].unique()

输出

[(-0.001, 1.0]] Categories (1, interval[float64]): [(-0.001, 1.0]]

【问题讨论】:

    标签: pandas dataframe


    【解决方案1】:

    您还需要在升级虚拟数据集时更改分位数:

    df=pd.DataFrame(list(np.zeros(1000)) + list (np.ones(200)), columns=['X'])
    df1=df[['X']].assign(var_bin=lambda x: pd.qcut(x['X'], q=2000, duplicates='drop'))
    df1['var_bin'].unique()
    

    给出:

    [(-0.001, 0.366], (0.966, 1.0]]
    Categories (2, interval[float64]): [(-0.001, 0.366] < (0.966, 1.0]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      相关资源
      最近更新 更多