pytho怎么用padas(pythopadas处理数据)
导语:python - 如何应用pandas数据表的左连接、右连接和全连接
python的工具包pandas提供了内连接、外连接(左连接和右连接)和全连接方法,从而由dataframe生成信息更丰富的数据。本文简述pandas中的连接方法的应用举例。pandas中数据表连接的概念与一般数据库中对应的概念含义相同。
import panas as pd
数据准备
创建两个表:products 和 customers,内容如下:
product=pd.DataFrame({&39;:[101,102,103,104,105,106,107,103,107],&39;:[&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;],&39;:[&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;],&39;:[299.0,1350.50,2999.0,14999.0,145.0,110.0,79999.0,2999.0,79999.0],&39;:[&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;]})
结果如下:
customer=pd.DataFrame({ &39;:[1,2,3,4,5,6,7,8,9], &39;:[&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;], &39;:[20,25,15,10,30,65,35,18,23], &39;:[101,0,106,0,103,104,0,0,107], &39;:[&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;], &39;:[&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;]})
pandas提供的merge函数 和 内连接(inner join)
merge函数是pandas中操作dataframe数据常用的一个函数,其默认状态为执行内连接(inner join),要连接的两个dataframe为其中的两个参数,另一个参数是要建立的列名称。
pd.merge(product,customer,on=&39;)
基于product_id列,建立productcustomer两个表的内连接,结果如下图:
参数‘left_on’ 和 ‘right_on’ 分别为连表的键名称,可以用数组包括多个列。
pd.merge(product,customer,how=&39;,left_on=[&39;,&39;],right_on=[&39;,&39;])
运行结果如下,
全连接(Full join)
如果想获取全部产品的信息,可以使用全连接,把product和customer两个dataframe结合起来。
pd.merge(product,customer,on=&39;,how=&39;)
运行结果如下:
其中所有不匹配的行都标志为NaN。如果命令中有 indicator 参数,就会出现_merge列,
pd.merge(product,customer,on=&39;,how=&39;,indicator=True)
结果如下:
左连接(left join)
如果想获取购买了商品的消费者的信息,可以使用 左连接。左连接和右连接都属于外连接。
pd.merge(product,customer,on=&39;,how=&39;)
执行结果如下,
右连接(right join)
如果想得到包括购买商品信息的消费者的数据表,则可以使用右连接,
pd.merge(product,customer,on=&39;,how=&39;)
结果如下图:
如何处理连接中出现的冗余/重复数据
建立一个product数据的副本,
product_dup=pd.DataFrame({&39;:[101,102,103,104,105,106,107,103,107],&39;:[&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;],&39;:[&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;],&39;:[299.0,1350.50,2999.0,14999.0,145.0,110.0,79999.0,2999.0,79999.0],&39;:[&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;]})
执行以下命令:
pd.merge(product_dup,customer,how=&39;,on=&39;)
结果如下图:
可以看到有重复的数据行,解决这一问题,可以在merge函数中使用 validate 参数,可设置为:‘one_to_one’, ‘one_to_many’, ‘many_to_one’, 和 ‘many_to_many’.
pd.merge(product_dup,customer,how=&39;,on=&39;,validate=&39;)
运行结果如下:
pandas中dataframe数据表连接的概念,和关系数据库以及SQL语言中的概念具有相同的含义。
免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请反馈,一经查实立刻删除内容。本文内容由快快网络小迪创作整理编辑!