不规则的binning p2 python pandas

时间:2016-06-07 19:20:35

标签: python pandas dataframe scatter-plot binning

我有一个关于在python pandas中进行binning的小问题。

我有一个如下数据框:

df = 
 variable    test_score
-1           52.0
 1           53.0
 4           54.0
 6           64.0
 6           64.0
-6           64.0
 5           71.0
 10          73.0
-15          75.0
 4           77.0
 ....... etc, etc....

我想关于列/变量"变量",以便相同数量的行" X" (比如100)出现在每个"变量"箱中。

然后,我想将每个变量bin((variable_bin_min + variable_bin_max)/ 2)的中心值与该变量bin的测试分数的平均值进行分散。

我看不到一个简单的方法来做这件事,并会感激任何指导!

2 个答案:

答案 0 :(得分:1)

这应该完成它。我制作了数据,所以它看起来不像你的。

import pandas as pd
import numpy as np

np.random.seed([3,1415])
df = pd.DataFrame(dict(variable=np.random.choice(range(20), (1000,)),
                       test_score=np.random.rand(1000,).round(2) * 100))

df_ = df.groupby(pd.qcut(df.variable, len(df) / 100)).agg([np.min, np.max, np.mean])

pd.concat([df_.variable.apply(lambda x: x.loc[['amin', 'amax']].mean(), axis=1),
           df_.test_score['mean']],
          axis=1,
          keys=['bin_center', 'mean_score']).plot.scatter('bin_center', 'mean_score')

enter image description here

答案 1 :(得分:1)

对于包含5个项目的bin,然后pd.cut()进一步切片数据:

LL     = df['test_score'].tolist()
bins   = LL[::5]