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思路: 题目大意:给出一个数组,每次选择数组中的一个数(要求不能是第一个数与最后一个…

若依下整合多个Redis

提前总结,因此项目已多处使用Redis1 故此我创建的Redis工厂只添加了Redis2并不影响Redis1。但如若还有Redis3、4、5可按照下述方法继续往Redis工厂里添加 下述代码添加到 RedisConfig import org.springframework.beans.factory.annotation.Autowired; import org…

大数据几种任务调度工具

文章目录 一、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 一键部署…

Fast DDS环境搭建

目录 Docker环境Fast DDS构建运行运行原有demo编译运行 本文主要记录Fast DDS docker环境搭建和examples代码运行 Docker环境 Fast DDS的docker环境可以直接在官网下载,如果自己要重新做一个,首先需要从Docker Hub上下载系统的docker镜像,由…

【LAMMPS学习】八、基础知识(3.1)LAMMPS 的输出

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

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…

Android gdb调试

Android gdb调试 前置条件&#xff1a; 1.Linux环境&#xff0c;比如Ubutun 2.python工具&#xff1a;建议2,7&#xff0c; 安装命令 sudo apt-get install libpython2.7 3.Android完整codebase 4.开发板 操作步骤&#xff1a; adb root adb remount adb shell #4027为进程id g…

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

相关系列文章 电商技术揭秘一&#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;只依赖主业工资的日子确实艰辛…

【LeetCode热题100】【回溯】分割回文串

题目链接&#xff1a;131. 分割回文串 - 力扣&#xff08;LeetCode&#xff09; 要找出所有分割这个字符串的方案使得每个子串都是回文串&#xff0c;写一个判断回文串的函数&#xff0c;深度遍历回溯去找出所有分割方案&#xff0c;判断分割的子串是否是回文串 class Soluti…

c++编译成汇编以及对汇编学习笔记

1. 引言 为了深入理解c&#xff0c;决定学习一些简单的汇编语言。使用ubuntu系统下g很容易将一个c的文件编译成汇编语言。本文使用此方法&#xff0c;对一个简单的c文件编译成汇编语言进行理解。 2.示例 文件名&#xff1a;reorder_demo.cpp #include<stdio.h>typede…

Linux Ubuntu 网络异常

1.开发背景 ubuntu 虚拟机下开发程序时&#xff0c;出现网络 IP 地址找不到问题 2.开发需求 在 ubuntu 网络找不到的情况下重启网络 3.开发环境 ubuntu20.04 4.实现步骤 4.1 挂起虚拟机恢复后异常 解决方法&#xff1a;重启网络管理器 sudo /etc/init.d/network-manager …

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

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

在Ubuntu 14.04上配置Redis集群的方法

简介 Redis 是一个开源的键值对数据存储&#xff0c;采用内存存储模型&#xff0c;并可选择磁盘写入以实现持久化。它具有事务、发布/订阅和自动故障转移等功能。推荐在生产环境中使用 Linux 来部署 Redis&#xff0c;但开发人员也提到 OS X 作为他们开发和测试的平台。Redis …

如何配置和使用网关(Gateway)

简介 在现代的微服务架构中,网关(Gateway)扮演着非常重要的角色。本文将介绍网关的基本概念以及如何配置和使用它。我们将以一个实际的示例来说明如何设置和使用网关。 什么是网关? 简要介绍网关在微服务架构中的作用,以及为什么我们需要它。选择网关 介绍当前流行的网关…

Spring Boot 学习(5)——组件注册

也是学得头晕眼花&#xff0c;终于知道学有多么难了&#xff0c;更知道教有多么难了…… 各位大神们出的教程终归和正规出版社还是差距的&#xff0c;我觉得是没有“审定”&#xff0c;这对于大多数做教程的人来说这应该通病&#xff1a;自己做&#xff08;讲&#xff09;的东西…

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

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