提问人:방준호 提问时间:5/9/2023 最后编辑:desertnaut방준호 更新时间:5/10/2023 访问量:58
有什么方法可以生成新数据吗?
Is there any way to generate new data?
问:
我有这些数据。原始数据从第 1 列到第 5 列。
有没有办法通过随机组合没有特定条件的列来创建新数据?
例如,我通过在列之间制作公式来制作新数据。我知道有一些方法可以用python自己制作公式。但我想做大约 100 多列。有没有自动方法可以做到这一点?(Numpy,熊猫或类似的东西)
答:
0赞
Simone Gigante
5/10/2023
#1
您可以使用一些内置模块,例如包含一组数学函数的 and。我使用这种方法生成了一些随机列,这些列具有原始列的随机组合。请注意,用于每个操作的原始列数也是随机的,但如果您愿意,可以将其设置为特定数字。
列名仅用于可视化目的,因为在某些情况下,列的名称可能看起来太近并且难以阅读。
在此代码中,数学运算仅使用原始列,如果您还想使用新创建的列,则应删除变量并获取内部循环。还要考虑使用此代码,所有操作都从左到右发生,两个数字对,这意味着如果您看到 A + B * C,则顺序为:random
operator
[
]
original_columns
df.columns
A + B
(A+B) * C
NUM_OF_COLUMNS = 3 data = np.random.rand(10, 5) df = pd.DataFrame(data, columns=['A', 'B', 'C', 'D', 'E']) operations = [operator.add, operator.sub, operator.mul, operator.truediv] operations_dict = {'add':'+','sub':'-','mul':'*','truediv':'/'} original_columns = df.columns for _ in range(NUM_OF_COLUMNS): num_operators = random.randint(2,5) selected_columns = random.sample(list(original_columns), num_operators) selected_operations = [random.choice(operations) for _ in range(num_operators-1)] new_column = df[selected_columns[0]] column_name = f"[{selected_columns[0]}" for i in range(1, len(selected_columns)): new_column = selected_operations[i-1](new_column, df[selected_columns[i]]) column_name += f" {operations_dict[selected_operations[i-1].__name__]} {selected_columns[i]}" column_name += "]" df[column_name] = new_column print(df)
输出:
A B C D E [B / A * C] [B / C * D + E] [C - B]
0 0.133616 0.518619 0.681410 0.903823 0.971338 2.644830 1.659235 0.162791
1 0.968481 0.363165 0.274024 0.009211 0.821189 0.102755 0.833397 -0.089140
2 0.267062 0.197164 0.187881 0.862648 0.151512 0.138707 1.056784 -0.009283
3 0.460873 0.841071 0.150538 0.469626 0.424029 0.274725 3.047882 -0.690534
4 0.172947 0.602186 0.004098 0.937253 0.093663 0.014267 137.835107 -0.598088
5 0.015732 0.502398 0.380856 0.593829 0.725551 12.162291 1.508887 -0.121542
6 0.606476 0.854250 0.235426 0.306123 0.205574 0.331609 1.316350 -0.618825
7 0.220014 0.415449 0.418816 0.788880 0.001986 0.790843 0.784525 0.003366
8 0.479869 0.480209 0.587922 0.318358 0.116142 0.588339 0.376173 0.107713
9 0.927947 0.261066 0.225387 0.910492 0.268781 0.063410 1.323409 -0.035680
上一个:表格数据集的编制
评论