gpt4 book ai didi

python - 如何为 Pandas DataFrame 中找到的所有唯一值设置相同的频率?

转载 作者:太空宇宙 更新时间:2023-11-03 20:17:07 24 4
gpt4 key购买 nike

我有一个 Pandas DataFrame,它有 2 列:一列用于类别 (PROBLEM_TYPE),一列用于类别描述。显然,每个类别的描述值计数都不同,但由于我计划基于此 DataFrame 训练模型,因此我尝试为每个类别设置相同的值计数。这样我的模型就会更加准确。

数据框:

filtered_df.head()

PROBLEM_TYPE DESCRIPTION
0 problem_type1 blabla...
1 problem_type1 blablablabla...
2 problem_type3 bla...
3 problem_type7 blablabloblo...
4 problem_type2 blobloble...

这是我调用 value_counts() 函数时得到的结果:

filtered_df["PROBLEM_TYPE"].value_counts()

problem_type1 141887
problem_type2 21663
problem_type3 19349
problem_type4 15710
problem_type5 5229
problem_type6 5161
problem_type7 4682
problem_type8 3672
problem_type9 3296
problem_type10 3131
Name: PROBLEM_TYPE, dtype: int64

正如您所看到的,有 10 种不同的问题类型(类别),每种问题都有不同的值计数。我的问题是如何为所有问题类型设置相同的值计数。例如,每个问题类型在 DataFrame 中都具有最小值计数(即 3131)。

换句话说,如何将每个类别的频率设置为相同,以便下次运行 value_counts() 函数时,它看起来像这样:

filtered_df["PROBLEM_TYPE"].value_counts()

problem_type1 3131
problem_type2 3131
problem_type3 3131
problem_type4 3131
problem_type5 3131
problem_type6 3131
problem_type7 3131
problem_type8 3131
problem_type9 3131
problem_type10 3131
Name: PROBLEM_TYPE, dtype: int64

提前致谢。

最佳答案

您可以执行以下操作:

mi = df["PROBLEM_TYPE"].value_counts().min()
df_filtered = df.sample(frac=1).groupby("PROBLEM_TYPE").head(mi)

此解决方案有两个步骤,找到数量最少的“PROBLEM_TYPE”:

mi = df["PROBLEM_TYPE"].value_counts().min()

然后打乱数据帧行并获取每组的第一个 mi:

df_filtered = df.sample(frac=1).groupby("PROBLEM_TYPE").head(mi)

参见here有关如何打乱数据帧的讨论。

关于python - 如何为 Pandas DataFrame 中找到的所有唯一值设置相同的频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58382798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com