Pandas数据预处理python 数据分析之4——pandas 预处理在线闯关_头歌实践教学平台

Pandas数据预处理python 数据分析之4——pandas 预处理

  • 第1关 数据读取与合并
  • 第2关 数据清洗
  • 第3关 数据转换

第1关 数据读取与合并

任务描述
本关任务:加载 csv 数据集,实现 DataFrame 合并。

编程要求
根据提示,在右侧编辑器补充代码,完成本关任务。
测试说明
平台会对你的代码进行测试,若与预期输出一致,则算通关。
开始你的任务吧,祝你成功!

# -*- coding: utf-8 -*-'''
第1关 数据读取与合并
现有源自世界银行的四个数据集:
1)economy-60-78.csv,
2)economy-79-19.csv,
3)population-60-78.csv,
4)population-79-19.csv,
其中分别存放了不同时间段(1960-1978和1979-2019)的
中国经济相关数据和中国人口及教育相关数据。
'''
#请将上述数据集内容读取至DataFrame结构中,
#年份为列索引,Indicator Name为行索引,
#观察其结构和内容,把它们合并为一个DataFrame,命名为ChinaData。
#输出ChinaData的形状
############begin############import pandas as pd
d1 = pd.read_csv('economy-60-78.csv',index_col = 0)
d2 = pd.read_csv('economy-79-19.csv',index_col = 0)
d3 = pd.read_csv('population-60-78.csv',index_col = 0)
d4 = pd.read_csv('population-79-19.csv',index_col = 0)
#print(d1.shape)
#print(d2.shape)
#print(d3.shape)
#print(d4.shape)d12 = pd.concat([d1,d2],axis = 1,sort=True)
d34 = pd.concat([d3,d4],axis = 1,sort=True)
ChinaData = pd.concat([d34,d12],sort=True)print(ChinaData.shape)#############end#############

第2关 数据清洗

任务描述
本关任务:数据清洗
包括:空白行删除、数据完整性检验、数据填充、插值等内容。

编程要求
根据提示,在右侧编辑器补充代码,完成本关任务。
测试说明
平台会对你的代码进行测试,若与预期输出一致,则算通关。
开始你的任务吧,祝你成功!

# -*- coding: utf-8 -*-
'''
第2关 数据清洗
'''
import pandas as pd
d1 = pd.read_csv('economy-60-78.csv',index_col = 0)
d2 = pd.read_csv('economy-79-19.csv',index_col = 0)
d3 = pd.read_csv('population-60-78.csv',index_col = 0)
d4 = pd.read_csv('population-79-19.csv',index_col = 0)
d12 = pd.concat([d1,d2],axis = 1,sort=True)
d34 = pd.concat([d3,d4],axis = 1,sort=True)
ChinaData = pd.concat([d34,d12],sort=True)
'''
请针对ChinaData完成如下操作。
'''
# 2.1 删除空白行
# 提示:dropna,inplace
############begin############
print('原表形状',ChinaData.shape)
linenum = ChinaData.shape[0]
ChinaData.dropna(how='all',inplace=True)
print('新表形状',ChinaData.shape)
linenum -=ChinaData.shape[0]
print("%d个空白行被删除。"%linenum)
#############end############## 2.2 查找数据最完整(空值最少)的年份并输出
# 提示:notnull(),根据值找索引(上课讲过的方法)
############begin############
#print(ChinaData.notnull().sum().sort_values(ascending=False)[0])
nullsummary = ChinaData.isnull().sum()
y = nullsummary.loc[nullsummary==nullsummary.min()].index[0]
print(y)#############end############## 2.3 前向填充"男性吸烟率(吸烟男性占所有成年人比例)",输出2000年至2019年的数据
# fillna,ffill
############begin############cigarette = ChinaData.loc['男性吸烟率(吸烟男性占所有成年人比例)',:]
print(cigarette.fillna(method = 'ffill').loc['2000':'2019'])#############end############## 2.4 用2015年到2018年4年的gdp数据对2019年GDP数值进行拉格朗日插值预测,输出预测结果
# lagrange,
# 注意:x的取值从0开始,即x = np.array([0,1,2,3]),代表2015至2018 4年,2019年的x取值为4。
############begin############from scipy.interpolate import lagrange
gdp = ChinaData.loc['GDP',:]
lagf = lagrange(range(0,4),gdp.values[-5:-1])
print(lagf(4))
#############end############## 2.5 用线性插值法填充“入学率,高等院校,男生(占总人数的百分比)”1995年到2002年数据,并输出插值后的94年至03年的数据
# interp1d
############begin############from scipy.interpolate import interp1d
student = ChinaData.loc['入学率,高等院校,男生(占总人数的百分比)',:]
linevalue = interp1d([0,9],[student.loc['1994'],student.loc['2003']],kind = 'linear')
student.loc['1995':'2002'] = linevalue(range(1,9))
print(student.loc['1994':'2003'])#############end#############

第3关 数据转换

任务描述
本关任务:数据转换。包括数据标准化和数据离散化。

编程要求
根据提示,在右侧编辑器补充代码,完成本关任务。
测试说明
平台会对你的代码进行测试,若与预期输出一致,则算通关。
开始你的任务吧,祝你成功!

# -*- coding: utf-8 -*-'''
第3关 数据转换
'''
import pandas as pd
d1 = pd.read_csv('economy-60-78.csv',index_col = 0)
d2 = pd.read_csv('economy-79-19.csv',index_col = 0)
d3 = pd.read_csv('population-60-78.csv',index_col = 0)
d4 = pd.read_csv('population-79-19.csv',index_col = 0)
d12 = pd.concat([d1,d2],axis = 1,sort=True)
d34 = pd.concat([d3,d4],axis = 1,sort=True)
ChinaData = pd.concat([d34,d12],sort=True)
'''
请针对ChinaData实现下列操作
'''
# 3.1 对“人口,总数”数据(1960-2018)进行离差标准化,并输出。
# 提示:自定义离差标准化函数,注意统计年份区间
############begin############def MinMaxScale(data):data = (data-data.min())/(data.max()-data.min())return data
population = ChinaData.loc['人口,总数',:][:-1]
npopu = MinMaxScale(population)
print(npopu)#############end############## 3.2 对“GDP 增长率(年百分比)”(1961-2018)数据进行等宽离散化为7类,输出分布情况
# 提示:cut,注意统计年份区间
############begin############gdpRatio = ChinaData.loc['GDP 增长率(年百分比)',:][1:-1]
result = pd.cut(gdpRatio,7)
print(result.value_counts())#############end#############

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

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

相关文章

ZYNQ_project:IP_ram_pll_test

例化MMCM ip核,产生100Mhz,100Mhz并相位偏移180,50Mhz,25Mhz的时钟信号。 例化单口ram,并编写读写控制器,实现32个数据的写入与读出。 模块框图: 代码: module ip_top(input …

flink的键值分区状态自动过期ttl配置

背景 flink的状态清理之前一直都是通过处理函数的ontimer设置定时器的方式清理掉那些无用的状态,但是这种方式容易出错而且代码也不优雅,使用flink提供的状态ttl的方式可以解决这个问题 flink键值分区状态ttl设置 文件系统/基于内存的状态后端的ttl设…

Flutter笔记:关于Flutter中的大文件上传(上)

Flutter笔记 关于Flutter中的大文件上传(上) 大文件上传背景与 Flutter 端实现文件分片传输 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址&#…

matlab模糊控制文件m代码实现和基础理论

1、内容简介 略 15-可以交流、咨询、答疑 通过m代码来实现生成模糊文件fis文件 2、内容说明 模糊文件m代码实现和基础理论 matlab模糊控制文件m代码实现和基础理论 模糊文件、m代码和模糊基础理论 3、仿真分析 略 4、参考论文 略 链接:https://pan.baidu.co…

Sui学术研究奖公布,资助研究者探索人工智能、能源市场和区块链游戏

Sui基金会高兴地宣布首轮Sui学术研究奖(SARAs)的获奖者。SARAs计划提供资助,支持推动Sui区块链技术的研究。学术和研究界对我们的初次征集呈现出大量高质量的提案。 已接受的九个提案涵盖了各种主题,如token经济学、智能合约机制…

从混沌到有序:sortedcontainers库的数据魔法改变你的编程体验

前言 在当今数据爆炸的时代,高效地处理和操作数据成为每位Python开发者的核心任务。在这个背景下,sortedcontainers库以其强大的有序数据结构为程序员提供了处理大规模数据的优越选择。本文将深入研究sortedcontainers库中的主要有序数据结构&#xff0…

while read f

关键字:linux循环读取文件内容放入变量;使用while循环和read读取文件内容,直到文件尾部;while read f 使用while循环一次读取文件的一行,直到文件尾部。格式如下: # f为一个变量,表示读取到一…

docker stop slow 解决

验证 NanoMQ stop slow 的问题 daemon 和非 daemon 两种方式 docker stop 都很慢 疑问是默认情况下,SIGTERM 会被处理。 模拟 docker 内发送 SIGTERM 信号 # The default signal for kill is TERM # pkill will send the specified signal (by defau…

开发知识点-Django

Django 1 了解简介2 Django项目结构3 url 地址 和视图函数4 路由配置5 请求及响应6 GET请求和POST请求查询字符串 7 Django设计模式及模板层8 模板层-变量和标签9 模板层-过滤器和继承继承 重写 10 url反向解析11 静态文件12 Django 应用及分布式路由创建之后 注册 一下 13 模型…

matlab直线一级倒立摆lqr控制

1、内容简介 略 16-可以交流、咨询、答疑 matlab直线一级倒立摆lqr控制 2、内容说明 倒立摆是一个开环不稳定的强非线性系统,其控制策略与杂技运动员顶杆平衡表演的技巧有异曲同工之处,目的在于使得摆杆处于临界稳定状态,是进行控制理论研…

ArrayList 扩容 讲解 小白易懂版本

ArrayList 扩容 讲解 小白易懂版本 注意本文使用的是 java 11 首先我们假设有一个空数组,现在要开始添加第一个元素 public boolean add(E e) {//modCount: 这个就是记录修改的次数,比如我们增加或删除元素会对数组的结构造成修改&#xf…

MySQL的SQL预编译及防SQL注入

文章目录 1 SQL语句的执行处理1.1 即时SQL1.2 预处理SQL1.2.1 预编译SQL的实现步骤1.2.2 预编译SQL的C使用举例1.2.3 MYSQL_BIND()函数中的参数类型: 2 SQL注入2.1 什么是SQL注入2.2 如何防止SQL注入 1 SQL语句的执行处理 SQL的执行可大致分为下面两种模式&#xf…

python双端队列_中间是头两边是尾_两边是头中间是尾

双端队列的顺序表存储结构以及两种特殊的双端队列 双端队列 是一种允许我们同时从前端和后端添加和删除元素的特殊队列,它是队列和栈的结合体。 双端队列(deque)与队列(queue)就差了两个字,队列里元素只能…

使用Redis实现热搜功能

Redis热搜 原理数据类型redis操作简单实现 实操封装方法执行方法最后使用springboot的定时任务对热搜榜单进行维护 原理 使用redis实现热搜的原理就是维护一个zset集合,然后使用score作为当前搜索词的搜索量,score越高的搜索词就说明该搜索词热度越高。…

深入理解IO和NIO的原理和区别

在计算机编程领域,IO(Input/Output)和NIO(Non-blocking Input/Output)代表了两种截然不同的输入输出模型,它们在数据输入和输出方面采用不同的理念和机制。本文将深入剖析IO和NIO的原理,以及它们…

css实战——清除列表中最后一个元素的下边距

需求描述 常见于列表的排版&#xff0c;如文章列表、用户列表、商品列表等。 代码实现 <div class"listBox"><div class"itemBox">文章1</div><div class"itemBox">文章2</div><div class"itemBox"…

SSM框架Demo: 简朴博客系统

文章目录 1. 前端页面效果2. 项目创建3. 前期配置3.1. 创建数据库数据表3.2. 配置文件 4. 创建实体类5. 统一处理5.1. 统一返回格式处理5.2. 统一异常处理 6. 全局变量7. Session工具类8. 登录拦截器9. 密码加盐加密10. 线程池组件11. dao层11.1. UserMapper11.2. ArticleMappe…

聊聊本地缓存神器:Caffeine

目录 Caffeine基本介绍 简单使用 清除策略 GuavaCache和Caffeine差异 Caffeine基本介绍 Caffeine 是基于 JAVA 8 的高性能本地缓存库。并且在 spring5 (springboot 2.x) 后&#xff0c;spring 官方放弃了 Guava&#xff0c;而使用了性能更优秀的 Caffeine 作为默认缓存组…

nodejs express vue uniapp电影购票系统源码

开发技术&#xff1a; node.js&#xff0c;vscode&#xff0c;HBuilder X express vue elementui uniapp 功能介绍&#xff1a; 用户端&#xff1a; 登录注册 首页显示搜索电影&#xff0c;轮播图&#xff0c;电影分类&#xff0c;最近上架电影 点击电影进入电影详情&am…

数据结构线性表——栈

前言&#xff1a;哈喽小伙伴们&#xff0c;今天我们将一起进入数据结构线性表的第四篇章——栈的讲解&#xff0c;栈还是比较简单的哦&#xff0c;跟紧博主的思路&#xff0c;不要掉队哦。 目录 一.什么是栈 二.如何实现栈 三.栈的实现 栈的初始化 四.栈的操作 1.数据入栈…