龙空技术网

除了数据合并与连接运算,还有重叠数据!3种python方法轻松处理

python知识分享 331

前言:

现时看官们对“python合并数据”大体比较着重,你们都需要剖析一些“python合并数据”的相关文章。那么小编也在网上搜集了一些有关“python合并数据””的相关知识,希望朋友们能喜欢,姐妹们一起来了解一下吧!


一起学习,一起成长!

前言

数据处理是数据工程中的重要一环,关系到数据质量和数据应用的效果,以及最终数据价值的转化情况,其也是数据分析的基础。比如,现在比较热门的机器学习、深度学习的应用,无论相关算法应用的价值有多高、有多火热,最终都离不开的就是基于数据的应用。所以,数据是前提。高质量数据是高价值应用的基础,数据处理则是保障数据质量的重要过程。在以往中,我们会发现这样的一种现象,大家更关注了数据呈现的结果,忽略了数据处理过程,只有从事相关工作的人清楚其在数据处理工作上耗费了多少的精力。其中能够实现数据处理的工具很多,比如Excel、SQL、MySQL、Hive SQL、Spark SQL、R语言、SPSS、SAS等,而本文选择的是使用python 语言。不用多说,python 在人工智能领域受到高度关注,其中自然语言处理、图像识别等技术更是被广泛应用,提供了房地产、金融、教育、医疗、自媒体、互联网等领域了众多解决方案。

关于python数据处理的场景及方法,小编分享了一些内容。而本文我们主要讨论的一个问题则:重叠数据问题的处理。

数据合并、轴向连接以及重叠数据问题构成数据组合的三个问题。小编过往分享了数据合并、轴向连接的数据处理解决方案,如果对其应用场景和具体的解决方案模糊不清楚,可以阅读相关文章进行了解,推荐如下:

python数据轴向连接:6种pandas方法及示例教你玩转轴向连接数据来源多合并困难?python5种合并数据集方法让你轻松学习

接下来,小编针对数据组合中的重叠数据问题进行介绍以及相应的解决方案进行方法论上的分享。

应用场景

首先,我们先了解一下什么是重叠数据,比如说,全部索引或部分索引重叠的两个数据集。下面通过具体数据例子来了解重叠数据。小编使用python中的numpy创造了一些数据,具体如下:

In [103]:import numpy as npIn [104]:import pandas as pdIn [105]:from pandas import Series,DataFrameIn [106]: a=Series([np.nan,2.5,np.nan,3.5,4.5,np.nan],                   index=['f','e','d','c','b','a'])In [107]: b=Series(np.arange(len(a),dtype=np.float64),                   index=['f','e','d','c','b','a'])In [108]: aOut[108]:f NaNe 2.5d NaNc 3.5b 4.5a NaNdtype: float64    In [109]: bOut[109]:f 0.0e 1.0d 2.0c 3.0b 4.0a 5.0dtype: float64

从上述的例子中可以看到,我们创造的两个数据集,索引是完全相同的。为了下文中更好的进行效果比对,在这里将b数据集的最后一个值替换为NAN。具体操作如下:

In [110]: b[-1]=np.nanIn [111]: bOut[111]: f 0.0e 1.0d 2.0c 3.0b 4.0a NaNdtype: float64
解决方案

针对数据组合中的重叠问题,python拥有3种解决方案,具体我们会在下文逐一进行介绍。这里需要强调的一点是,3种解决方案没有好坏之分,实际应用中还要取决于需要解决业务及数据情况。

方案1: where函数

使用Numpy的where函数,它用于表达一种矢量化的if-else:

In [112]: np.where(pd.isnull(a),b,a)Out[112]: array([ 0. , 2.5, 2. , 3.5, 4.5, nan])

对于这段代码“np.where(pd.isnull(a),b,a)”,有人可能不解,不知其具体发挥作用段内在逻辑。本质上段逻辑如如下所示:

if pd.isnull(a):   belse:   a

如上解读,大家就会清楚知道,数据返回段逻辑,也从本质上认识了where函数是如何发挥作用的。

方案2: Series的combine_first方法

Series有一个combine_first方法,实现的也是一样的功能,而且会进行数据对齐:

In [113]: b[:-2].combine_first(a[2:])Out[113]:a NaNb 4.5c 3.0d 2.0e 1.0f 0.0dtype: float64

方案3:DataFrame的combine_first方法

对于DataFrame,combine_first自然也会在列上做同样的事情,因此可以将其看做:用参数对象中的数据为调用者对象的缺失数据“打补丁”:

In [114]: df1=DataFrame({'a':[1,np.nan,5,np.nan],'b':[np.nan,2,np.nan,6],                         'c':range(2,18,4)}) In [115]: df2=DataFrame({'a':[5,4,np.nan,3,7],'b':[np.nan,3,4,6,8]})In [116]: df1.combine_first(df2)Out[116]:a b c0 1.0 NaN 2.01 4.0 2.0 6.02 5.0 4.0 10.03 3.0 6.0 14.04 7.0 8.0 NaN

总的来说,上述三种方法主要解决重叠数据问题。大家从例子中可以看出,其解决问题的方式简单易用,通过讲述对其内在逻辑以及本质有了进一步了解。希望大家在实践过程中多体会,如果喜欢,希望给予关注支持!感谢关注、阅读、转发!

标签: #python合并数据