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

news2024/12/21 14:05:03

目录

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

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

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

相关文章

[游戏开发]Unity颜色矫正无障碍方案

[目录] 0. 前言1. 颜色矫正2. 线性变换Shader2. 颜色纠正参数3. 摄像机后处理4. 效果5. 结束咯 0. 前言 之前有在关注色盲视觉纠正问题,最近在调整游戏的时候就打算把这个用上。 色弱色盲,这其实算是一种误称吧,只是人类中的少数派&#xf…

保护您的数据与ManageEngine Log360

在当今数字时代,网络安全成为了企业和组织不可忽视的重要议题。随着信息技术的发展和互联网的普及,企业面临着越来越多的网络威胁和数据泄露的风险。为了保护重要的数据资产和防止潜在的攻击,日志管理和事件关联成为了至关重要的一环。 Mana…

IIS安装ARR(Application Request Router)负载均衡扩展

IIS7.5安装ARR(Application Request Router)负载均衡扩展 本文主要记录我在IIS中安装ARR的全流程,本文参考了网上一些教程,但可能时间关系,与一些早期文章所述有所出入。 花了我半天的时间才最终安装成功,因此这里做一个记录。本…

立体解析Fiddler Filters:让你快速捕获和过滤网络请求

如果要对当前Fiddler的抓包进行过滤(如过滤掉与测试项目无关的抓包请求),那功能强大的 Filters 过滤器能帮到你。 如果你想学习Fiddler抓包工具,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的Fiddler抓包…

动态规划算法(多状态dp1)

动态规划算法专辑之多状态dp问题(1) 一、什么是多状态 多状态dp问题,指一个规模问题下存在多种状态,我们需要联合关注多种状态间的相互转移,才可以求解目的问题。 多状态问题可以理解为有限状态机,在有限…

节省时间、提升效率——Jetpack关爱你的摸鱼时间

JetPack Jetpack 是一个由 Google 提供的 Android 应用开发库集合。它旨在简化 Android 应用程序开发过程,提供一系列的库和工具,帮助开发者快速构建高质量、健壮、可扩展的 Android 应用。 Jetpack 包含多个组件,每个组件都专注于不同的功…

Nginx 的reload,升级以及关闭流程

一、reload流程 1 向master进程发送HUP信号(reload命令) 2 master进程校验配置语法是否正确; 3 master打开可能引入的新的监听端口; 4 master用新的配置文件启动新的worker子进程; 5 启动新的worker子进程之后&#x…

小马赠书【第8期】清华社 618 IT BOOK 多得活动(送书5本)

本期 敬 之 共精心挑选了 15 本 IT 相关书籍,包含 前端、后端、数据分析、人工智能、python 等各个领域。关于如何参与等具体活动信息请看活动详情页,以下是 15 本 IT 书籍介绍: 活动详情页:小马赠书【第8期】 1. 《Linux设备驱动…

怎么入手性能测试,重点以及各项流程

之前在性能测试学习路线里,提到过《软件性能测试、分析与调优实践之路》这本书。 昨天看到之前自己记的读书笔记,整理一下发出来,希望对读者有所帮助。 网上关于性能测试的文章大多数时间比较久远,或者知识点比较散,…

南大一作!科学家发现全新量子态 | Nature速递

光子盒研究院 马萨诸塞大学助理教授Tigran Sedrakyan在内的一个物理学家团队最近在《自然》杂志上宣布,他们已经发现了一种新的物质阶段——“手性玻色液态(chiral Bose-liquid state)”,这一突破为理解物理世界本质的古老努力开辟了一条全新道路。 团队…

【目标跟踪】MOT数据集GroundTruth可视化

MOT数据集格式简介 MOT15数据集下载&#xff1a;https://pan.baidu.com/s/1foGrBXvsanW8BI4eybqfWg?pwd8888 以下为一行gt示例&#xff1a; 1,1,1367,393,73,225,1,-1,-1,-1 各列数据对应含义如下 <frame>,<id>,<bb_left>,<bb_top>,<bb_width&g…

autocut

在讲 OpenAI Whisper 前先做了一个剪视频小工具【论文精读44】_哔哩哔哩_bilibili更多论文&#xff1a;https://github.com/mli/paper-reading, 视频播放量 58633、弹幕量 233、点赞数 2732、投硬币枚数 1630、收藏人数 1465、转发人数 604, 视频作者 跟李沐学AI, 作者简介 &am…

什么是python,一篇带你详细了解Python

Python是一种跨平台的计算机程序设计语言&#xff0c;是ABC语言的替代品&#xff0c;属于面向对象的动态类型语言&#xff0c;最初被设计用于编写自动化脚本&#xff0c;随着版本的不断更新和语言新功能的添加&#xff0c;越来越多被用于独立的、大型项目的开发。 python前景…

挖掘用户真实需求 避坑5大技巧

1、用户总是“说一套 做一套” 在进行需求市场调研时&#xff0c;我们问1000个用户&#xff0c;是否想要黄金&#xff0c;几乎所有的用户都是肯定的回答。如果我们以此认定&#xff0c;黄金是用户的真实需求会过于草率。 我们需继续追问用户&#xff1a;买黄金做什么&#xff1…

【微信小程序开发】第 7 课 - 小程序的组件

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、小程序中组件的分类 3、常用的视图容器类组件 3.1、view 组件 3.2、scroll - view 组件 3.3、swiper 和 swiper…

【youcans动手学模型】Xception 模型-CIFAR10图像分类

欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans 【youcans动手学模型】Xception 模型-CIFAR10图像分类 1. Xception 神经网络模型1.1 模型简介1.2 论文介绍1.3 分析与讨论 2. 在 PyTorch 中定义 Xception 模型类2.1 深度可分离卷积2.2 带残差连接的…

【九章斩题录】从尾到头打印链表(JZ6)

精品题解 &#x1f525; 《九章斩题录》 &#x1f448; 猛戳订阅 目录 JZ6 - 从尾到头打印链表 「 法一 」链表元素存入数组后再反转 「 法二 」递归大法 「 法三 」栈 JZ6 - 从尾到头打印链表 &#x1f4da; 题目&#xff1a;输入一个链表的头节点&#xff0c;按链表从…

苹果iOS 17新功能:重置密码 72 小时内可使用旧密码再次重置

一些用户可能会遇到&#xff0c;在修改了 iPhone 密码之后&#xff0c;突然忘记新密码的情况。现在苹果在 iOS 17 中加入了新的解决方案&#xff1a;在重置密码的 72 小时之内&#xff0c;如果用户不小心忘记了新设置的密码&#xff0c;仍然可以使用旧密码进行再次重置。 在重…

TS系列之工具类型Partial、Required、Pick、Record详解,示例

TS系列之工具类型Partial、Required、Pick、Record详解&#xff0c;示例 文章目录 前言一、Partial<Type>二、Required<Type>三、Pick<Type, Keys>四、Record<Keys, Type>总结 前言 本片文章主要利用上一篇所学的keyof做一个延申与扩展的学习。在Type…

OpenGaussDB2.0.1

目录 1. GaussDB版本2. OpenGaussDB介绍3. 单节点安装3.1 环境配置3.2 安装 4. 远程连接设置 1. GaussDB版本 GaussDB的版本&#xff1a; GaussDB 100&#xff1a;目前暂不发布&#xff0c;公司合作伙伴需向华为提交申请&#xff08;GaussDB 100 将在 2020 年被正式命名为 Gaus…