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

【python】数据可视化,使用pandas.merge()对dataframe和geopandas类型数据进行数据对齐

目录

0.环境

1.适用场景

2.pandas.merge()函数详细介绍

3.名词解释“数据对齐”(来自chatGPT3.5)

4.本文将给出两种数据对齐的例子

1)dataframe类型数据和dataframe类型数据对齐(对齐NAME列);

数据对齐前的两组数据集:

数据对齐后的数据集(通过pandas.merge()函数对齐):

代码

2)dataframe类型数据和geopandas类型数据对齐(对齐STATE_NAME字段);

数据对齐前的两组数据集(两个数据集都有很多行,这里只截取其中一部分):

 数据对齐后得到一组geopandas类型数据:

 代码


0.环境

windows + jupyter notebook + python + pandas

1.适用场景

我是在做地理数据可视化的过程中遇到这个需求,我有一个dataframe类型的数据集(数据集A)和一个geopandas类型的数据集(数据集B),我需要用这两个数据绘制【分区统计图】,题目要求为“使用 PySal 数据,创建美国的分区统计路径,该路径描述了 2009 年美国每个州的人均收入。”但是我在直接使用数据的过程中,发现两个数据集的数据无法对齐(数据对齐概念在下一段详述),数据不对齐,就会导致可视化的结果是错误的,比如两个数据集中都有名为NAME的列,但是两个数据集中对于NAME列的顺序是不同的,数据集A中的NAME列顺序可能为:[name1,name3,name2] ,数据集B中NAME列的顺序可能为:[name3,name1,name2],其他对应行的数据肯定也随之不同,这个时候我就不能直接利用两个数据集来做数据可视化,这样可能会将原本不属于name1的数据,安插到name1上,从而导致最终可视化结果出错。为了解决这个问题,我采用数据对齐的方式(使用merge()方法),将两个数据集对齐为一个数据集(geopandas类型)

2.pandas.merge()函数详细介绍

merge(left, right, how=‘inner’, on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=(’_x’, ‘_y’), copy=True, indicator=False, validate=None)

官方文档介绍merge()的作用:用数据库样式的连接合并DataFrame或者已命名的Series

3.名词解释“数据对齐”(来自chatGPT3.5)

数据对齐是一种重要的数据处理技术,它可以确保数据在相同的索引或列名上对应匹配,从而简化数据处理操作,并提高数据分析的准确性和可靠性。

数据对齐是指在数据处理过程中,将不同数据集或不同索引的数据按照相同的索引进行匹配和对齐的操作。这样做的目的是为了方便数据的比较、合并、计算等操作。

当我们有多个数据集或多个DataFrame对象时,它们可能具有不同的索引或列名。数据对齐的过程可以通过对齐索引或列名来确保数据在相同的位置上对应匹配。这样做有助于消除数据之间的不匹配和缺失值,使得数据处理更加方便和准确。

在数据对齐的过程中,如果两个数据集的索引或列名不完全匹配,那么会自动进行对齐,缺失的值将被填充为缺失值(例如NaN或None)。这样,我们可以确保在进行数据操作时,每个数据点都有相应的值,避免了数据不一致导致的错误或结果偏差。

4.本文将给出两种数据对齐的例子

1)dataframe类型数据和dataframe类型数据对齐(对齐NAME列);

  • 数据对齐前的两组数据集:

  • 数据对齐后的数据集(通过pandas.merge()函数对齐):

 可以看到两个数据集A和B通过NAME字段进行了对齐

  • 代码

import pandas as pd# 创建第一个DataFrame
data1 = {'ID': [1, 2, 3],'NAME': ['Alice', 'Bob', 'Charlie'],'AGE': [25, 30, 35]}
df1 = pd.DataFrame(data1)
print(df1)
print("\n")# 创建第二个DataFrame
data2 = {'ID': [1, 2, 3],'NAME': ['Bob', 'Charlie', 'Alice'],'CITY': ['New York', 'London', 'Paris']}
df2 = pd.DataFrame(data2)
print(df2)
print("\n")# 使用merge方法对齐两个DataFrame的'NAME'列
merged_df = pd.merge(df1, df2, on='NAME')# 打印对齐后的DataFrame
print(merged_df)

2)dataframe类型数据和geopandas类型数据对齐(对齐STATE_NAME字段);

  • 数据对齐前的两组数据集(两个数据集都有很多行,这里只截取其中一部分):

  •  数据对齐后得到一组geopandas类型数据:

可以看到通过STATE_NAME字段,将两个数据集合成了一个geopandas类型的数据集,具体是将两个数据集的所有列根据STATE_NAME字段排序并整合进一个数据集内,还有很多行和列,无法在一个界面显示,这里只截取一部分

  •  代码

注意:代码运行前需要安装对于的模块,如pysal 、geopandas、libpysal等,可以在【Anaconda prompt中用pip install XXX命令下载】

具体下载过程可以参考博客:

下载geopandas包

import pysal as ps
import geopandas as gpd
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline# your code here
from libpysal import examples#2009年的人均收入数据
income_data  = examples.get_path('usjoin.csv')
#用pandas读数据
usincome = pd.read_csv(income_data)#重命名dataframe数据(usincome)的Name列
usincome.rename(columns={'Name':'STATE_NAME'}, inplace=True)
# print(type(usincome))
print("对齐前dataframe类型数据:\n")
print(usincome)#48个州的形状
us_states  = examples.get_path('us48.shp')
us48 = gpd.read_file(us_states )
# print(type(us48))
print("\n对齐前geopandas类型数据:\n")
print(us48)#数据对齐  STATE_NAME
merged_gdf = us48.merge(usincome, on='STATE_NAME')
# print(type(merged_gdf))
print("\n对齐后geopandas类型数据:\n")
print(merged_gdf)

参考:

(35条消息) python pandas.merge()函数 详解_python中merge函数用法_Late whale的博客-CSDN博客pandas数据合并之一文弄懂pd.merge() - 知乎 (zhihu.com)(35条消息) python pandas.merge()函数 详解_python中merge函数用法_Late whale的博客-CSDN博客

--END--

相关文章:

【python】数据可视化,使用pandas.merge()对dataframe和geopandas类型数据进行数据对齐

目录 0.环境 1.适用场景 2.pandas.merge()函数详细介绍 3.名词解释“数据对齐”(来自chatGPT3.5) 4.本文将给出两种数据对齐的例子 1)dataframe类型数据和dataframe类型数据对齐(对齐NAME列); 数据对…...

大模型入门(三)—— 大模型的训练方法

参考hugging face的文档介绍:https://huggingface.co/docs/transformers/perf_train_gpu_many#naive-model-parallelism-vertical-and-pipeline-parallelism,以下介绍聚焦在pytorch的实现上。 随着现在的模型越来越大,训练数据越来越多时&…...

人机交互学习-4 交互设计过程

交互设计过程 交互设计过程基本活动关键特征 设计过程中的问题如何选取用户?如何明确需求?如何提出候选方案?如何在候选方案中选择? 交互设计生命周期模型星型生命周期模型可用性工程生命周期模型 交互设计过程管理界面设计的4个支…...

大话Stable-Diffusion-Webui之kohya-ss主题更改

文章目录 kohya-sskohya-ss主题更改添加背景图片更改组件样式自定义主题规范更改主题的另一种方式kohya-ss kohya-ss是一个专门用于训练Dreambooth、LoRA等小模型的项目,本身没有GUI界面,需要通过python命令去调用使用,这对于不懂python的同学来说门槛稍微有点高,于是有人…...

搜索在计算机中的地位十分重要

无论是在内部系统还是在外部的互联网站上,都少不了检索系统。数据是为了用户而服务。计算机在采集数据,处理数据,存储数据之后,各种客户端的操作pc机或者是移动嵌入式设备都可以很好的获取数据,得到 想要的数据服务。 …...

多模态深度学习:定义、示例、应用

人类使用五种感官来体验和解读周围的世界。我们的五种感官从五个不同的来源和五种不同的方式捕捉信息。模态是指某事发生、经历或捕捉的方式。 人脑由可以同时处理多种模式的神经网络组成。想象一下进行对话——您大脑的神经网络处理多模式输入(音频、视觉、文本、…...

基于ZCU106平台部署Vitis AI 1.2/2.5开发套件【Vivado+Vitis+Petalinux2020/2022】

Vitis AI是 Xilinx 的开发平台,适用于在 Xilinx 硬件平台(包括边缘设备和 Alveo 卡)上进行人工智能算法推理部署。它由优化的IP、工具、库、模型和示例设计组成。Vitis AI以高效易用为设计理念,可在 Xilinx FPGA 和 ACAP 上充分发…...

ChatGPT原理简介

承接上文GPT前2代版本简介 GPT3的基本思想 GPT2没有引起多大轰动,真正改变NLP格局的是第三代版本。 GPT3训练的数据包罗万象,上通天文下知地理,所以它会胡说八道,会说的贼离谱,比如让你穿越到唐代跟李白对诗,不在一…...

从0搭建Hyperledger Fabric2.5环境

Hyperledger Fabric 2.5环境搭建 一.Linux环境准备 # root登录 yum -y install git curl docker docker-compose tree yum -y install autoconf autotools-dev automake m4 perl yum -y install libtool autoreconf -ivf # 安装jq相关包 cd /opt git clone --recursive https…...

Rust每日一练(Leetday0026) 最小覆盖子串、组合、子集

目录 76. 最小覆盖子串 Minimum Window Substring 🌟🌟🌟 77. 组合 Combinations 🌟🌟 78. 子集 Subsets 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Gola…...

c# 从零到精通-ArrayList-Hashtable的操作

c# 从零到精通-ArrayList-Hashtable的操作 1、ArrayList的操作 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace Test11 { class Program { static void Main(string[] args) { ArrayList list …...

pnpm带来了什么

首先 pnpm 和 npm yarn 一样是包管理工具,他解决了npm 和 yarn 存在的一些问题 npm3之前每个依赖都是一层嵌套一层的,每个依赖里都有node_modules 用来存放依赖所需的依赖包导致重复下载的依赖包很多,一层层嵌套,嵌套很深&#x…...

图像分类模型嵌入flask中开发PythonWeb项目

图像分类模型嵌入flask中开发PythonWeb项目 图像分类是一种常见的计算机视觉任务,它的目的是将输入的图像分配到预定义的类别中,如猫、狗、花等。图像分类模型是一种基于深度学习的模型,它可以利用大量的图像数据来学习图像的特征和类别之间…...

GIT安装教程(入门)

目录 前言 Git作者 官网 GIT优点 GIT缺点 为什么要使用 Git 下载以及安装步骤 一、官网下载 二、GIT安装步骤 1、安装get程序 2、许可声明 3、选择安装路径 4、选择git组件 5、创建菜单名称 6、 git文件默认编辑器 7、设置新存储库中初始分支的名称 8、调整Pa…...

全志V3S嵌入式驱动开发(触摸屏驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 所谓的触摸屏,其实就是在普通的lcd屏幕之上,再加一层屏而已。这个屏是透明的,这样客户就可以看到下面lcd屏幕的…...

死信队列详解

什么是死信队列? 在消息队列中,执行异步任务时,通常是将消息生产者发布的消息存储在队列中,由消费者从队列中获取并处理这些消息。但是,在某些情况下,消息可能无法正常地被处理和消耗,例如&…...

我用ChatGPT写2023高考语文作文(五):北京卷I

2023年 北京卷 I 适用地区:北京 “续航”一词,原指连续航行,今天在使用中被赋予了新的含义,如为青春续航、科技为经济发展续航等。 请以“续航”为题目,写一篇议论文。 要求:论点明确,论据充实&…...

《微服务实战》 第二十八章 分布式锁框架-Redisson

前言 Redisson 在基于 NIO 的 Netty 框架上,充分的利⽤了 Redis 键值数据库提供的⼀系列优势,在Java 实⽤⼯具包中常⽤接⼝的基础上,为使⽤者提供了⼀系列具有分布式特性的常⽤⼯具类。使得原本作为协调单机多线程并发程序的⼯具包获得了协调…...

局部搜索,变邻域搜索算法

目录 局部搜索 02 变邻域搜索算法 局部搜索 1.1 局部搜索是什么玩意儿? 官方一点:局部搜索是解决优化问题的一种启发式算法。对于某些计算起来非常复杂的优化问题,比如各种NP-难问题,要找到最优解需要的时间随问题规模呈指数增长,因此诞生了各种启发式算法来退而求其次…...

软件工程实训——第一天

第一天 前后分离 前端:android 后端:springbootmbatis-plus 高心星 软件工程的思维来开发项目 问题定义 可行性研究 需求分析 概要设计 详细设计 编码 测试 维护 需求分析 1.用户的信息管理 2.新增支出 3.新增收入 4.支出统计 5.收入…...

嵌入式C语言中if/else如何优化详解

观点一(灵剑): 前期迭代懒得优化,来一个需求,加一个if,久而久之,就串成了一座金字塔。 当代码已经复杂到难以维护的程度之后,只能狠下心重构优化。那,有什么方案可以优雅…...

【LSTM】读取时间序列数据 | 时间序列数据的小批量划分方法

由于序列数据本质上是连续的,因此我们在处理数据时需要解决这个问题。当序列过长而不能被模型一次性全部处理时,我们希望能拆分这样的序列以便模型方便读取。 Q:怎样随机生成一个具有n个时间步的mini batch的特征和标签? A&…...

K8s in Action 阅读笔记——【12】Securing the Kubernetes API server

K8s in Action 阅读笔记——【12】Securing the Kubernetes API server 12.1 Understanding authentication 在上一章中,我们提到API服务器可以配置一个或多个认证插件(授权插件也是同样的情况)。当API服务器接收到一个请求时,它…...

爆肝整理,3个月从功能进阶自动化测试,一跃成测试卷王...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 首先先了解自动化…...

人生这场概率游戏,怎么玩

只会标准答案,是不可救药的愚蠢 那么为了便于理解,我用一些典型的案例来讲解,什么是概率游戏,以及这个游戏,应该怎么玩。 比如典型的相亲,婚恋。人生大事,用标准答案来说,你的意中人…...

Redis笔记

缓存过期时间很重要!redis是单线程的 对于内存过多的3中方案: 惰性删除: 在定时删除的基础上,对于已经过期了的数据,redis的随机选择算法一直没有选中这个数据,所以导致它就一直没被删除,但是…...

centos 安装supervisor并运行网站

前言 之前一直用宝塔的**进程守护管理器【Supervisor】**来启动一些项目,如ThinkPHP、Hyperf的项目,或laravel的一些命令。如果不用宝塔怎么办呢? 一、简介[supervisor] [Supervisor] 是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支…...

Hadoop面试题十道

问题 1:Hadoop是什么? 答案:Hadoop是一个开源的分布式计算框架,用于处理大规模数据集的存储和处理。它基于Google的MapReduce和Google文件系统(GFS)的思想,旨在解决大数据量的处理和分析问题。…...

使用Docker-Compose对Docker容器集群快速编排

目录 一、Docker-Compose1、Docker-Compose使用场景2、Docker-Compose简介3、Docker-Compose安装部署4、YAML 文件格式及编写注意事项5、Docker Compose配置常用字段6、Docker Compose 常用命令7、Docker Compose 文件结构8、docker Compose撰写nginx 镜像9、docker Compose撰写…...

React-Redux 对Todolist修改

在单独使用redux的时候 需要手动订阅store里面 感觉特别麻烦 不错的是react有一个组件可以帮我们解决这个问题, 那就是react-redux。 react-redux提供了Provider 和 connent给我们使用。 先说一下几个重点知道的知识 Provider 就是用来提供store里面的状态 自动getState()co…...

南昌房地产信息网/seo销售代表招聘

首先说思路,在mybatis中防止sql注入,目前只能在Controller层进行转义,后台sql进行查询,然后在controller层转义回来,返回到前台。 理论上应该可以在dao.xml中进行判断 但是目前还没写出来。Orz 上代码 RequiresPerm…...

深圳市保障性住房官网/企业网站搜索优化网络推广

什么是Use Case 用例描述文档的书写是系统分析人员对用户需求的深刻理解的体现。是后期时序图和实际开发的重要依据。也可以对作为项目估算的依据,以及根据UC复杂度和开发周期来衡量开发人员的工作效率。因此UC的书写规范及其重要,就工作用的一些经验&am…...

上海网站怎么备案表/优书网

曾几何时,云计算在中国市场成为企业竞相追逐的热点。这其中既有财大气粗的互联网企业,例如BAT所属的阿里云、百度云、腾讯云,也有传统ICT企业所属的华为云、浪潮云、联想云等,此外还有专攻云计算的专业厂商,例如小鸟云…...

海南建设局相关网站/百度宣传推广

简介LinuxApacheMySQL/MariaDBPHP(简称LAMP),是一组常用来搭建动态网站或者服务器的开源软件。部署及环境:系统平台:CentOS 7.2Apache版本:2.4.23Mysql 版本:5.7.17PhP版本:7.0.12安装前准备:Ce…...

以后做网站发展前途/宁波seo高级方法

来自:http://www.cnblogs.com/zhwl/archive/2012/06/06/2538494.html 对于iphone开发人员来说,内存管理是极为重要的技巧,哪怕程序的功能再强大,设计再漂亮,如果内存控制不好,也难逃程序莫名退出的噩运&…...

用asp做网站流程/重庆森林台词

今年的面试主要是技术面试 1、项目是怎么做的 常规问题 --略 2、判断项目的可以上线的标准是什么? ①与需求一致,符合客户的要求 ②用例执行完成 ③bug和研发、产品这边确定必须改的改完 ④进行release版本回归无bug 3、给你一个登陆功能&#xff0…...