栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python实现非正态分布转正态分布(BoxCox转换)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python实现非正态分布转正态分布(BoxCox转换)

功能:将一维非正态分布数据转化为正态分布

输入:xlsx文件含有"患者密度(人/10万人)"一列

输出:将"患者密度(人/10万人)"一列转换为正态分布,并输出

实现代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib
from scipy import stats
import warnings
warnings.filterwarnings("ignore")

def Box_Cox(file,sheet_name):
    df1 = pd.read_excel(file,sheet_name)
    print(df1["患者密度(人/10万人)"])
    sns.distplot(df1["患者密度(人/10万人)"],color = "#D86457")
    matplotlib.rcParams['font.sans-serif'] = ['SimHei']
    matplotlib.rcParams['axes.unicode_minus'] = False
    plt.show()

    fig = plt.figure()
    ax = fig.add_subplot(111)
    stats.boxcox_normplot(df1["患者密度(人/10万人)"], -20, 20,plot = ax)
    plt.axvline(x = stats.boxcox_normmax(df1["患者密度(人/10万人)"]),color = "#D86457")
    plt.show()

    print(stats.boxcox_normmax(df1["患者密度(人/10万人)"]))
    x = stats.boxcox(df1["患者密度(人/10万人)"],stats.boxcox_normmax(df1["患者密度(人/10万人)"]))
    sns.distplot(x,color = "#D86457")
    plt.show()

    df=pd.DataFrame(x,columns=['转换'])
    print(df)


if __name__=='__main__':
    Box_Cox("F:医学大数据课题论文终稿修改实验差异性分析.xlsx",sheet_name='人口密度分组')

结果展示:

 

 

 

 关注数据杂坛学习更多!

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/857619.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号