当前位置: 首页 > news >正文

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.lryc.cn/news/228766.html

相关文章:

  • [html] 动态炫彩渐变背景
  • AI 绘画 | Stable Diffusion 高清修复、细节优化
  • 想要检测TikTok网络是否安全?这五个网站请收好
  • 【docker:容器提交成镜像】
  • UE5中一机一码功能
  • gpt支持json格式的数据返回(response_format: ‘json_object‘)
  • MySQL(13):约束
  • 可以为一个servlet定义多个servlet-mapping、或url-pattern
  • .net在使用存储过程中IN参数的拼接方案,使用Join()方法
  • 基于RK3399的室内健身魔镜方案
  • leetCode 25.K 个一组翻转链表
  • ElasticSearch中常见的分词器介绍
  • 前端案例-css实现ul中对li进行换行
  • 【Unity】 场景优化策略
  • JavaWeb Day09 Mybatis-基础操作01-增删改查
  • 2.前端调试(控制台使用)
  • Jenkins简介及Docker Compose部署
  • sqli-labs关卡14(基于post提交的双引号闭合的报错注入)通关思路
  • 【广州华锐互动】楼宇智能化VR虚拟教学系统
  • 5. HTML常用标签
  • 傅里叶分析(2)
  • Mysql8数据库如何给用户授权
  • reticulate | R-python调用 | 安装及配置 | conda文件配置
  • VueRequest——管理请求状态库
  • GPT-4 Turbo 发布 | 大模型训练的新时代:超算互联网的调度与调优
  • Django路由层
  • 关于session的不断变化问题
  • eNSP启动路由器一直出#号、以为是安装配置winpcap的问题。。。。(以为是win10安装winpcap失败的问题。。。)
  • 时间序列预测:深度学习、机器学习、融合模型、创新模型实战案例(附代码+数据集+原理介绍)
  • docker安装RocketMQ