Python数据分析与应用 |第4章 使用pandas进行数据预处理 (实训)

表1-1healthcare-dataset-stroke.xlsx 部分中风患者的基础信息和体检数据

编号性别高血压是否结婚工作类型居住类型体重指数吸烟史中风
9046私人城市36.6以前吸烟
51676私营企业农村N/A从不吸烟
31112私人农村32.5从不吸烟
60182私人城市34.4抽烟
1665私营企业农村24从不吸烟
56669私人城市29以前吸烟
53882私人农村27.4从不吸烟

表二 healthcare-dataset-age-abs.xlsx 部分中风患者的年龄和平均血糖数据

编号年龄平均血糖
904667228.69
5167661202.21
3111280105.92
6018249171.23
166579174.12
5666981186.21
538827470.09
104346994.39
274195976.15
604917858.57

实训1 合并年龄、平均血糖和中风患者信息数据

1、训练要点

(1) 掌握判断主键的方法

(2) 掌握主键合并方法

2、需求分析

某医院为了早期监测预警患者的中风风险,对现有中风患者的基础信息和体检数据(healthcare-dataset-stroke.xls)进行分析,观察发现患者基础信息和体检数据中缺少中风患者的年龄和平均血糖的信息。另有年龄和平均血糖数据(healthcare-dataset-age_abs.xls)存放了分析所需的患者的年龄和平均血糖信息。

(1)读取两个数据文件,打印前5行结果进行显示。

# 合并年龄、平均血糖和中风患者数据
import pandas as pd
df1 = pd.read_excel('C:/Users/DELL/Python/healthcare-dataset-stroke.xlsx')
df2 = pd.read_excel('C:/Users/DELL/Python/healthcare-dataset-age-abs.xlsx')#(1)读取两个数据文件,打印前5行结果进行显示。
print("healthcare-dataset-stroke.xls前5行:")
print(df1.head(5))
print("----------------------------------------")
print("healthcare-dataset-age_abs.xls前5行:")
print(df2.head(5))

(2)利用concat函数进行纵向堆叠,展示‘内连接‘、‘外连接’的拼接结果(前5行即可)。

# 使用concat函数进行纵向堆叠
import pandas as pd
df1 = pd.read_excel('C:/Users/DELL/Python/healthcare-dataset-stroke.xlsx')
df2 = pd.read_excel('C:/Users/DELL/Python/healthcare-dataset-age-abs.xlsx')# 外连接
df_concat = pd.concat([df1, df2], axis=0, join='outer')
print("纵向堆叠结果前5行(外连接):")
print(df_concat.head(5))# 内连接
df_concat = pd.concat([df1, df2], axis=0, join='inner')
print("纵向堆叠结果前5行(内连接):")
print(df_concat.head(5))

(3)对两个数据利用‘编号’列作为主键进行合并,展示合并结果(前5行即可)

# 使用'编号'列作为主键进行合并
import pandas as pd
df1 = pd.read_excel('C:/Users/DELL/Python/healthcare-dataset-stroke.xlsx')
df2 = pd.read_excel('C:/Users/DELL/Python/healthcare-dataset-age-abs.xlsx')df_merge = pd.merge(df1, df2, on='编号', how='inner')
print("合并结果前5行:")
print(df_merge.head(5))

实训2 对表格数据进行数据清洗。

需求说明:

基于1中的数据

(1)对于表格healthcare-dataset-stroke.xls的信息,使用duplicates函数对‘工作类型’、‘吸烟史’两列数据进行特征去重。

# 对于表格healthcare-dataset-stroke.xls的信息,使用duplicates函数对‘工作类型’、‘吸烟史’两列数据进行特征去重
import pandas as pd
# 读取数据
df = pd.read_excel('C:/Users/DELL/Python/healthcare-dataset-stroke.xlsx')
# 对'工作类型'和'吸烟史'列进行去重
df = df.drop_duplicates(subset=['工作类型', '吸烟史'])
# 打印结果
print(df)

(2)对于表格healthcare-dataset-age_abs.xls的信息,对‘年龄’、‘平均血糖’两列数据,使用sum及isnull函数判断及统计缺失值。

# 对于表格healthcare-dataset-age_abs.xls的信息,对‘年龄’、‘平均血糖’两列数据,使用sum及isnull函数判断及统计缺失值。
import pandas as pd# 读取数据
df = pd.read_excel('C:/Users/DELL/Python/healthcare-dataset-age-abs.xlsx')
# 判断是否有缺失值
missing_values = df.isnull()
# 统计缺失值的个数
missing_count = missing_values.sum()
# 打印结果
print("缺失值统计:")
print(missing_count)

(3)对‘年龄’列的数据使用均值替换其缺失值;对‘平均血糖’列数据使用3阶多项式进行插值。

# (3)	对‘年龄’列的数据使用均值替换其缺失值;对‘平均血糖’列数据使用3阶多项式进行插值。
import pandas as pd
import numpy as np# 读取数据
df = pd.read_excel('C:/Users/DELL/Python/healthcare-dataset-age-abs.xlsx')# 计算年龄的均值
mean_age = df['年龄'].mean()# 使用均值替换年龄列的缺失值
df['年龄'] = df['年龄'].fillna(mean_age)# 对平均血糖列进行3阶多项式插值
df['平均血糖'] = df['平均血糖'].interpolate(method='polynomial', order=3)# 打印结果
print(df)

(4)使用3δ原则判断‘年龄’、‘平均血糖’两列数据中是否存在异常值及异常值的个数。

import pandas as pd
import numpy as np# 读取数据
df = pd.read_excel('C:/Users/DELL/Python/healthcare-dataset-age-abs.xlsx')# 计算年龄和平均血糖的均值和标准差
mean_age = df['年龄'].mean()
std_age = df['年龄'].std()
mean_glucose = df['平均血糖'].mean()
std_glucose = df['平均血糖'].std()# 使用3δ原则判断是否存在异常值
outliers_age = (np.abs(df['年龄'] - mean_age) > 3 * std_age)
outliers_glucose = (np.abs(df['平均血糖'] - mean_glucose) > 3 * std_glucose)# 统计异常值的个数
num_outliers_age = outliers_age.sum()
num_outliers_glucose = outliers_glucose.sum()# 打印结果
print("年龄异常值个数:", num_outliers_age)
print("平均血糖异常值个数:", num_outliers_glucose)

实训 3 基于healthcare-dataset-age_abs.xls中的‘平均血糖’列数据,(1)使用离差标准化、标准差标准化、小数定标标准化进行标准化处理。

需求分析:

(1)使用离差标准化 进行标准化处理

import pandas as pd
# 读取数据
df = pd.read_excel('C:/Users/DELL/Python/healthcare-dataset-age-abs.xlsx')
# 离差标准化
df['平均血糖_离差标准化'] = (df['平均血糖'] - df['平均血糖'].min()) / (df['平均血糖'].max() - df['平均血糖'].min())
print(df)

(2)使用标准差标准化进行标准化处理

# 标准差标准化
import pandas as pd
# 读取数据
df = pd.read_excel('C:/Users/DELL/Python/healthcare-dataset-age-abs.xlsx')
df['平均血糖_标准差标准化'] = (df['平均血糖'] - df['平均血糖'].mean()) / df['平均血糖'].std()
print(df)

(3)使用小数定标标准化进行标准化处理。

import pandas as pd# 读取数据
df = pd.read_excel('C:/Users/DELL/Python/healthcare-dataset-age-abs.xlsx')# 使用0填充缺失值
df['平均血糖'] = df['平均血糖'].fillna(0)# 小数定标标准化
df['平均血糖_小数定标标准化'] = df['平均血糖'] / (10 ** (df['平均血糖'].apply(lambda x: len(str(abs(int(x))))) - 1))# 打印结果
print(df)

实训4 对表healthcare-dataset-stroke.xls中‘吸烟史’的类别型数据进行哑变量处理,转换为数值型数据。

需求说明:

      (1)对表healthcare-dataset-stroke.xls中‘吸烟史’的类别型数据进行哑变量处理,转换为数值型数据。

import pandas as pd# 读取数据
df1 = pd.read_excel('C:/Users/DELL/Python/healthcare-dataset-stroke.xlsx')# 哑变量处理
df1_dummies = pd.get_dummies(df1['吸烟史'], prefix='吸烟史')print(df1_dummies)

(2)对表healthcare-dataset-age_abs.xls中‘年龄’数据使用等宽法、等频法进行离散化,划分为5类区间。

import pandas as pd
df2 = pd.read_excel('C:/Users/DELL/Python/healthcare-dataset-age-abs.xlsx')# 等宽法离散化
df2['年龄_等宽法'] = pd.cut(df2['年龄'], bins=5, labels=False)# 等频法离散化
df2['年龄_等频法'] = pd.qcut(df2['年龄'], q=5, labels=False)print(df2[['年龄', '年龄_等宽法', '年龄_等频法']])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/818909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LAMMPS学习】八、基础知识(3.2)使用chunks计算系统属性

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

蓝桥杯 — —灵能传输

灵能传输 友情链接:灵能传输 题目: 输入样例: 3 3 5 -2 3 4 0 0 0 0 3 1 2 3输出样例: 3 0 3思路: 题目大意:给出一个数组,每次选择数组中的一个数(要求不能是第一个数与最后一个…

大数据几种任务调度工具

文章目录 一、DolphinScheduler概述和部署1、DolphinScheduler简介1.1 概述1.2 核心架构 2、DolphinScheduler部署模式2.1 概述2.2 单机模式2.3 伪集群模式2.4 集群模式 3、DolphinScheduler集群模式部署3.1 集群规划与准备3.2 下载与配置部署脚本3.3 初始化数据库3.4 一键部署…

maven引入外部jar包

将jar包放入文件夹lib包中 pom文件 <dependency><groupId>com.jyx</groupId><artifactId>Spring-xxl</artifactId><version>1.0-SNAPSHOT</version><scope>system</scope><systemPath>${project.basedir}/lib/Spr…

电商技术揭秘二十四:无人仓储与自动化技术

相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xff1a;电商平台…

华媒舍:7种方式,打造出旅游媒体套餐

现如今&#xff0c;伴随着旅游业发展与繁荣&#xff0c;更多旅游业发展从业人员越来越重视产品营销品牌基本建设&#xff0c;希望可以将自己的度假旅游产品和服务营销推广给更多的潜在用户。而建立一个优秀的旅游业发展媒体套餐内容品牌是吸引目标客户的重要步骤。下面我们就详…

Golang | Leetcode Golang题解之第30题串联所有单词的子串

题目&#xff1a; 题解&#xff1a; func findSubstring(s string, words []string) (ans []int) {ls, m, n : len(s), len(words), len(words[0])for i : 0; i < n && im*n < ls; i {differ : map[string]int{}for j : 0; j < m; j {differ[s[ij*n:i(j1)*n]…

把握零碎时间,开启长期副业兼职之旅!在家也能轻松赚钱!

转眼间&#xff0c;2024年已悄然走过三分之一。这一年&#xff0c;外界环境似乎并不那么友好&#xff0c;但对我而言&#xff0c;我的月收入仍然相对稳定。我找到的副业让我每月能赚到3000元以上&#xff0c;这让我深感庆幸。 现实中&#xff0c;只依赖主业工资的日子确实艰辛…

更改ip地址的几种方式有哪些

在数字化时代&#xff0c;IP地址作为网络设备的标识&#xff0c;对于我们在网络世界中的活动至关重要。然而&#xff0c;出于多种原因&#xff0c;如保护隐私、访问特定网站或进行网络测试&#xff0c;我们可能需要更改IP地址。虎观代理将详细介绍IP地址的更改方法与步骤&#…

Java基础(一)--语法入门

文章目录 第一章、语法入门一、Java简介1、JVM2、Java程序执行过程3、JDK4、JRE5、JDK、JRE和JVM三者关系 二、Java常量与变量1、标识符2、关键字3、保留字4、变量5、数据类型6、常量 三、运算符1、算术运算符2、赋值运算符3、关系运算符4、逻辑运算符5、条件运算符6、运算符的…

反爬虫之代理IP封禁-协采云IP池

反爬虫之代理IP封禁-协采云IP池 1、目标网址2、IP封禁4033、协采云IP池 1、目标网址 aHR0cDovL3d3dy5jY2dwLXRpYW5qaW4uZ292LmNuLw 2、IP封禁403 这个网站对IP的要求很高&#xff0c;短时间请求十几次就会遭关进小黑屋。如下图&#xff1a; 明显是网站进行了反爬处理&…

Cannot access ‘androidx.activity.FullyDrawnReporterOwner‘

Android Studio新建项目就报错&#xff1a; Cannot access ‘androidx.activity.FullyDrawnReporterOwner’ which is a supertype of ‘cn.dazhou.osddemo.MainActivity’. Check your module classpath for missing or conflicting dependencies 整个类都报错了。本来原来一直…

OpenCV-AMF算法(自适应中值滤波Adaptive Median Filtering)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 实现原理 AMF&#xff08;Adaptive Median Filter&#xff0c;自适应中值滤波&#xff09;是一种用于图像处理和信号处理的滤波算…

蓝桥杯2024年第十五届省赛真题-R 格式(高精度乘法 + 加法)

本题链接&#xff1a;蓝桥杯2024年第十五届省赛真题-R 格式 - C语言网 题目&#xff1a;​​​​​​​ 样例&#xff1a; 输入 2 3.14 输出 13 思路&#xff1a; 根据题意&#xff0c;结合数据范围&#xff0c;这是一道模板的高精度乘以低精度问题。 题意是double 类型 d 与…

论文笔记:Time Travel in LLMs: Tracing Data Contamination in Large Language Models

iclr 2024 spotlight reviewer评分 688 1 intro 论文认为许多下游任务&#xff08;例如&#xff0c;总结、自然语言推理、文本分类&#xff09;上观察到的LLMs印象深刻的表现可能因数据污染而被夸大 所谓数据污染&#xff0c;即这些下游任务的测试数据出现在LLMs的预训练数据…

mac电脑软件 Magnet v2.14.0免激活中文版

Magnet是一款窗口管理工具&#xff0c;适用于Mac操作系统。它可以帮助用户轻松地管理和组织多个应用程序的窗口&#xff0c;提高工作效率。 Magnet支持多种窗口布局和组合方式&#xff0c;可以将窗口分为左右、上下、四分之一等不同的比例和位置&#xff0c;用户可以根据实际需…

阿里云Centos7下编译glibc

编译glibc 原来glibc版本 编译前需要的环境: CentOS7 gcc 8.3.0 gdb 8.3.0 make 4.0 binutils 2.39 (ld -v) python 3.6.8 其他看INSTALL, 但有些版本也不易太高 wget https://mirrors.aliyun.com/gnu/glibc/glibc-2.37.tar.gz tar -zxf glibc-2.37.tar.gz cd glibc-2.37/ …

Spring Boot 整合 Mockito:提升Java单元测试的高效实践

引言 在Java开发领域&#xff0c;Spring Boot因其便捷的配置和强大的功能而受到广泛欢迎&#xff0c;而Mockito作为一款成熟的单元测试模拟框架&#xff0c;则在提高测试质量、确保代码模块间解耦方面扮演着至关重要的角色。本文将详细介绍如何在Spring Boot项目中整合Mockito&…

c++总结笔记(一)

计算机可以将程序转化为二进制指令&#xff08;即机器码&#xff09;&#xff0c;并由CPU执行&#xff0c;CPU会按照指令的顺序依次执行每个指令。 C语言特点&#xff1a; 简洁高效可移植模块化标准化 C语言的标准 C89(C90)标准C99标准C11标准 导入 使用include导入包含…

《R语言与农业数据统计分析及建模》学习——数据读入

一、工作目录 # 获取当前工作目录 getwd()# 改变工作目录为指定路径下的文件夹 # 注意工作目录的表达方式 setwd(D:/R_class) setwd(D:\\R_class) 二、文件路径 读取文件中的数据首先要确定文件路径&#xff0c;如果文件不在工作目录下&#xff0c;则必须使用绝对路径 1、文…