这是一个自我回答的问题。我正在尝试对 Power Query 中的数据进行匿名化以将其包含在我的投资组合中。我想要一个具有正态分布或高斯分布的随机数能够乘以商品的实际价格,这样原始数据就会被匿名化。原始数据集的值分布和功能仍然保留。
原始数据集包含一个价格列表,我需要稍微更改一下才能匿名。我期望能够仅使用 M 来完成它,但没有像 NumPy 中那样的“随机正态”函数。我认为实现 python 列将是一个很好的解决方案。
首先,将您尝试匿名化的原始数据集加载到电源查询中。
您需要将当前文件的隐私级别设置为“忽略”(我无法让它与数据源设置一起使用并将其设置为公开,正如一些论坛建议的那样)。 转到
编辑表的查询,然后单击功能区上的“转换”,然后单击“运行 Python 脚本” 。它不仅可以转换,您还可以在 Python 脚本中添加列 表中的所有数据将包含在一个名为“dataset”的变量中,代码中的第一行是当您单击 Python 时由 Power Query 自动生成的,其余部分您可以复制并粘贴以获得相同的结果。
# 'dataset' holds the input data for this script
ds=dataset
import numpy as np
rng = np.random.default_rng()
numbers = rng.normal(size=len(dataset))
ds['randG']=numbers
dataset = ds
您需要单击列中的展开才能查看数据。
此代码将在表中生成一个名为 randG 的新列,其中包含正态分布的随机数。然后,您可以在数学函数中使用它来稍微改变原始金额。就我而言,我将使用它来使价格高于或低于原始金额的 20%。
参考文献
https://realpython.com/numpy-random-normal/https://realpython.com/power-bi-python/ 如何使用 Python 在 PowerBI 中制作可重现的数据样本? https://community.fabric.microsoft.com/t5/Desktop/Formula-Firewall-Query-references-other-queries-so-it-may-not/m-p/18619