数据挖掘04--多个数据源合并

目录

1. 数据的纵向合并

 2. 数据的横向合并

 1. 默认内连接

 2. 外连接

3. 左连接 

4. 右连接 

5. 参数suffixes

 3. Concat命令简介


1. 数据的纵向合并

df.append(

  • other : 希望添加的DF/Series/字典/上述对象的列表,使用列表方式,就可以实现一次合并多个新对象
  • ignore_index = False : 添加时是否忽略索引
  • verify_integrity = False : 是否检查索引值的唯一性,有重复时报错 )

按行追加拼接,将一个 DataFrame 的行拼接到另外一个 DataFrame 的末尾,返回一个新的 DataFrame。

如果列名不在第一个 DataFrame出现,则将以新的列名添加,没有对应内容的会为空。不会改变原来的 DataFrame,只会创建一个新的 DataFrame,包含拼接的数据。

重点:因为会创建一个新的 index 和 data buffer,所以效率不高。推荐用 pd.concat(),而且 pd.concat() 功能更强大,详情请参考

 两个 df 拼接,并保留原索引:

如果列名不在第一个 DataFrame出现,则将以新的列名添加,没有对应内容的会为空。不会改变原来的 DataFrame,只会创建一个新的 DataFrame,包含拼接的数据。

多个 df 拼接,在合并不保留原索引,启用新的自然索引

import pandas as pd
idnumber = [1,2,5]
fname = ['Kate','John','Eli']
age = [10,20,50]
grade = ['A','B','C']
df1 = pd.DataFrame({'id':idnumber,'fname':fname})
df2 = pd.DataFrame({'age':age,'grade':grade})
df3 = pd.DataFrame({'id':[3,4],'age':[30,40]})
print("df1:\n{}".format(df1))
print("df2:\n{}".format(df2))
print("df3:\n{}".format(df3))

 

df1_append_df2 = df1.append(df2)
print("df1_append_df2:\n{}".format(df1_append_df2))

df1_append_df2_df3 = df1.append([df2,df3], ignore_index = True)
print("df1_append_df2_df3:\n{}".format(df1_append_df2_df3))

 

 2. 数据的横向合并

merge命令使用类SQL的连接方式,pd.merge()方法可以自由灵活地操作各种逻辑的数据连接、合并等操作

pd.merge(
* 需要合并的DF 
*     left : 需要合并的左侧DF
*     right : 需要合并的右侧DF
* how = 'inner' : 具体的连接类型
*     {'left', 'right', 'outer', 'inner'}
* 两个DF的连接方式
*     on : 用于连接两个DF的关键变量(多个时为列表),必须在两侧都出现
*     on:作为连接键的字段,左右数据中都必须存在,否则需要用left_on和right_on来指定
*     left_on : 左侧DF用于连接的关键变量(多个时为列表)
*     right_on : 右侧DF用于连接的关键变量(多个时为列表)
*     left_index = False : 是否将左侧DF的索引用于连接
*     right_index = False : 是否将右侧DF的索引用于连接
* 其他附加设定
*     sort = False : 是否在合并前按照关键变量排序(会影响合并后的案例顺序)
*     suffixes : 重名变量的处理方式,提供长度为2的列表元素,分别作为后缀
*         suffixes=('_x', '_y')
*     copy = True
*     indicator = False : 在结果DF中增加'_merge'列,用于记录数据来源
*         也可以直接提供相应的变量列名
*         Categorical类型,取值:'left_only', 'right_only', 'both'
*     validate = None : 核查合并类型是否为所指定的情况
*         'one_to_one' or '1:1'
*         'one_to_many' or '1:m'
*         'many_to_one' or 'm:1'
*         'many_to_many' or 'm:m'(实际上不做检查)
*         0.21版新增
)

参数left_index和right_index

除了指定字段作为主键以外,还可以考虑用索引作为拼接的主键,left_index和right_index默认为False,就是不以索引作为主键,调整为True就可以了。

两张表中的记录人员信息仅有部分相同

df2a = pd.read_excel("员工信息表.xlsx", sheet_name = '员工1工号')
print(df2a)
df2b = pd.read_excel("员工信息表.xlsx", sheet_name = '员工2工号')
print(df2b)
#不指定主键的情况下:
pd.merge(df2a, df2b)
#pd.merge()默认的是内连接,所以只把主键信息相同的部分拼接,而工号和员工姓名完全一致的只有工号是004的信息

 1. 默认内连接

 esult = pd.merge(left, right, on=['key1', 'key2'])

 2. 外连接

外连接是保留两个表的所有信息,拼接的时候遇到标签不能对齐的部分,用NAN进行填充:

result = pd.merge(left, right, how='outer', on=['key1', 'key2'])

df2a = pd.read_excel("员工信息表.xlsx", sheet_name = '员工1工号')
print(df2a)
df2b = pd.read_excel("员工信息表.xlsx", sheet_name = '员工2工号')
print(df2b)
pd.merge(df2a, df2b,how="outer")

3. 左连接 

 左连接是保留所有左表的信息,把右表中主键与左表一致的信息拼接进来,标签不能对齐的部分,用NAN进行填充: result = pd.merge(left, right, how='left', on=['key1', 'key2'])

df2a = pd.read_excel("员工信息表.xlsx", sheet_name = '员工1工号')
print(df2a)
df2b = pd.read_excel("员工信息表.xlsx", sheet_name = '员工2工号')
print(df2b)
pd.merge(df2a, df2b,how="left")

4. 右连接 

 右连接是保留所有右表的信息,把左表中主键与左表一致的信息拼接进来,标签不能对齐的部分,用NAN进行填充: result = pd.merge(left, right, how='right', on=['key1', 'key2'])

df2a = pd.read_excel("员工信息表.xlsx", sheet_name = '员工1工号')
print(df2a)
df2b = pd.read_excel("员工信息表.xlsx", sheet_name = '员工2工号')
print(df2b)
pd.merge(df2a, df2b,how="right")

5. 参数suffixes

 两个表中有好几个相同的列名,除了作为主键的列之外,其他名字相同的列被拼接到表中的时候会有一个后缀表示这个列来自于哪个表格,用于区分名字相同的列,这个后缀默认是(x和y)

pd.merge(df2a, df2b,on="工号",suffixes=("_left","_right"))

 3. Concat命令简介

同时支持横向合并与纵向合并
pd.concat(
* objs : 需要合并的对象,列表形式提供
* axis = 0 : 对行还是对列方向进行合并
*     {0/'index', 1/'columns'}
* join = 'outer' : 对另一个轴向的索引值如何进行处理
*        {'inner', 'outer'}
* ignore_index = False
* keys = None : 为不同数据源的提供合并后的索引值
* verify_integrity = False
* copy = True
)
# 纵向合并
df21 = pd.read_excel("data/高校信息.xlsx", sheet_name = 'part1')
df22 = pd.read_excel("data/高校信息.xlsx", sheet_name = 'part2')
pd.concat([df21, df22])

df2a = pd.read_excel("data/高校信息.xlsx", sheet_name = 'var6')
df2b = pd.read_excel("data/高校信息.xlsx", sheet_name = 'var3')
pd.concat([df2a, df2b], axis = 1)

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据挖掘报告全文共9页,当前为第1页。数据挖掘报告全文共9页,当前为第1页。基于电商网站商品数据数据分析与挖掘 数据挖掘报告全文共9页,当前为第1页。 数据挖掘报告全文共9页,当前为第1页。 1.电子商务和数据挖掘简介 1.1 电子商务 电子商务是指个人或企业通过Internet网络,采用数字化电子方式进行商务数据交换和开展商务业务活动。目前国内已有网上商情广告、电子票据交换、网上订购,网上支付结算等多种类型的电子商务形式。电子商务正以其低廉、方便、快捷、安全、可靠、不受时间和空间的限制等突出优点而逐步在全球流行。电子商务是指以Internet网络为载体、利用数字化电子方式开展的商务活动。随着网络技术和数据库技术的飞速发展,电子商务正显示越来越强大的生命力。电子商务的发展促使公司内部收集了大量的数据,并且迫切需要将这些数据转换成有用的信息和知识,为公司创造更多潜在的利润。利用数据挖掘技术可以有效地帮助企业分析从网上获取的大量数据,发现隐藏在其后的规律性,提取出有效信息,进而指导企业调整营销策略,给客户提供动态的个性化的高效率服务 1.2 数据挖掘技术 数据挖掘(Data Mining),又称数据库中的知识(Knowledge Discovery in Database, KDD),是从大量的、不完全的、有噪声的、模糊的和随机的数据中,提取隐含在其中的、人们事先不知道的,但又是潜在有用的信息和知识的过程。数据挖掘是一门广义的交叉学科,它汇聚了不同领域尤其是数据库、人工智能、数理统计、可视化、并行计算等方面的知识。数据挖掘技术从一开始就是面向应用领域,它不仅是面向特定数据库的简单检索查询调用,而且,要对数据进行微观、中观乃至宏观的统计、分析、综合和推理,以指定实际问题的求解,企图发现事件间的相互关联,甚至利用已有的数据对未来的活动进行预测。数据挖掘技术在金融、保险、电信、大型超市等积累有大量数据的电子商务行业有着广泛的应用,如信用分析、风险分析、欺诈检验、用户聚类分析、消费者习惯分析等。 而电子商务中的数据挖掘即Web挖掘,是利用数据挖掘技术从www的资源(即Web文档)和行为(即We服务)中自动发现并提取感兴趣的、有用的模式和隐含的信息,它是一项综合技术涉及到Internet技术学、人工智能、、信息学、学等多个领域。 1.3. 数据挖掘过程 挖掘数据过程可以分为3个步骤:数据预处理、模式发现、模式分析。 1.3.1 数据预处理 实际系统中的数据一般都具有不完全性、冗余性和模糊性。因此,数据挖掘一般不对原始数据进行挖掘,要通过预处理提供准确、简洁的数据。预处理主要完成以下工作:包括合并数据,将多个文件或多个数据库中的数据进行合并处理;选择数据,提取出适合分析的数据集合;数据清洗、过滤,剔除一些无关记录,将文件、图形、图像及多媒体等文件转换成可便于数据挖掘的格式等。 数据挖掘报告全文共9页,当前为第2页。数据挖掘报告全文共9页,当前为第2页。 1. 3. 2 模式发现 数据挖掘报告全文共9页,当前为第2页。 数据挖掘报告全文共9页,当前为第2页。 模式发现阶段就是利用挖掘算法挖掘出有效的、新颖的、潜在的、有用的以及最终可以理解的信息和知识。可用于Web的挖掘技术有路径选择、关联分析、分类规则、聚类分析、序列分析、依赖性建模等等。 1. 3. 3 模式分析 模式分析是从模式发现阶段获得的模式、规则中过滤掉不感兴趣的规则和模式。通过技术手段,对得到的模式进行数据分析,得出有意义的结论。常用的技术手段有:关联规则、分类、聚类、序列模式等。 电子商务是现代信息技术发展的必然结果,也是未来商业运作模式的必然选择。利用数据挖掘技术来分析大量的数据,可以挖掘出商品的消费规律与客户的访问模式,帮助企业制定有效的营销策略,充分发挥企业的独特优势,促进管理创新和技术创新,提高企业竞争力。 随着电子商务发展的势头越来越强劲, 面向电子商务的数据挖掘将是一个非常有前景的领域。它能自动预测客户的消费趋势、市场走向,指导企业建设个性化智能网站,带来巨大的商业利润,可以为企业创建新的商业增长点。但是在面向电子商务的数据挖掘中也存在很多问题急需解决,比如怎样将服务器的日志数据转化成适合某种数据挖掘技术的数据格式,怎样解决分布性、异构性数据源的挖掘,如何控制整个Web上知识发现过程等。随着硬件环境、挖掘算法的深入研究及应用经验的积累,数据挖掘技术及在电子商务中的应用必将取得长足的进展。 2.数据挖掘 2.1数据挖掘主要内容 对于10种品牌的卫生巾的属性、价格、包装等性能与其销量的关系。 10种卫生巾分别为:555、ABC、高洁丝、护舒宝、洁婷、乐而雅、米娅、七度空间、苏菲、怡丽 2.2数据来源 天猫超市 2.3数据挖掘工具 1.八爪鱼采集器 八爪鱼采集器是深圳视

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值