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

liftword4个月前 (03-09)技术文章24

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

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

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


实现代码:

1

import pandas as pd

2

import matplotlib.pyplot as plt

3

import seaborn as sns

4

import matplotlib

5

from scipy import stats

6

import warnings

7

warnings.filterwarnings("ignore")

8


9

def Box_Cox(file,sheet_name):

10

df1 = pd.read_excel(file,sheet_name)

11

print(df1["患者密度(人/10万人)"])

12

sns.distplot(df1["患者密度(人/10万人)"],color = "#D86457")

13

matplotlib.rcParams['font.sans-serif'] = ['SimHei']

14

matplotlib.rcParams['axes.unicode_minus'] = False

15

plt.show()

16


17

fig = plt.figure()

18

ax = fig.add_subplot(111)

19

stats.boxcox_normplot(df1["患者密度(人/10万人)"], -20, 20,plot = ax)

20

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

21

plt.show()

22


23

print(stats.boxcox_normmax(df1["患者密度(人/10万人)"]))

24

x = stats.boxcox(df1["患者密度(人/10万人)"],stats.boxcox_normmax(df1["患者密度(人/10万人)"]))

25

sns.distplot(x,color = "#D86457")

26

plt.show()

27


28

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

29

print(df)

30


31

if __name__=='__main__':

32

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

实现效果:

喜欢记得点赞,在看,加关注(数据杂坛),将持续更新!

相关文章

20.8k Star本科生为你开发的十六进制编辑器

ImHex 是一个十六进制编辑器,用于逆向工程师解码、显示和分析二进制数据格式、提取信息或写入字节补丁的工具。ImHex 的开发者是 WerWolv,他是一名来自瑞士的 23 岁嵌入式系统电子工程师。...

Python 数字和转换

在本节中,我们来学习 Python 中的数字数据类型以及你可以对这些数字执行的数学运算。此外,我们还会学习如何从一种数据类型转换为另一种数据类型。Python 数字数据类型Python 中的数字数据类...

Python基础 - 字符串格式化方式

字符串格式化是指将变量等信息按照指定的格式嵌入到字符串中,使其符合特定的显示要求。Python中字符串格式化方式一般有以下几种:字符串拼接使用 % 操作符使用 str.format()使用 f-str...

通过篡改cred结构体实现提权利用

前言作者利用任意地址读写分别改写modprobe_path以及cred结构体去实现提权的操作,由于改写modprobe_path的方法之前已经研究过了,因此现在详细记录一下如何修改cred结构体完成提...

python中format函数和f-string详解

Python 中的 format() 函数是一种字符串格式化的方法,通过花括号 {} 来定义占位符,并通过 format() 方法中的参数来替换这些占位符。这种方法非常灵活,可以处理多种数据类型,并且...

完整源代码!Python如何实现FILETIME和DATETIME相互转换?

在进行C++开发过程中,因为之前输出的socket包的结果是二进制的,同时时间戳使用的是FILETIME,输出的文件是十六进制的文件,非常不便于查看和定位问题。那么如果才能快速的将FILETIME格式...