Pandas数据预处理Pandas合并数据集在线闯关_头歌实践教学平台

news2024/11/27 11:13:49

这里写目录标题

  • 第1关 Concat与Append操作
  • 第2关 合并与连接
  • 第3关 案例:美国各州的统计数据

第1关 Concat与Append操作

任务描述
本关任务:使用read_csv()读取两个csv文件中的数据,将两个数据集合并,将索引设为Ladder列,并将缺失值填充为0。

编程要求
data.csv和data1.csv是两份与各国幸福指数排名相关的数据,为了便于查看排名详情,所以需要将两份数据横向合并。数据列名含义如下:
在这里插入图片描述

  • 读取step1/data.csv和step1/data1.csv两份数据;
  • 首先将两个数据横向合并;
  • 将索引设为排名(Ladder)列;
  • 填充空值为0;
  • 具体要求请参见后续测试样例。
  • 请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
    测试说明
    平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
    测试输入:
    无测试输入
    预期输出:
    在这里插入图片描述
import pandas as pd

def task1():
    #********** Begin **********#
    data=pd.read_csv('step1/data.csv')    
    data1=pd.read_csv('step1/data1.csv')  
    result=pd.concat([data,data1],axis=1) 
    result=result.T.drop_duplicates().T   
    result.index.name = 'Ladder'          
    result=result.fillna(0)

    #********** End **********#
    return result

第2关 合并与连接

任务描述
本关任务:使用pandas中的merge()函数按照编程要求合并三份数据。

编程要求
在实际应用中,经常会遇到数据需要连接但是数据源不同的情况,如以下两个数据:

  • mysql中查询的数据;
    在这里插入图片描述
  • mongodb中查询的数据;
    [{'page_click_count': 20, 'user_id': 1},
{'page_click_count': 38, 'user_id': 2},
{'page_click_count': 10, 'user_id': 3}]
  • o\fracle中查询的数据;
    在这里插入图片描述
    我们需要分析不同城市的人对某个网页的点击次数,如果通过普通程序编写逻辑来实现肯定是可以做到的,但是当要连接的表超过十个,甚至百个时,这个方法就不好使了。这时使用pd.merge()来连接绝对是明智的选择。所以我们就来实践一下吧。
    在这里插入图片描述
  • 将mysql、mongodb和o\fracle中的数据转换成DataFrame;
    mysql:
    在这里插入图片描述
    mongodb:
    在这里插入图片描述
    o\fracle:
    在这里插入图片描述
  • 然后通过合并、连接、排序等操作,得到下图所示目标数组;
    在这里插入图片描述
  • 具体要求请参见后续测试样例。
    提示:drop_duplicates()函数可以根据某一列来删除重复值。
    请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
    测试说明
    平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
    测试输入:
    无测试输入
    预期输出:
    在这里插入图片描述
    开始你的任务吧,祝你成功!
import pandas as pd


def task2(dataset1,dataset2,dataset3):

    # ********** Begin **********#
    d1,d2,d3=pd.DataFrame(dataset1),pd.DataFrame(dataset2),pd.DataFrame(dataset3)
    result=pd.merge(d3,pd.merge(d1,d2,on='user_id',how='outer'),    left_on='id',right_on='user_id',how='outer')
    result['user_id']=result['user_id'].fillna(result['id'])
    result['page_click_count_y']=result['page_click_count_y'].fillna(result['page_click_count_x'])
    result['city_x']=result['city_x'].fillna(result['city_y'])
    result=result.drop(['id','page_click_count_x','city_y'],axis=1)
    result.rename(columns={'city_x':'city','page_click_count_y':'page_click_count'},inplace=True)
    result=result.sort_values(by="user_id")
    result['user_id']= result['user_id'].values.astype(int)
    
    # ********** End **********#
    return result

第3关 案例:美国各州的统计数据

任务描述
本关为练习关卡,请按照编程要求完成任务,获取美国各州2010年的人口密度排名。

编程要求

  • 使用read_csv()函数读取step3文件夹中的state-population.csv(pop)、state-areas.csv(areas)、state-abbrevs.csv(abbrevs)文件;
    在这里插入图片描述
  • 合并pop和abbrevs。我们需要将pop的state/region列与abbrevs的abbreviation列进行合并,还需要通过how='outer’确保数据没有丢失,得到合并后的结果,发现有一个重复列需要删除,所以,删除abbreviation列;
    在这里插入图片描述
  • 来全面检查一下数据是否有缺失,对每个字段逐行检查是否有缺失值,通过结果可知只有population和state列有缺失值;
    在这里插入图片描述
  • 查看population这一列为缺失值的特征。通过结果可以得到好像所有的人口缺失值都出现在2000年之前的波多黎各,此前并没有统计过波多黎各的人口;
    在这里插入图片描述
  • 从上面的结果可以发现state这一列也有缺失值,通过下列代码可以查看是哪些州有缺失值;
    在这里插入图片描述
  • 我们可以快速解决这个问题:人口数据中包含波多黎各(PR)和全国总数(USA),但这两项没有出现在州名称缩写表中。我们可以用以下代码来填充对应的全称;
    在这里插入图片描述
  • 然后我们用类似的规则将面积数据和处理完后的merged合并起来。数据合并的键为state,连接方式为左连接;
    在这里插入图片描述
  • 检查缺失值,从结果中可以发现,area列中还有缺失值;
  • 查看是哪个地区面积缺失。结果如下:
    在这里插入图片描述
  • 从上面的结果可以得出缺少的是全美国的面积数据,但是我们的目标数据并不需要全美国的面积数据,所以我们需要删掉这些缺失值;
  • 取year为2010年的数据,并将索引设为state列;
  • 计算人口密度,将2010年的人口population除以面积area (sq. mi);
  • 由于人口密度中分为成年人的人口密度和未成年人的人口密度,所以我们需要对两个值进行求合得到最终的人口密度;
  • 对值进行排序,取人口密度结果的前5名与倒数5名;
  • 具体要求请参见后续测试样例。
    请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
    测试说明
    平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
    测试输入:
    无测试输入
    预期输出:
    在这里插入图片描述
    开始你的任务吧,祝你成功!
import pandas as pd
import numpy as np

def task3():
    #********** Begin **********#
    #读取三个csv文件
    pop = pd.read_csv('./step3/state-population.csv')
    areas = pd.read_csv('./step3/state-areas.csv')
    abbrevs = pd.read_csv('./step3/state-abbrevs.csv')
    # 合并pop和abbrevs并删除重复列
    merged = pd.merge(pop, abbrevs, how='outer',
    left_on='state/region', right_on='abbreviation')
    merged = merged.drop('abbreviation', 1)
    # 填充对应的全称
    merged.loc[merged['state/region'] == 'PR', 'state'] = 'Puerto Rico'
    merged.loc[merged['state/region'] == 'USA', 'state'] = 'United States'
    # 合并面积数据
    final = pd.merge(merged, areas, on='state', how='left')
    # 删掉这些缺失值
    final.dropna(inplace=True)
    # 取year为2010年的两种人口的数据
    data2010_1= final.query("year == 2010 & ages == 'total'")
    data2010_2=final.query("year == 2010 & ages == 'under18'")
    # 二者人口相加
    p=np.array(data2010_1.loc[:,'population'])+np.array(data2010_2.loc[:,'population'])
    data2010=data2010_1.copy()
    data2010.loc[:,'population']=p
    #设置州为索引
    data2010.set_index('state', inplace=True)
    #计算人口密度
    density = data2010['population'] / data2010['area (sq. mi)']
    # 对值进行排序
    density.sort_values(ascending=False, inplace=True)
    # 输出人口密度前5名和倒数5名
    print('前5名:')
    print(density[:5])
    print('后5名:')
    print(density[-5:])
    #********** End **********#

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

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

相关文章

92. 递归实现指数型枚举

题目 思路 因为有n个数&#xff0c;每个数选或不选都是一种方案&#xff0c;而且要递增输出&#xff0c;那么就标记每个数是否备选&#xff0c;然后判断完n个数以后&#xff0c;就可以输出了 代码 #include<bits/stdc.h> using namespace std; int n; bool f[100] {0…

WEB渲染模式——CSR SSR SSG ISR DPR区别

页面渲染 浏览器渲染页面&#xff0c;根据HTML文档类型声明&#xff08;DOCTYPE&#xff09;解析HTML和CSS&#xff0c;渲染步骤&#xff1a;解析、样式计算、元素布局、绘制、重绘重排。HTML、CSS、JavaScript是网页的三大核心技术。 HTML (Hyper Text Markup Language) 超文…

【沐风老师】3dMax快速平铺纹理插件QuickTiles教程

QuickTiles是3ds max的一个插件&#xff0c;允许您将常规瓷砖纹理转换为交互式纹理&#xff0c;就在mat.editor中。 换言之&#xff0c;您可以根据需要对任何纹理进行修改和重新创建&#xff1a;更改布局、瓷砖大小、格式、颜色、接缝、体积、随机化形状或纹理等等。 这种方法大…

eNsp下如何使用wireshark抓包

文章目录 拓扑图抓包操作 拓扑图 抓包操作 可以通过下图上的指示 来设置 Time列的显示样式。 这里有个缺点就是就是抓取ensp上的虚拟设备上的数据包时的&#xff0c;年月日时间显示的不对。暂时无解决办法。 一般选择 日期和时间&#xff08;日期和时间与当前标准时间对应上时…

集简云平台助力无代码开发,实现平安银行与电商平台、CRM系统的快速连接

无代码开发与平安银行 平安银行是中国内地首家公开上市的全国性股份制银行&#xff0c;经过多年发展&#xff0c;已经在科技引领、综合金融、零售转型等领域形成独特竞争力和鲜明经营特色。近年来&#xff0c;平安银行更是积极拥抱科技&#xff0c;为此&#xff0c;选择了与集…

智慧工地源码 手册文档 app 数据大屏、硬件对接、萤石云

智慧工地解决方案依托计算机技术、物联网、云计算、大数据、人工智能、VR、AR等技术相结合&#xff0c;为工程项目管理提供先进技术手段&#xff0c;构建工地现场智能监控和控制体系&#xff0c;弥补传统方法在监管中的缺陷&#xff0c;最终实现项目对人、机、料、法、环的全方…

CROS错误 403 preflight 预检

预检 403 响应 Response for preflight 403 forbidden 如上图&#xff0c;配置了请求接口一直报错&#xff0c;前端看了没有什么问题&#xff0c;不知道哪里报错了&#xff0c;那么可能是后端没有设置跨域。&#xff08;或者是设置了&#xff0c;但是可能需要换一种方式&#…

C语言每日一题(26)

力扣网 203. 移除链表元素 题目描述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 思路分析 针对如图的普通情况&#xff0c;不能简单的遍历到对应位置然后进行释放&#xff0c;一方…

基于springboot实现致远汽车租赁平台管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现致远汽车租赁平台管理系统演示 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统…

bamboo is currently exporting

bamboo每天到11点会自动挂起执行export任务 构建任务会暂停影响研发发布版本 原因是bamboo设置了Scheduled backups 把时间改成凌晨的1点钟

SpringBoot不同环境加载不同配置文件(dev,sit,uat)

目录 一、springboot的profile配置profile多配置文件 二、maven的profiles策略 我们在使用spring的时候&#xff0c;一般都会有不同的环境需要部署&#xff1a;开发环境、测试环境和验收环境&#xff0c;而不同的环境则会有不同的配置&#xff0c;比如数据库ip。解决这个问题&a…

pyqt5的组合式部件制作(二)

接着做 3、为指示器设计合适的模型&#xff1a; 新建MyLamp.py&#xff0c;代码如下&#xff1a; from PyQt5.QtWidgets import QLabelclass MyLamp(QLabel):def __init__(self, parentNone):super().__init__(parent)self.rad Noneself.blink Falseself.normal_style No…

Vue2基础-Vue对象介绍

文章目录 一、概念特点举例 二、模板语法插值语法指令语法v-bind数据绑定 三、组件el和data的两种写法 四、MVVM模型五、数据代理六、事件处理基本使用事件修饰符键盘按键 七、计算属性八、监听属性普通监视深度监视监视简写 九、监听与计算总结 一、概念 一套用于构建用户界面…

iview实现table里面每行数据的跳转

我的需求是跳转到第三方网站&#xff0c;看官方是写了如何跳转站内路由&#xff0c;不符合我的要求&#xff0c;在csdn发现了一篇文章&#xff0c;我贴一下代码 <template><Table border :columns"ReportColumns" :data"ReportData"><templ…

利用Ansible实现批量Linux服务器安全配置

1.摘要 在上一篇<<初步利用Ansible实现批量服务器自动化管理>>文章中, 我初步实现了通过编写清单和剧本来实现多台服务器的自动化管理,在本章节中, 我将利用Ansible的剧本来实现更实用、更复杂一点的功能, 主要功能包括三个:1.同时在三台服务器中增加IP访问控制,只…

黑洞路由的几种应用场景

第一种在内网中产生环路&#xff1a; 这种核心交换机上肯定写一条默认路由 0.0.0.0 0 10.0.0.1 出口路由要写一条192.168.0.0 16 10.0.0.2 如果出口路由访问一条不存在的内网网段&#xff0c;又或者访问的那台终端停机了&#xff0c;那就会产生三层环路&#xff0c;数据包在…

Linux常用命令——cat命令

在线Linux命令查询工具 cat 连接文件并打印到标准输出设备上 补充说明 cat命令连接文件并打印到标准输出设备上&#xff0c;cat经常用来显示文件的内容&#xff0c;类似于下的type命令。 注意&#xff1a;当文件较大时&#xff0c;文本在屏幕上迅速闪过&#xff08;滚屏&am…

12 tcp协议详解

1、tcp的本性 tcp是一个悲观者&#xff0c;生下来就不信任网络&#xff0c;任务会发生丢包等&#xff0c;所以要从算法层面来保证可靠性。 2、TCP 包头格式 tcp的包头格式比UDP要复杂的多。 1.源端口号和目标端口号是不可少的&#xff0c;这一点和 UDP 是一样的。如果没有…

ICCV 2023|PViC:构建交互谓词视觉上下文,高效提升HOI Transformer检测性能

文章链接&#xff1a;https://arxiv.org/abs/2308.06202 代码仓库&#xff1a;https://github.com/fredzzhang/pvic 在今年的计算机视觉顶会上&#xff0c;基于视觉Transformer&#xff08;ViT&#xff09;的工作仍然占有非常重要的地位。目前最受研究者青睐的&#xff0c;莫过…

JVM Native内存泄露的排查分析(64M 问题)

我们有一个线上的项目&#xff0c;刚启动完就占用了使用 top 命令查看 RES 占用了超过 1.5G&#xff0c;这明显不合理&#xff0c;于是进行了一些分析找到了根本的原因&#xff0c;下面是完整的分析过程&#xff0c;希望对你有所帮助。 会涉及到下面这些内容 Linux 经典的 64M…