利用Python进行数据分析---数据规整化

1、合并数据集

①、多对一合并

我们需要用到pandas中的merge函数,merge函数默认情况下合并的是两个数据集的交集(inner连接),当然还有其他的参数:

how里面有inner、outer、left、right,四个参数可以选择,分别代表:交集,并集,参与合并的左侧DataFrame,以及右侧

当列名对象相同时:
df1=pd.DataFrame({‘key‘:[‘a‘,‘c‘,‘a‘,‘b‘,‘a‘,‘c‘,‘b‘,‘c‘],‘data1‘:range(8)})
df2=pd.DataFrame({‘key‘:[‘a‘,‘b‘,‘d‘],‘data2‘:range(3)})
pd.merge(df1,df2,on=‘key‘)
返回
     key  data1  data2
0    a    0    0
1    a    2    0
2    a    4    0
3    b    3    1
4    b    6    1
当列名对象不同时:
df1=pd.DataFrame({‘lkey‘:[‘a‘,‘c‘,‘a‘,‘b‘,‘a‘,‘c‘,‘b‘,‘c‘],‘data1‘:range(8)})
df2=pd.DataFrame({‘rkey‘:[‘a‘,‘b‘,‘d‘],‘data2‘:range(3)})
pd.merge(df1,df2,left_on=‘lkey‘,right_on=‘rkey‘,how=‘outer’)
返回为

     lkey   data1 rkey    data2
0    a    0.0    a    0.0
1    a    2.0    a    0.0
2    a    4.0    a    0.0
3    c    1.0    NaN    NaN
4    c    5.0    NaN    NaN
5    c    7.0    NaN    NaN
6    b    3.0    b    1.0
7    b    6.0    b    1.0
8    NaN    NaN    d    2.0

②、多对多合并

df1=pd.DataFrame({‘key‘:[‘b‘,‘c‘,‘b‘,‘a‘,‘b‘,‘a‘],‘data1‘:range(6)})
df2=pd.DataFrame({‘key‘:[‘a‘,‘a‘,‘c‘,‘b‘,‘d‘],‘data2‘:range(5)})
pd.merge(df1,df2,on=‘key‘,how=‘right‘)
返回为
      key  data1 data2
0    b    0.0    3
1    b    2.0    3
2    b    4.0    3
3    c    1.0    2
4    a    3.0    0
5    a    5.0    0
6    a    3.0    1
7    a    5.0    1
8    d    NaN    4

多对多合并产生的是行的笛卡尔积,即df1有2个a,df2有2个a,并集会产生4个a

当需要根据多个键进行合并时,只要传入一个列名组成的列表就可以。

在合并运算时,需要对重复列名的处理,suffixes函数可以指定附加到左右两个DataFrame对象的重复列名上的字符串

2、索引上的合并

原文地址:https://www.cnblogs.com/jx1111jx/p/9574447.html

时间: 2024-10-03 16:55:10

利用Python进行数据分析---数据规整化的相关文章

利用Python进行数据分析——数据规整化:清理、转换、合并、重塑(七)(2)

1.索引上的合并 有时候,DataFrame中的连接键位于其索引中.在这种情况下,你可以传入left_index = True或right_index = True(或两个都传)以说明索引应该被用作连接键: In [8]: left1 = pd.DataFrame({'key': ['a', 'b', 'a', 'a', 'b', 'c'], ...: 'value':range(6)}) In [9]: right1 = pd.DataFrame({'group_val':[3.5, 7]},

利用 Python 进行数据分析(二)尝试处理一份 JSON 数据并生成条形图

一.JSON 数据准备 首先准备一份 JSON 数据,这份数据共有 3560 条内容,每条内容结构如下: 本示例主要是以 tz(timezone 时区) 这一字段的值,分析这份数据里时区的分布情况. 二.将 JSON 数据转换成 Python 字典 代码如下: 三.统计 tz 值分布情况,以“时区:总数”的形式生成统计结果 要想达到这一目的,需要先将 records 转换成 DataFrame,DataFrame 是 Pandas 里最重要的数据结构,它可以将数据以表格的形式表示:然后用 val

利用 Python 进行数据分析(十二)pandas:数据合并

pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法combine_first()方法:合并重叠数据. pandas.merge()方法:数据库风格的合并 例如,通过merge()方法将两个DataFrame合并: on='name'的意思是将name列当作键: 默认情况下,merge做的是内连接(inner),即键的交集. 其他方式还有左连接(lef

数据分析学习资料《利用Python进行数据分析第2版》+《Python数据分析与挖掘实战》+《从零开始学Python数据分析与挖掘》

数据分析涉及统计学.线性代数.图形分析绘制.数据挖掘等知识,推荐系统学习电子资料<利用Python进行数据分析第2版>.<Python数据分析与挖掘实战>.<从零开始学Python数据分析与挖掘>电子书和代码测试. <利用Python进行数据分析第2版>电子书代码,每一章之间有递进关系,适合在Python入门<Python编程从入门到实践>电子书之后阅读,本专门针对数据分析领域的.我细致地读了一遍,敲了一遍代码,一开始没有头绪,进展缓慢,后来逐渐

数据分析之数据规整化

数据规整化:清理.转换.合并.重塑 1.合并数据集 pandas对象中的数据可以通过一些内置的方式进行合并: pandas.merge pandas.concat:沿一条轴线将多个对象进行堆叠 combine_first:重复数据连接,用一个对象中的值填充另一个缺失值 1.1 数据库风格的DataFrame合并 pd.merge(df1,df2)  合并其中column名字相同的数据. pd.merge(df1,df2, left_on = '1key', right_on = 'rkey')

《利用Python进行数据分析》.(Wes McKinney).[PDF].pdf

下载地址:网盘下载 内容简介  · · · · · · [名人推荐] "科学计算和数据分析社区已经等待这本书很多年了:大量具体的实践建议,以及大量综合应用方法.本书在未来几年里肯定会成为Python领域中技术计算的权威指南." --Fernando Pérez 加州大学伯克利分校 研究科学家, IPython的创始人之一 [内容简介] 还在苦苦寻觅用python控制.处理.整理.分析结构化数据的完整课程?本书含有大量的实践案例,你将学会如何利用各种Python库(包括NumPy.pan

《利用Python进行数据分析》(Wes McKinney).pdf高清版免费下载

下载地址:网盘下载 备用地址:网盘下载 内容简介  · · · · · ·[名人推荐] “科学计算和数据分析社区已经等待这本书很多年了:大量具体的实践建议,以及大量综合应用方法.本书在未来几年里肯定会成为Python领域中技术计算的权威指南.” ——Fernando Pérez 加州大学伯克利分校 研究科学家, IPython的创始人之一 [内容简介] 还在苦苦寻觅用Python控制.处理.整理.分析结构化数据的完整课程?本书含有大量的实践案例,你将学会如何利用各种Python库(包括NumPy

《利用Python进行数据分析&#183;第2版》第四章 Numpy基础:数组和矢量计算

<利用Python进行数据分析·第2版>第四章 Numpy基础:数组和矢量计算 numpy高效处理大数组的数据原因: numpy是在一个连续的内存块中存储数据,独立于其他python内置对象.其C语言编写的算法库可以操作内存而不必进行其他工作.比起内置序列,使用的内存更少(即时间更快,空间更少) numpy可以在整个数组上执行复杂的计算,而不需要借助python的for循环 4.0 前提知识 数据:结构化的数据代指所有的通用数据,如表格型,多维数组,关键列,时间序列等 相关包:numpy pa

利用python进行数据分析--(阅读笔记一)

以此记录阅读和学习<利用Python进行数据分析>这本书中的觉得重要的点! 第一章:准备工作 1.一组新闻文章可以被处理为一张词频表,这张词频表可以用于情感分析. 2.大多数软件是由两部分代码组成:少量需要占用大部分执行时间的代码,以及大量不经常执行的“粘合剂代码”. cython已经成为python领域中创建编译型扩展以及对接c/c++代码的一大途径. 3.在那些要求延迟性非常小的应用程序中(例如高频交易系统),为了尽最大可能地优化性能,耗费时间使用诸如C++这样更低级.更低生产率的语言进行