Pandas 数据整合

原创 2018年04月16日 16:25:00

Pandas 数据整合

标签(空格分隔): python pandas


合并数数据集

pandas.merge可以根据一个或者多个键将不同DataFrame合并起来
pandas.contact 可以沿着一个轴将多个对象叠到一起
combine_first可以将数据编接到一起,用一个对象中的值填充另一个值

数据库风格DataFrame合并

pd.merge(f1, f2)            #默认将重叠列名当做键
pd.merge(f1, f2, on='key')  #显示指定对'key'键进行连接
pd.merge(f1, f2, left_on='lkey', right_on='rkey') #对不同列名连接
pd.merge(f1, f2, how='outer')   #默认情况下merge做inner,也就是交集
                                #其他方式还可以是left,right,outer
pd.merge(f1, f2, on='key', how='left') #多对多行产生笛卡尔积
                                #连接方式只影响出现在结果中的键

#注意,在进行列列连接的时候,DataFrame的索引会丢弃 on可以是多个键

合并运算重复列名
如f1和f2都有键key1,key2,现在想要进行key1进行合并,那么key2列名重复怎么办???
可以指定附加到左右两个DataFrame重复列名上面

pd.merge(f1, f2, on='key1', suffixes=('_left', '_right'))
#合并后的列名有:key1,key2_left,key2_right

详细的合并参数
合并参数

索引上的合并

有时候DataFrame的连接键位于索引中,可以传入left_index=True或者right_index=True以说明索引应该被用作连接键

索引合并

join实例方法
join可以更为方便的实现按索引合并,还可以合并多个带有相同或者相似索引的DataFrame对象,而不管他们之间有没有重叠的列

pd.merge(f1, f2, how='outer', left_index=True, right_index=True) #合并两个索引
f1.join(f2, how='outer')    #和上面等价

DataFrame的join是在连接键上做左连接,他还支持参数f2的索引和调用者某个列之间连接
f1.join(f2, on='key')

对于简单的索引合并,可以用join传递多个DataFrame

f1.join([f2, f3]) #把他们按照f1索引左连接
f1.join([f2, f3], how='outer') #把他们按照f索引全连接

轴向连接

concatenation函数
NumPy有一个用于合并原始NumPy数组的concatenation函数
具体使用方法以及作业如下
concatenation函数

contact函数
下面假设没有重叠索引
contact函数
默认情况下面contact是在axis=0上工作的,最终产生一个新的Series,如果传入axis=1那么就会产生一个新的DataFrame

  • 可以通过设置join=’inner’来得到他们的交集
  • 可以通过join_axes=[[‘a’, ‘b’, ‘c’]]来指定要在其他周使用的索引

如果参与连接的片段在结果中区分不开,可以创建一个层次化索引,通过keys参数达到这个目的,下面还可以调用result.unstack()来去层次化

如果沿着axis=1对Series进行合并,那么keys就会变成DataFrame的列头.对DataFrame合并同理

不保留连接轴上的索引,产生新的索引ignore_index=True

contact函数的参数

合并重叠数据

combine_first
这里用np.where来解释combine_first

np.where(a.isnull(), b, a)
a.combine_first(b)  #这里和上面一定程度是等价的

combine_first解释
上面合并时候b相对a的’b’和’a’索引缺失所以用a来填充

重塑和轴向旋转

重塑层次化索引

  • stack将数据的列”旋转”为行
  • unstack将数据的行”旋转”为列

对于一个层次化索引的Series可以用unstack(可能引入缺失数据)重排为DataFrame

  • stack默认会滤除缺失数据,所以这两个是可逆的
  • unstack旋转的时候旋转轴等级最低
版权声明:欢迎转载,转载时请注明出处 https://blog.csdn.net/xfzero/article/details/79962319

python数据分析pandas教程

  • 2014年11月07日 18:40
  • 8.7MB
  • 下载

基于pandas.merge解决异源数据融合的问题

本文首先提出一个数据分析中经常遇到的异源数据融合的问题,然后介绍了解决该问题的pandas.merge的方法。...
  • zwgdft
  • zwgdft
  • 2016-11-15 17:58:08
  • 2800

pandas数据读取与显示

import pandas # ---------------数据的读取------------------------ food_info = pandas.read_csv("food_info...
  • qq_32005671
  • qq_32005671
  • 2017-03-10 11:14:48
  • 1243

10、Pandas 的数据结构、统计特性及数据读写

一、Pandas 的数据结构(Series, DataFrame)0. NumPy 和 Pandas 的区别? 简单的向量操作与 ndarray 的表现一致 Series 和 ndarray 不同的地...
  • mzpmzk
  • mzpmzk
  • 2017-04-09 23:13:31
  • 1778

利用Pandas进行数据分析(2)——pandas数据基本操作

。Pandas数据操作 索引 Series索引 DataFrame索引 运算与对齐 函数应用 排序Pandas数据操作索引Index的方法和属性...
  • qq_22073849
  • qq_22073849
  • 2017-03-15 23:25:43
  • 1321

Pandas数据探索与实践

Pandas数据探索与实践介绍只要我们要用Python来做数据分析,就避免不了用到Pandas。Python有很多用于数据清洗和数据准备的库,但是很少有数据分析和数据建模的库。Pandas的出现,使得...
  • u013393647
  • u013393647
  • 2015-08-27 22:51:13
  • 1822

pandas入门——数据修改

数据修改 修改特定值# 导入pandas与numpy包 import pandas as pd import numpy as np# 创建时间序列数据 date1 = pd.date_range("...
  • weixin_39501270
  • weixin_39501270
  • 2017-08-15 19:03:42
  • 312

pandas做数据的清洗

转换之后的经纬度的数据出现很多的问题,重复,特殊值,,,所以我就是做了一个简单的清洗使用 Python里面的pandas。 #coding:utf8 import pandas as pd imp...
  • guang_mang
  • guang_mang
  • 2017-05-05 19:29:15
  • 629

pandas读写数据方法

1. pandas操作csv 1.1 读写csv import sys import pandas as pd input_file = sys.argv[1] output_file = sys...
  • liwang_30
  • liwang_30
  • 2018-02-12 15:23:14
  • 135

pandas基础__之__对数据进行筛选和排序

pandas基础__之__对数据进行筛选和排序
  • xiaoQL520
  • xiaoQL520
  • 2017-09-27 09:54:17
  • 1093
收藏助手
不良信息举报
您举报文章:Pandas 数据整合
举报原因:
原因补充:

(最多只允许输入30个字)