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

Pandas合并数据集

第1关:Concat与Append操作

import pandas as pd"""
data.csv和data1.csv是两份与各国幸福指数排名相关的数据,为了便于查看排名详情,所以需要将两份数据横向合并。数据列名含义如下:列名    说明
Country (region)    国家
Ladder    排名
SD of Ladder    排名的偏差
Positive affect    积极影响
Negative affect    消极影响
Social support    社会福利
Freedom    自由度
Corruption    腐败程度
Generosity    慷慨程度
Log of GDP per capita    人均GDP的对数
Healthy life expectancy    健康程度读取step1/data.csv和step1/data1.csv两份数据;
首先将两个数据横向合并;
将索引设为排名(Ladder)列;
填充空值为0;
具体要求请参见后续测试样例。
"""def task1():# ********** Begin **********## 读取数据d1 = pd.read_csv('step1/data.csv', header=0)d2 = pd.read_csv('step1/data1.csv', header=0)# 横向合并,将索引设为排名(Ladder),填充空值为0d3 = pd.concat([d1, d2], axis=1)result = d3.set_index('Ladder').fillna(0)# ********** End **********#return result

第2关:合并与连接

import pandas as pd
def task2(dataset1,dataset2,dataset3):# ********** Begin **********#data = pd.DataFrame(dataset1)data1 = pd.DataFrame(dataset2)data2 = pd.DataFrame(dataset3)data2.rename(columns={"id": "user_id"}, inplace=True)data3 = pd.merge(data, data1, on="user_id", how="left")data4 = pd.concat([data2, data3], ignore_index=True)result = data4.sort_values("user_id").drop_duplicates("user_id")# ********** End **********#return result

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

import pandas as pd
import numpy as npdef 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')# print(pop)# print(areas)# print(abbrevs)# 合并pop和abbrevs并删除重复列# pop的state/region列与abbrevs的abbreviation列进行合并,# 还需要通过how='outer'确保数据没有丢失,# 得到合并后的结果,发现有一个重复列需要删除,所以,删除abbreviation列;pa = pd.merge(pop, abbrevs, left_on=['state/region'], right_on=['abbreviation'], how='outer')pa = pa.drop('abbreviation', axis=1)"""# 来全面检查一下数据是否有缺失,对每个字段逐行检查是否有缺失值,通过结果可知只有population和state列有缺失值;for i in pa:print(i, pa[i].isnull().any())# 输出发现state/region = PR的对应的population和state都是空值print(pa[pa['population'].isnull()])# US对应的state也是空值print(pa[pa['state'].isnull()])"""# 填充对应的全称pa.loc[pa['state/region'] == 'PR', 'state'] = 'Puerto Rico'pa.loc[pa['state/region'] == 'USA', 'state'] = 'United States'# 合并面积数据,合并pa和areas,key=statepa = pd.merge(pa, areas, on='state', how='left')# 输出发现还有缺失值,检查一下# 可以得出缺少的是全美国的面积数据# print(pa[pa['area (sq. mi)'].isnull()]['state'].unique())# 我们不需要这个数据,删掉缺失值pa = pa.dropna()# 取year = 2010的数据,并将索引设置为state列data2010 = pa[pa['year'] == 2010]data2010.set_index('state', inplace=True)  # inplace = True 会替换掉之前的state列,只保留索引列# 计算人口密度,population / 面积areadensity = data2010['population'] / data2010['area (sq. mi)']# print(density)# print(data2010)# 一个国家的人口密度分为成年和未成年,我们将其合并# 数据中呈现的就是两个相同的state的信息,我们按照state分组后合并sum_density = density.groupby('state').sum()# print(sum_density)# 对上面的值进行排序# ascending默认=True,即升序排序sort_sum_density = sum_density.sort_values(ascending=False)# print(sort_sum_density)print('前5名:\n{}'.format(sort_sum_density.head(5)))print('后5名:\n{}'.format(sort_sum_density.tail(5)))

相关文章:

  • 线程安全(买票案例):加锁方式(synchronized、Lock锁)【同步代码块、同步方法】--学习JavaEE的day31上
  • ROS2高效学习第十章 -- ros2 高级组件之 component 合并进程启动 其一
  • 图像分类实战:深度学习在CIFAR-10数据集上的应用
  • Java 中文官方教程 2022 版翻译完成
  • LQR的横向控制与算法仿真实现
  • BaseDao封装增删改查
  • mybatisplus如何拼接动态sql
  • 13 React useEffect 详解
  • uniapp先显示提示消息再返回上一页
  • 数据结构刷题篇 之 【力扣二叉树基础OJ】详细讲解(含每道题链接及递归图解)
  • Python 进阶教程
  • 算法部署总结
  • math模块篇(七)
  • 【笔试】美团2023年秋招第1场笔试(后端数开软件方向)
  • Java基础语法(二)
  • [ JavaScript ] 数据结构与算法 —— 链表
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【前端学习】-粗谈选择器
  • CSS居中完全指南——构建CSS居中决策树
  • FastReport在线报表设计器工作原理
  • Java 多线程编程之:notify 和 wait 用法
  • JAVA 学习IO流
  • LeetCode29.两数相除 JavaScript
  • linux学习笔记
  • Next.js之基础概念(二)
  • Octave 入门
  • Redash本地开发环境搭建
  • Redis 懒删除(lazy free)简史
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • ucore操作系统实验笔记 - 重新理解中断
  • 阿里云前端周刊 - 第 26 期
  • 爱情 北京女病人
  • 机器学习中为什么要做归一化normalization
  • 区块链分支循环
  • 算法-插入排序
  • python最赚钱的4个方向,你最心动的是哪个?
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • #QT(串口助手-界面)
  • #vue3 实现前端下载excel文件模板功能
  • (1)常见O(n^2)排序算法解析
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (理论篇)httpmoudle和httphandler一览
  • (三)c52学习之旅-点亮LED灯
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (四)Android布局类型(线性布局LinearLayout)
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • .bashrc在哪里,alias妙用
  • .Net 4.0并行库实用性演练
  • .NET Core 成都线下面基会拉开序幕
  • .net 设置默认首页
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET正则基础之——正则委托
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题