数据预处理
如何对数据进行预处理,提高数据质量,是数据分析中重要的问题。
1.数据合并
堆叠合并数据,堆叠就是简单地把两个表拼在一起,也被称为轴向链接,绑定或连接。依照轴的方向,数据堆叠可分为横向堆叠和纵向堆叠。
1.横向堆叠,即将两个表在x轴向拼接在一起。可以使用concat函数完成。
pandas.concat(obj,axis=0,join="outer",join_axes=None,ignore_index=False,keys=None,levels=None,names=None)
obj:需要拼接党的pandas对象
axis:连接的轴,axis=0为纵向,axis=1为横向
join: inner(交集)或outer(并集)
ignore_index:表示是否不保留连接轴上的索引
当axis=1是表示横向连接,当两张表索引不完全一样时,可以使用参数选择内连接和外连接。在内连接情况下,仅仅返回索引重叠部分,在外连接情 况下,则显示索引的并集部分数据,不足部分就使用空值填补。
2.纵向堆叠,是将两个数据表在y轴方向上拼接。concat函数和append方法两者都可以纵向堆叠。即axis=0 当数据表的列名不完全相同时,可以使用 join参数,inner 取的是列名交集的列,outer返回的是两者列名并集所代表的的列。
1 import numpy as np 2 s1 = pd.Series([1,2],index=["a","b"]) 3 s2 = pd.Series([3,4,5],index=["c",'d',"e"]) 4 s3 = pd.Series([6,7],index=["f","g"]) 5 s4 = pd.concat([s1,s2,s3]) #默认按列连接 6 print(s4) 7 s5 = pd.concat([s1,s2,s3],axis=1) #按横向连接 8 print(s5) #没有重叠部分用缺失值填充 9 print(pd.concat([s1,s4],axis=1,join="inner")) #值保留重叠部分 10 df1= pd.DataFrame(np.arange(6).reshape(3,2),index=["a","b","c"],columns=["one","two"]) 11 df2 = pd.DataFrame(5+np.arange(4).reshape(2,2),index=["a","c"],columns=["three","four"]) 12 print(pd.concat([df1,df2],axis=1,keys=["level1","level2"])) 13 print(pd.concat({"level1":df1,"level2":df2},axis=1))