时间:来源: 网络作者: 未知点击: 次
Excel技巧:Excel如何批量匹配两张不同表格数据?(Vlookup函数法)
上一期我们给大家介绍利用设置“重复值”的条件格式来判断两个表的差异。不过也有小伙伴提出异议,觉得还要把其他表的数据复制到一张表好麻烦。有没有不移动表格也能匹配数据的方法?答案是肯定的,赶紧和大家分享一下。
场景:适合销售、HR、物流、运营、财务部等需要用Excel进行数据分析比较的办公人士。
问题:Excel如何批量匹配两张不同表格数据?
解答:利用Vlookup函数搞定。
Vlookup函数算是必须要掌握的企业级函数,利用该函数是否有对应的匹配数据,来判断两个表数据之间的差异。同样假设有两张表:表A和表B,长得都差不多,如何快速知道两张表的差异呢?
具体操作如下:Vlookup函数法:本例我们利用两个表的唯一关键字段(员工编号)来实现两个表的匹配。首先第一步,在表A中B2单元格中输入Vlookup以下函数公式。
=VLOOKUP(C2,表B!$C$2:$F$10,1,0)然后双击或下拉B2单元格右下角的数据填充柄,如果匹配成功则显示相同的员工编号,如果表A的数据在表B没有,则会显示错误,如下图B3和B9单元格显示。
需要注意的是,利用vlookup函数需要对两个表进行分别的对比匹配。所以使用起来相对比较麻烦,而且您需要对Vlookup函数使用非常熟练。
这里需要补充一点的是,vlookup函数匹配如果不成功,就会出现类似上图的“#N/A”的错误显示。为了让单元格的显示比较“圆满”。Vlookup函数通常与一个函数搭配使用,那个函数叫做iferror
也就是刚刚出错的单元格,变成0。Iferror函数的用法也很简单,如果Vlookup匹配成功则显示成功的值,如果不成功则显示为0。
总结:实际Vlookup函数不算是进行两表数据匹配最好的方法,但Vlookup函数绝对是进行表格数据匹配必须掌握的企业级函数。
该技巧Excel2010版本及以上有效。
比如A1-A4合并了4个单元格后填充数字为16,现将其拆分,每个单元格填充平均值
要完成这个任务,楼主请先确定区域中临近相关的单元格都是有数据的,比如,A1~A4是合并单元格;A5~A7也是合并单元格,并且是有数据的,A8也是有数据的。这样才能安全地解除合并,并依据A1~A8是否有数据来判断原先的合并单元格结构,否则可能使得合并单元格的结构被破坏而不知道哪些单元格应该是合并的。
再:
不建议取消合并后在原来的位置更新数据,因为A1的16会被取代而湮灭了源数据。安全的做法是在空白列生成相关数据。生成方式可以是公式或者使用VBA(VBA可以直接判断合并单元格,而公式只能依据数据是否存在来判断合并单元格,比如,A1有数据而,A2~A4没有数据,则判定A1~A4是合并单元格)
接收string。表示读取的数据的表名或者SQL语句。无默认 |
接收数据库连接。表示数据库连接信息。无默认 |
接收int、sequence或者False。表示设定的列作为行名,如果是一个数列,则是多重索引。默认为None |
接收list。表示读取数据的列名。默认为None |
testdb数据库数据表清单为:
使用read_sql函数+表格名称读取的订单详情表长度为: 3611
to_sql方法常用参数及其说明
接收string。代表数据库表名。无默认 |
接收数据库连接。无默认 |
接收fail、replace和append。fail表示如果表名存在,则不执行写入操作;replace表明如果存在,则将原数据库表删除,再重新创建,则不执行写入操作;append表示再原数据库表的基础上追加数据。默认为fail |
接收boolean。表示是否将行索引作为数据传入数据库。默认为True |
接收string或者sequence。代表是否引用索引名称,如果index参数为True,此参数为None,则使用默认名称。如果为多重索引,则必须使用sequence形式。默认为None。 |
接收dict。代表写入的数据类型(列名为key,数据格式为values)。默认为None |
新增一个表格后testdb数据库数据表清单为:
文本文件:由若干行字符构成的计算机文件,典型的顺序文件;CSV:用分隔符分隔的文件格式,文字分隔文件。
接收string。代表文件路径。无默认 |
接收int或sequence。表示将某列数据作为列名。默认为infer,表示自动识别 |
接收array。表示列名。默认为None |
接收dict。代表写入的数据类型(列名为key,数据格式为values)。默认为None |
接收c或者python。代表数据解析引擎。默认为c |
接收int。表示读取前n行。默认为None |
使用read_table读取的订单信息表的长度为: 945
使用read_csv读取的订单信息表的长度为: 945
分隔符为;时订单信息表为:
9 # 使用gbk解析菜品订单信息表
to_csv函数常用参数及其说明
接收string。代表文件路径。无默认 |
接收string。代表分隔符。默认为‘,’ |
接收string。代表缺失值。默认为“” |
接收list。代表写出的列名。默认为None |
接收boolean。代表是否将列名写出。默认为True |
接收boolean。代表是否将列名写出。默认为True |
接收特定string。代表数据写入模式。默认为v |
接收特定string。代表存储文件的编码格式。默认为None |
订单信息表写入文本文件前目录内文件列表为:
订单信息表写入文本文件后目录内文件列表为:
read_excel函数的常见参数及其说明
接收string。表示文件路径。无默认 |
接收string、int。代表Excel表内数据的分表位置。默认为0 |
接收int或sequence。表示将某行数据作为列名,取值为int的时候,代表将该列作为列名。取值为sequence时,则代表多重列索引。默认为infer,表示自动识别 |
接收array。表示列名。默认为None |
接收int、sequence或者False。表示索引列的位置,取值为sequence时代表多重索引。默认为None |
接收dict。代表写入的数据类型(列名为key,数据格式为values)。默认为None |
客户信息表长度为: 734
客户信息表写入excel文件前目录内文件列表为:
客户信息表写入excel文件后目录内文件列表为:
订单详情表1的长度为: 2779
订单详情表2的长度为: 3647
订单详情表3的长度为: 3611
订单信息表的长度为: 945
客户信息表的长度为:734
订单详情表的元素个数为: 52801
订单详情表的维度数为: 2
订单详情表转置前形状为: (2779, 19)
订单详情表转置后形状为为: (19, 2779)
订单详情表中的order_id的形状为:
订单详情表中的dishes_name前5个元素为:
订单详情表的1-6行元素为:
订单详情表中前五行数据为
订单详情表中后五个元素为:
DataFrame.loc[行索引名称或条件,列索引名称]
DataFrame.ix[行索引的名称或位置或条件,列索引名称或位置]
drop方法的重要参数及其说明
接收string或array。代表删除的行或列的标签。无默认 |
接收0或1.代表操作的轴向。默认为0 |
接收int或者索引名。代表标签梭子啊级别。默认为None |
接收boolean。代表操作是否对原数组生效。默认为False |
Numpy中的描述性统计函数
订单详情表中amount(价格)的平均值为: 45.045
订单详情表中amount(价格)的平均值为: 45.045
订单详情表counts和amounts两列的描述性统计为:
pandas描述性统计方法
订单详情表dishes_name频数统计结果前10为:
五色糯米饭(七色) 58
芝士烩波士顿龙虾 55
订单信息表dishes_name的描述统计结果为:
订单详情表的维度为: 2
订单信息表的维度为: 2
客户信息表的维度为:2
订单详情表的元素个数为: 52801
订单信息表的元素个数为: 19845
客户信息表的元素个数为:27158
订单详情表counts和amounts两列的描述性统计为:
订单信息表order_id(订单编号)与dishes_name(菜品名称)的描述性统计结果为:
去除的列的数目为: 7
最基础的时间类。表示某个时间点。绝大多数的场景中的时间数据都是Timestamp形式 |
表示单个时间跨度,或者某个时间段,例如某一天、某一小时等 |
表示不同单位的时间,例如1d、1.5h、3min、4s等,而非具体的某个时间段 |
接收string。表示时间的间隔频率。无默认 |
接收string。表示生成规则时间数据的起始点。无默认 |
表示需要生成的周期数目。无默认 |
接收string。表示生成规则时间数据的终结点。无默认 |
接收timezone。表示数据的时区。默认为None |
dateIndex中的星期名称数据前5个为:
Timedelta类周期名称、对应单位及其说明
lock_time在加上一天前前5行数据为:
lock_time在加上一天前前5行数据为:
订单详情表中的前5条数据的年份信息为: [, , 2016]
订单详情表中的前5条数据的月份信息为: [8, 8, 8, 8, 8]
订单详情表中的前5条数据的日期信息为: [1, 1, 1, 1, 1]
订单详情表中的前5条数据的星期信息为: [0, 0, 0, 0, 0]
可以发现最短时间和最长时间均为异常值,开始时间不可能在结束订单时间之后,点餐时间也不可能持续16天,可以考虑对这部分数据做合适的处理
groupby方法的参数及其说明
接收list、string、mapping或generator。用于确定分组的依据。如果传入的时一个函数,则对索引进行计算并分组;如果传入的时一个字典或者Series,则字典或者Series的值用来作为分组依据;如果传入一个NumPy数组,则于数据的元素作为分组依据;如果传入的时字符串或者字符串列表,则使用这些字符串所代表的字段作为分组依据。无默认 |
接收int。表示操作的轴向,魔派任对列进行操作。默认为0 |
接收int或者索引名。代表标签所在级别。默认为None |
接收boolean。表示聚合后的聚合标签是否以DataFrame索引形式输出。默认为True |
接收boolean。表示是否对分组依据、分组标签进行排序。默认为True |
接收boolean。表示是否显示分组标签的名称。默认为True |
接收boolean。表示是否在允许的情况下返回数据进行降维。默认为False |
groupby常用描述性统计方法及说明
计算分组的数目,包括缺失值 |
对每个分组中的组员进行标记,0~n-1 |
订单详情表分组后前5组每组的均值为:
订单详情表分组后前5组每组的标准差为:
订单详情表分组后前5组每组的大小为:
接收list、dict、function。表示应用与每行或每列的函数。无默认 |
接收0或1。表示操作的轴向。默认为0 |
订单详情表的菜品销量与售价的和与均值为:
订单详情表的菜品销量总和与售价的均值为:
print('菜品订单详情表的菜品销量总和与售价的总和与均值为:\n',detail.agg({
菜品订单详情表的菜品销量总和与售价的总和与均值为:
print('菜品订单详情表的菜品销量两倍总和为:','\n',
菜品订单详情表的菜品销量两倍总和为:
print('订单详情表的菜品销量两倍总和为:\n',
print('订单详情表的菜品销量与售价的和的两倍为:\n',
订单详情表的菜品销量两倍总和为:
订单详情表的菜品销量与售价的和的两倍为:
print('订单详情表分组后前3组每组的均值为:\n',
print('订单详情表分组后前3组每组的标准差为:\n',
订单详情表分组后前3组每组的均值为:
订单详情表分组后前3组每组的标准差为:
print('订单详情分组前3组每组菜品总数和售价均值为:\n',
订单详情分组前3组每组菜品总数和售价均值为:
apply方法的重要参数及其说明
接收functions。表示应用与每行或每列的函数。无默认 |
接收0或1。表示操作的轴向。默认为0 |
接收boolean。表示是否进行广播。默认为False |
接收boolean。表示是否直接将ndarray对象传递给函数。默认为False |
接收boolean或者None。表示返回值的格式。默认为None |
print('订单详情表的菜品销量与售价的均值为:\n',
订单详情表的菜品销量与售价的均值为:
订单详情表分组后前3组每组的均值为:
订单详情表分组后前3组每组的标准差为:
print('订单详情表的菜品销量与售价的两倍为:\n',
订单详情表的菜品销量与售价的两倍为:
print('订单详情表分组后实现组内离差标准化后前五行为:\n',
订单详情表前5组每组的数目为:
订单详情表前五组每日菜品均价为:
订单详情表前五组每日菜品售价中位数为:
订单详情表前五组每日菜品售出数目为:
接收DataFrame。表示创建表的数据。无默认 |
接收string。用于指定要聚合的数据字段名,默认使用全部数据。默认为None |
接收boolean。表示汇总(Total)功能的开关,设置为True后,结果集中会出现名为“All”的行和列。默认为True |
接收boolean。表示是否删掉全为NaN的列。默认为False |
以order_id作为分组键创建的订单透视表为:
以order_id作为分组键创建的订单销量与售价总和透视表为:
以order_id和dishes_name作为分组键创建的订单销量与售价总和透视表为:
以order_id作为行分组键counts作为值创建的透视表前5行为:
crosstab函数的常用参数及其说明
接收string或list。表示行索引键。无默认 |
接收string或list。表示列索引键。无默认 |
接收array。表示聚合数据。默认为None |
表示行分组键名。无默认 |
表示列分组键名。无默认 |
接收function。表示聚合函数。默认为mean |
接收boolean。默认为True。表示汇总(Total)功能的开关,设置为True后,结果集中会出现名为“All”的行和列。 |
接收boolean。表示是否删掉全为NaN的列。默认为False |
接收boolean。表示是否对值进行标准化。默认为False |
订单详情表单日菜品成交总额与总数透视表前5行5列为:
订单详情表单日单个菜品成交总额交叉表后5行5列为:
dishes_name 黄尾袋鼠西拉子红葡萄酒 黄油曲奇饼干 黄花菜炒木耳 黑米恋上葡萄 All
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。