首页 > 编程语言 >Pandas数据预处理python 数据分析之4——pandas 预处理在线闯关_头歌实践教学平台

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

时间:2023-12-06 10:02:24浏览次数:40  
标签:ChinaData python Pandas ############ pd print ############# csv 预处理



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#############


标签:ChinaData,python,Pandas,############,pd,print,#############,csv,预处理
From: https://blog.51cto.com/xiaokesong/8699771

相关文章

  • Pandas数据预处理Pandas合并数据集在线闯关_头歌实践教学平台
    Pandas数据预处理合并数据集第1关Concat与Append操作第2关合并与连接第3关案例:美国各州的统计数据第1关Concat与Append操作任务描述本关任务:使用read_csv()读取两个csv文件中的数据,将两个数据集合并,将索引设为Ladder列,并将缺失值填充为0。编程要求data.csv和data1.csv是两......
  • Pandas数据分析Pandas进阶在线闯关_头歌实践教学平台
    Pandas数据分析进阶第1关Pandas分组聚合第2关Pandas创建透视表和交叉表第1关Pandas分组聚合任务描述本关任务:使用Pandas加载drinks.csv文件中的数据,根据数据信息求每个大洲红酒消耗量的最大值与最小值的差以及啤酒消耗量的和。编程要求使用Pandas中的read_csv()......
  • Pandas数据分析Pandas初体验在线闯关_头歌实践教学平台
    Pandas数据分析初体验第1关了解数据处理对象--Series第2关了解数据处理对象-DataFrame第3关读取CSV格式数据第4关数据的基本操作——排序第5关数据的基本操作——删除第6关数据的基本操作——算术运算第7关数据的基本操作——去重第8关数据重塑第1关了解数据处理对象......
  • 利用python发送邮件
    主要依赖email和smtplib这两个模块。email模块用于构建邮件本身,包括标题,发送人,收件人,抄送人,附件等等。smtplib模块用于登录指定的账户并进行发送的操作。 参考:腾讯企业邮箱通过Python自动发送邮件_腾讯企业邮箱发送邮件附件python-CSDN博客python发邮件详解,smtplib和email......
  • Cplex学术版申请及Python API环境配置
    当使用Cplex时弹出下面错误:CPLEXError1016:CommunityEdition.Problemsizelimitsexceeded.Purchaseathttp://ibm.biz/error1016.不出意外,是因为使用了社区版的Cplex无法求解大规模问题。这时候就需要申请学术版Cplex了。在我寻找Cplex学术版下载教程中,找遍全网都没......
  • python函数随笔1
    1.type(a)返回变量a的数据类型;2.列表b=[]print(b)b.append(4)print(b)b.append(5)print(b)b.append(True)print(b)b.append(False)print(b)b.append('False')print(b)[][4][4,5][4,5,True][4,5,True,False][4,5,True,False,'Fals......
  • Python的模块导入
    一、模块的简介1、什么是模块Python模块是一个Python文件,定义了各种功能接口。2、为啥使用模块把复杂的功能封装为模块(又称为库),将功能实现的细节隐藏起来,使用该模块(库)的程序员不需要了解实现的细节。通过调用模块封装好的功能,可以用仅仅几行Python代码实现某项复杂的功......
  • Python的常用内置函数
    1、sorted() 排序sorted(iterable,key=None,reverse=False)其中,参数的含义如下:iterable:表示要排序的可迭代对象,如列表、元组、字符串等。key:可选参数,用于指定排序的依据。它是一个函数或lambda表达式,根据指定的键从可迭代对象中的元素中提取值来进行排序。默认为 None,......
  • 【Python】【OpenCV】绘制外接矩形和外接圆
     外接矩形、外接圆:1importcv22importnumpy34img=cv2.imread('../img/img.png',-1)5ret,thresh=cv2.threshold(img,127,255,cv2.THRESH_BINARY)6contours,hier=cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)7......
  • Python的函数传参
    一、参数的两大分类1、形式参数在'函数定义阶段'括号内依次写入的变量名就叫形式参数,简称"形参"defindex(a,b,c,d,e):pass #a,b就称之为是函数的形参补充:type在形参中的用法defmy_function(param:int):print(param*2)#参数类型限制为整数类型#进......