Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将数据帧转换为正态分布?_Python_Pandas_Numpy_Dataframe - Fatal编程技术网

Python 如何将数据帧转换为正态分布?

Python 如何将数据帧转换为正态分布?,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我有一个这样的数据帧 my_df = pd.DataFrame({'A' : [0.1,0.15,0.22,0.2], 'B' : [0.9,0.85,0.78,0.8]}) my_df # normality test stat, p = shapiro(my_df) print('Statistics=%.3f, p=%.3f' % (stat, p)) Shapiro检验表明数据不是高斯分布 我如何更改数据框,使其获得两个新列(即现有两列的四个特征),新值遵循正态/高斯分布?数据的标准化

我有一个这样的数据帧

my_df = pd.DataFrame({'A' : [0.1,0.15,0.22,0.2], 'B' : [0.9,0.85,0.78,0.8]})
my_df
# normality test
stat, p = shapiro(my_df)
print('Statistics=%.3f, p=%.3f' % (stat, p))
Shapiro检验表明数据不是高斯分布


我如何更改数据框,使其获得两个新列(即现有两列的四个特征),新值遵循正态/高斯分布?

数据的标准化通过转换完成,因此您可以执行以下操作:

from scipy.stats import boxcox, shapiro
my_df = pd.DataFrame({'A' : [0.1,0.15,0.22,0.2], 'B' : [0.9,0.85,0.78,0.8]})
df_norm = my_df.apply(lambda x: boxcox(x)[0])
print(df_norm)
          A         B
0 -0.660612 -0.134124
1 -0.641490 -0.237600
2 -0.609405 -0.451641
3 -0.619138 -0.379958

你能分享基于样本输入的预期输出吗?我不太明白。新的输出应该是为A列和B列中的现有值计算的新值。新列应该如何连接到非正常的现有列?这是我不知道的。我想有一些函数可以用来获得标准化值。为什么不简单地生成新的标准值呢?谢谢。这些值也可以是正数吗?在我的原始数据框中,在使用建议的boxcox函数对其进行规范化后,p值仍然为0。我能做什么?向我展示你的全部数据它与PowerTransformer一起工作(方法='yeo-johnson',standardize=True)