Python中数据合并concatenate,merge,concat,join等⽤法numpy中的concatenate()
>>> a = np.array([[1,2],[3,4]])
>>> b = np.array([[5,6]])
>>> np.concatenate((a, b), axis=0)
array([[1,2],
[3,4],
[5,6]])
>>> np.concatenate((a, b.T), axis=1)
array([[1,2,5],
[3,4,6]])
注意:⽤到这个⽅法的时候很容易报dimensions不同的错误,有的需要更改demensions
可以使⽤下⾯的两种⽅法
# 给每⼀个元素增加[]
y_resamplednew = y_resampled[:,np.newaxis]
print(y_resamplednew)
# 给最外层增加⼀个[]
y_resamplednew2 = y_waxis,:]
print(y_resamplednew2)
pandas中的merge,concat,join
# In[]:数据的合并
# 1 ,merge,类似数据库中的
# (1)内连接,pd.merge(a1, a2, on='key')
# (2)左连接,pd.merge(a1, a2, on='key', how='left')
# (3)右连接,pd.merge(a1, a2, on='key', how='right')
# (4)外连接, pd.merge(a1, a2, on='key', how='outer')
data1 = pd.DataFrame(
np.arange(0,16).reshape(4,4),
columns=list('abcd')
)
data1
data2 =[
[4,1,5,7],
[6,5,7,1],
[9,9,123,129],
[16,16,32,1]
]
data2 = pd.DataFrame(data2,columns =['a','b','c','d'])
data2
# 内连接 ,交集
<(data1,data2,on=['b'])
# 左连接注意:如果 on 有两个条件,on = ['a','b']
# how = 'left','right','outer'
<(data1,data2,on='b',how='left')
# 2,append,相当于R中的rbind
# ignore_index = True:这个时候表⽰index重新记性排列,⽽且这种⽅法是复制⼀个样本
data1.append(data2,ignore_index =True)
# 3,join
# 列名不能重叠:在这⾥的⽤法和R中rbind很像,但是join的⽤法还是相对⿇烦的
result = data1.join(data2)
result
# 4,concat 这个⽅法能够实现上⾯所有的⽅法的效果
# concat函数是pandas底下的⽅法,可以把数据根据不同的轴进⾏简单的融合
# pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
# keys=None, levels=None, names=None, verify_integrity=False)
# 参数说明:
# objs:series,dataframe,或者panel构成的序列list
# axis:0 ⾏,1列
# join:inner,outer
# a,相同字段表⾸尾巴相接
data3 = data2
# 为了更好的查看连接后的数据来源,添加⼀个keys更好查看
# b ,列合并(也就是⾏对齐):axis = 1,
data4 = data3[['a','b','c']]
# 在有些数据不存在的时候,会⾃动填充NAN
# c:join:inner 交集,outer ,并集
# 在列名没有⼀个相同的时候会报错
多表left join# data4.index = list('mnp')
# pd.concat([data1,data4])
# In[]:我们再看其他的资料:>>>>>>##
# 数据的规整化
>>>>>>>>>>>>###
>>>>>###合并数据集>>>>>#
# ;实现的就是数据库的操作,有点像sql的操作
# at:可以沿着⼀条轴将多个对象堆叠到⼀起
# ⼀个简单的例⼦:
import pandas as pd
df1 = pd.DataFrame({'key':['b','b','a','c','a','a','b'],'data1':range(7)})
df2 = pd.DataFrame({'key':['a','b','d'],'data2':range(3)})
# merge默认是交集,如果没有指定哪个列进⾏连接,merge就会将重叠列的列名当做键
(df1,df2))
(df1,df2,on='key'))
# 如果两个对象的列名不同,也可以进⾏显⽰的指定
df3 = pd.DataFrame({'lkey':['b','b','a','c','a','a','b'],'data1':range(7)})
df4 = pd.DataFrame({'rkey':['a','b','d'],'data2':range(3)})
(df3,df4,left_on='lkey',right_on='rkey'))
# >>>>># merge还有how = left,right,outer
(df1,df2,how ='left'))
# In[]:合并多个数据集,传⼊⼀个由列名组成的列表即可:
left = pd.DataFrame({'key1':['foo','foo','bar'],'key2':['one','two','one'],'lval':[1,2,3]})
right = pd.DataFrame({'key1':['foo','foo','bar','bar'],'key2':['one','one','one','two'],'lval':[4,4,6,7]}) print(left,'\n',right)
# outer相当于并集
(left,right,on=['key1','key2'],how ='outer'))
# 对于上⾯的代码,我们可以这样理解,多个键形成⼀系列元祖,并将其当做当个连接键进⾏连接(实际不是这样)# In[]需要考虑的是重复列名的问题:
# 他会⾃动进⾏重新命名
(left,right,on=['key1','key2'],how ='inner'))
# 如果我们想⾃定义:(和原来的名字进⾏的叠加)
(left,right,on=['key1','key2'],how ='inner',suffixes =('_left','_right')))
'''
merge:函数的参数:
on:⽤于连接的列名
left_on,right_on :左侧(右侧)⽤于连接键的列
left_index(right_index):将左(右)侧的⾏索引作为连接键
sort:对于合并后的数据进⾏排列,默认为true,对于数据量⽐较⼤的时候,把他设置为False,性能更好suffixes:默认为('_x','_y')
copy:默认为True,可以改为False,数据量⽐较⼤时
'''
# In[]:索引上的合并:
left1 = pd.DataFrame({'key':['a','b','a','a','b','c'],'value':range(6)})
right1 = pd.DataFrame({'group_val':[3.5,7]},index=['a','b'])
(left1,right1,left_on='key',right_index=True))
# 当然对于通过索引的合并,DataFrame还有⼀个join⽅法,更加⽅便的实现索引的合并
print(left1.join(right1,how='outer'))
# In[] >>>>>>>>>>>>>>>>#
# ****************************** 轴向连接concat **********************************
>>>>>>>>>>>>>>>>####
s1 = pd.Series([0,1],index=['a','b'])
s2 = pd.Series([2,3,4],index=list('cde'))
s3 = pd.Series([5,6],index=list('fg'))
at([s1,s2,s3]))
s4 = pd.concat([s1*5,s3])
# join_axes指定轴上使⽤的索引,如果没有对应的,⾃动填充空值
at([s1,s4],axis=1,join_axes=[['a','c','b','e']]))
# >>>>>#### 使⽤keys 可以区分拼接的数据来⾃哪⾥
result = pd.concat([s1,s2,s3],keys=['s1','s2','s3'])
print(result)
# 很多时候,通过concat的时候⾏索引可能会没有特别的意义,或者因为你索引类型不⼀样⽽没法concat的时候
# 我们需要使⽤使⽤ ignore_index = True
result = pd.concat([s1,s2,s3],keys=['s1','s2','s3'],ignore_index=True)
print(result)
# In[]:>>>>>>##
>>### 重叠数据的合并处理:也就是在索引相同的时候,也可以直接使⽤concat
# np.where :if-else的⽮量化操作
import numpy as np
a = pd.Series([np.nan,2.5,np.nan,3.5,4.5,8],index=list('fedcba'))
b = pd.Series(np.arange(len(a),dtype=np.float64),index=list('fedcba'))
b[-1]= np.nan
print(a,'\n',b)
print(np.where(pd.isnull(a),b,a))
# at([a,b])) print('/nn')
print(bbine_first(a))
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
SQLOUTERJOIN使用方法具体解释
« 上一篇
SparkSqlJoin操作类型
下一篇 »
推荐文章
热门文章
-
随机森林特征选择原理
2024-10-02 -
自动驾驶系统中的随机森林算法解析
2024-10-02 -
随机森林算法及其在生物信息学中的应用
2024-10-02 -
监督学习中的随机森林算法解析(六)
2024-10-02 -
随机森林算法在数据分析中的应用
2024-10-02 -
机器学习——随机森林,RandomForestClassifier参数含义详解
2024-10-02 -
随机森林 的算法
2024-10-02 -
随机森林算法作用
2024-10-02 -
监督学习中的随机森林算法解析(十)
2024-10-02 -
随机森林算法案例
2024-10-02 -
随机森林案例
2024-10-02 -
二分类问题常用的模型
2024-10-02 -
绘制ssd框架训练流程
2024-10-02 -
一种基于信息熵和DTW的多维时间序列相似性度量算法
2024-10-02 -
SVM训练过程范文
2024-10-02 -
如何使用支持向量机进行股票预测与交易分析
2024-10-02 -
二分类交叉熵损失函数binary
2024-10-02 -
tinybert_训练中文文本分类模型_概述说明
2024-10-02 -
基于门控可形变卷积和分层Transformer的图像修复模型及其应用
2024-10-02 -
人工智能开发技术的测试和评估方法
2024-10-02
最新文章
-
基于随机森林的数据分类算法改进
2024-10-02 -
人工智能中的智能识别与分类技术
2024-10-02 -
基于人工智能技术的随机森林算法在医疗数据挖掘中的应用
2024-10-02 -
随机森林回归模型的建模步骤
2024-10-02 -
r语言随机森林预测模型校准曲线
2024-10-02 -
《2024年随机森林算法优化研究》范文
2024-10-02
发表评论