【发布时间】:2019-09-23 07:58:56
【问题描述】:
我有一个数据框 pd 有两列,X 和 y。
在pd[y] 中,我有从1 到10 的整数。但是它们有不同的频率:
df[y].value_counts()
10 6645
9 6213
8 5789
7 4643
6 2532
5 1839
4 1596
3 878
2 815
1 642
我想减少我的数据框,以便每个标签的出现次数相等。因为我想要每个标签的数量相等,所以最小频率是642。所以我只想在我的数据框中保留642 随机 对每个类标签的采样行,以便我的新数据框对每个类标签都有642。
我认为this 可能有所帮助,但分层仅保留每个标签的相同百分比,但我希望我的所有标签具有相同的频率。
以数据框为例:
df = pd.DataFrame()
df['y'] = sum([[10]*6645, [9]* 6213,[8]* 5789, [7]*4643,[6]* 2532, [5]*1839,[4]* 1596,[3]* 878, [2]*815, [1]* 642],[])
df['X'] = [random.choice(list('abcdef')) for i in range(len(df))]
【问题讨论】:
-
您是否也可以添加数据框,这样我们就不必创建一个。以及预期的输出,以便更好地理解
-
@anky_91 更新
标签: python pandas numpy scikit-learn