首页 > 编程语言 >Python数据预处理+正态性检验+异常值处理+Q-Q图-K-S检验+相关性分析(2024MathorCup A题为例)

Python数据预处理+正态性检验+异常值处理+Q-Q图-K-S检验+相关性分析(2024MathorCup A题为例)

时间:2024-07-27 17:56:28浏览次数:10  
标签:plt 2024MathorCup Python excel 检验 PCI values pd np

#数据预处理#正态性检验、Q-Q图、箱线图、直方图、相关性分析
#Q-Q图
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import norm
from scipy.stats import probplot
a=pd.read_excel('附件1:小区基本信息.xlsx',engine='openpyxl')
b=pd.read_excel('附件2:冲突及干扰矩阵数据.xlsx',engine='openpyxl')
c=pd.read_excel('附件3:混淆矩阵数据.xlsx',engine='openpyxl')

一、正态性检验

K-S检验:

#正态性检验
#k-s检验
from scipy.stats import kstest
d1 = a.values[:,2]
d2 = b.values[:,2]
d3 = c.values[:,2]
print(kstest(d1, 'norm'))
print(kstest(d2, 'norm'))
print(kstest(d3, 'norm'))

KstestResult(statistic=0.9938007877149561, pvalue=0.0, statistic_location=3, statistic_sign=-1)
KstestResult(statistic=0.8413447460685429, pvalue=0.0, statistic_location=1, statistic_sign=-1)
KstestResult(statistic=0.8413447460685429, pvalue=0.0, statistic_location=1, statistic_sign=-1)

将文件写入excel:

pd.DataFrame([kstest(d1,'norm'),kstest(d2, 'norm'),kstest(d3, 'norm')]).to_excel('正态性检验.xlsx',header=['k-s统计量','p值'],index=False)
df=pd.read_excel('正态性检验.xlsx',engine='openpyxl')
#表格添加一列PCI 1、PCI 2、PCI 3
df.insert(0,'指标',['PCI 1','PCI 2','PCI 3'])
df.to_excel('正态性检验.xlsx',index=False)

Q-Q图:

#Q-Q图
# 提取数据
d1 = a.values[:,2]
# 计算均值和标准差
mu1 = d1.mean()
s1 = d1.std()
sd1 = sorted(d1)
n1 = len(d1)
# 计算分位数
x1 = (np.arange(n1) + 1 / 2) / n1
yi1 = norm.ppf(x1, mu1, s1)

# 提取数据
d2 = b.values[:,2]

# 计算均值和标准差
mu2 = d2.mean()
s2 = d2.std()
sd2 = sorted(d2)
n2 = len(d2)

# 计算分位数
x2 = (np.arange(n2) + 1 / 2) / n2
yi2 = norm.ppf(x2, mu2, s2)

#提取数据
d3 = c.values[:,2]

# 计算均值和标准差
mu3 = d3.mean()
s3 = d3.std()
sd3 = sorted(d3)
n3 = len(d3)
    
# 计算分位数
x3 = (np.arange(n3) + 1 / 2) / n3
yi3 = norm.ppf(x3, mu3, s3)
    
# 设置字体和大小
plt.rc('font', size=12)
plt.rc('font', family='SimHei')
plt.rc('axes', unicode_minus=False)
# 创建画布
plt.figure(figsize=(20, 5))
# 绘制QQ图
plt.subplot(131)
plt.plot(yi1, sd1, 'o', label='QQ图')
plt.plot(sd1, sd1, label='参照直线')
plt.legend()
plt.xlabel('PCI 1')
plt.ylabel('现网PCI')

plt.subplot(132)
plt.plot(yi2, sd2, 'o', label='QQ图')
plt.plot(sd2, sd2, label='参照直线')
plt.legend()
plt.xlabel('PCI 2')
plt.ylabel('冲突MR数')

plt.subplot(133)
plt.plot(yi3, sd3, 'o', label='QQ图')
plt.plot(sd3, sd3, label='参照直线')
plt.legend()
plt.xlabel('PCI 3')
plt.ylabel('混淆MR数')
# 保存图片
plt.savefig('Q-Q图PCI 1.png')

 

plt.figure(figsize=(20, 5))
# 使用probplot绘制QQ图
plt.subplot(131)
probplot(d1, plot=plt)
plt.subplot(132)
probplot(d2, plot=plt)
plt.subplot(133)
probplot(d3, plot=plt)
plt.savefig('Q-Q图PCI 2.png')

 二、异常值检测

箱线图

#箱线图
import pandas as pd
import matplotlib.pyplot as plt
a=pd.read_excel('附件1:小区基本信息.xlsx',engine='openpyxl')
b=pd.read_excel('附件2:冲突及干扰矩阵数据.xlsx',engine='openpyxl')
c=pd.read_excel('附件3:混淆矩阵数据.xlsx',engine='openpyxl')
plt.figure(figsize=(20, 5))
plt.subplot(131)
plt.boxplot(a.values[:,2])
plt.xlabel('PCI 1')
plt.ylabel('现网PCI')
plt.subplot(132)
plt.boxplot(b.values[:,2])
plt.xlabel('PCI 2')
plt.ylabel('冲突MR数')
plt.subplot(133)
plt.boxplot(c.values[:,2])
plt.xlabel('PCI 3')
plt.ylabel('混淆MR数')
plt.savefig('箱线图.png')

正态分布直方图 

#直方图
import pandas as pd
import matplotlib.pyplot as plt
a=pd.read_excel('附件1:小区基本信息.xlsx',engine='openpyxl')
b=pd.read_excel('附件2:冲突及干扰矩阵数据.xlsx',engine='openpyxl')
c=pd.read_excel('附件3:混淆矩阵数据.xlsx',engine='openpyxl')
plt.figure(figsize=(20, 5))
plt.subplot(131)
plt.hist(a.values[:,2], bins=20)
#添加拟合曲线
mu = a.values[:,2].mean()
sigma = a.values[:,2].std()
x1 = np.linspace(a.values[:,2].min(), a.values[:,2].max(), 100)
y1 = 1/(sigma * np.sqrt(2 * np.pi)) * np.exp( - (x1 - mu)**2 / (2 * sigma**2))
plt.plot(x1, y1, 'r-')
plt.xlabel('PCI 1')
plt.ylabel('现网PCI')

plt.subplot(132)
plt.hist(b.values[:,2], bins=20)
#添加拟合曲线
mu = b.values[:,2].mean()
sigma = b.values[:,2].std()
x2 = np.linspace(b.values[:,2].min(), b.values[:,2].max(), 100)
y2 = 1/(sigma * np.sqrt(2 * np.pi)) * np.exp( - (x2 - mu)**2 / (2 * sigma**2))
plt.plot(x2, y2, 'r-')
plt.xlabel('PCI 2')
plt.ylabel('冲突MR数')

plt.subplot(133)
plt.hist(c.values[:,2], bins=20)
#添加拟合曲线
mu = c.values[:,2].mean()
sigma = c.values[:,2].std()
x3 = np.linspace(c.values[:,2].min(), c.values[:,2].max(), 100)
y3 = 1/(sigma * np.sqrt(2 * np.pi)) * np.exp( - (x3 - mu)**2 / (2 * sigma**2))
plt.plot(x3, y3, 'r-')
plt.xlabel('PCI 3')
plt.ylabel('混淆MR数')
plt.savefig('直方图.png')

三、相关性分析 

#相关性分析
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
a=pd.read_excel('附件1:小区基本信息.xlsx',engine='openpyxl')
b=pd.read_excel('附件2:冲突及干扰矩阵数据.xlsx',engine='openpyxl')
c=pd.read_excel('附件3:混淆矩阵数据.xlsx',engine='openpyxl')
plt.figure(figsize=(20, 5))
plt.subplot(131)
sns.heatmap(a.corr(), annot=True, cmap='coolwarm')
plt.subplot(132)
sns.heatmap(b.corr(), annot=True, cmap='coolwarm')
plt.subplot(133)
sns.heatmap(c.corr(), annot=True, cmap='coolwarm')
plt.savefig('相关性分析.png')

标签:plt,2024MathorCup,Python,excel,检验,PCI,values,pd,np
From: https://blog.csdn.net/2301_76574743/article/details/140738860

相关文章

  • 文件编码检测-Python解决UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0x
    #检测数据编码格式importchardetwithopen('附件1.csv','rb')asf:result=chardet.detect(f.read())#读取一定量的数据进行编码检测print(result['encoding'])#打印检测到的编码在读取文件时会遇到各种问题,UnicodeDecodeError:'utf-8'codeccan'tde......
  • 一个月收益高达16.5K,来看我是如何通过Python技术手段变现,逐步迈向财富自由的!
    写在开篇随着大数据和人工智能的兴起。各行业对爬虫类和数分类服务的需求量呈指数级的暴增。传统行业受经济下行的影响,近段时间失业找不到工作的朋友,后台咨询技术变现、兼职接单问题也越来越多。​当然也有网友向我发来喜报,告诉我他上半年通过爬虫单月接单1.65w,给兼职副......
  • ast获取指定python文件中携带指定装饰器函数的实现
    在实现自动化测试过程中,需要根据指定的装饰器来标记需要执行的用例或函数,下面根据使用ast库来实现读取指定文件中的数据结构后对其内容进行解析并拿到携带对应装饰器的函数。根据以下方法仅能解析func、class-func的数据结构,其余数据结构可能不兼容,需要根据实际情况进行完善调整......
  • python—pandas基础(1)
    文章目录安装设定系统环境Pandas的主要数据结构Series对象创建使用列表创建属性values和index指定index使用list列表指定index传入字典创建,默认将key作为index将一个标量与index对象一起传入创建DataFrame对象创建创建DataFrame对象valuesindexcolumns属性列表创建索......
  • Python毕业设计基于Django的网上购物销售系统(代码+数据库+文档LW+运行成功)
    文末获取资源,收藏关注不迷路文章目录一、项目介绍二、主要使用技术三、研究内容四、核心代码五、文章目录一、项目介绍随着互联网技术的不断发展和普及,电子商务行业迅速崛起。越来越多的消费者选择在线购物,享受便捷、快速的购物体验。因此,开发一款基于Python的购物......
  • python毕业设计基于Django的电子书阅读系统的设计与实现 爬虫+大屏可视化
    文末获取资源,收藏关注不迷路文章目录一、项目介绍二、主要使用技术三、研究内容+四、核心代码五、文章目录一、项目介绍随着互联网的普及和移动设备的广泛应用,人们获取信息和阅读的方式发生了巨大变化。传统的纸质书籍阅读方式虽然经典,但存在携带不便、更新速度慢等......
  • python_wholeweek2
    目录编码方式open函数的使用open进行写入时有关于编码解码前面的open函数使用加了一个r绝对路径和相对路径的使用open函数的几种modewithopen的使用(对比open函数而言补充知识点,之前用过replace但是给忘了附加对于python识别文本时的编码错误链接解释编码方式​ txt文件的编码方......
  • Python 与 Visual Studio Professional 2022(64 位)- 预览版本 5.0 交互窗口挂起
    我正在MicrosoftVisualStudioProfessional2022(64位)-预览版17.11.0预览版5.0上运行Python开发工作负载。我正在关注VisualStudio中的Python教程https://learn.microsoft.com/en-us/visualstudio/python/tutorial-working-with-python-in-visual-studio-st......
  • Python面试宝典第19题:最小路径和
    题目        给定一个包含非负整数的mxn网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。        示例1:输入:grid=[[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径1→3→1→1→1的总......
  • 基于python的出租车管理网站的设计与实现【源码+文档+PPT】
    ......