数据可视化--表格融合练习
- pd.merge()函数说明
- 代码演练
- 参考书籍
pd.merge()函数说明
使用共有列作为两个数据框数据融合的依据,主要使用pd.merge()函数:
- 参数说明:
- left: 传递左表数据
- right: 传递右表数据
- how: 数据融合方式
- left:保留左表的数据
- right:保留右表的数据
- inner:保留公共部分的信息
- outer:保留所有的信息
- on:列名,共有列
- left_on:指定左表的某一列用于不同列名合并
- right_on:指定右表的某一列用于不同列名合并
- suffixes:保留不同表中同列名数据,用该参数给重复列名增加后缀
代码演练
- 准备数据
python">import pandas as pd
df1 = pd.DataFrame(dict(x = ["a","b","c"],y = range(1,4)))
df2 = pd.DataFrame(dict(x = ["a","b","d"], z = [2,5,3]))
df3 = pd.DataFrame(dict(g = ["a","b","d"], z = [2,5,3]))
df4 = pd.DataFrame(dict(x = ["a","b","d"], y = [1,4,2],z = [2,5,3]))
print(df1)
print(df2)
print(df3)
print(df4)
# 执行结果
x y
0 a 1
1 b 2
2 c 3
x z
0 a 2
1 b 5
2 d 3
g z
0 a 2
1 b 5
2 d 3
x y z
0 a 1 2
1 b 4 5
2 d 2 3
- 只保留左表的数据
python"># 只保留左表的所有数据
print("只保留左表的所有数据")
data_merge1 = pd.merge(left=df1,right=df2,how="left",on="x")
print(data_merge1)
# 执行结果
只保留左表的所有数据
x y z
0 a 1 2.0
1 b 2 5.0
2 c 3 NaN
- 只保留右表的所有数据
python"># 只保留右表的所有数据
print("只保留右表的所有数据")
data_merge2 = pd.merge(left=df1,right=df2,how="right",on="x")
print(data_merge2)
# 执行结果
只保留右表的所有数据
x y z
0 a 1.0 2
1 b 2.0 5
2 d NaN 3
- 只保留两个表中的公共部分信息
python"># 只保留两个表中的公共部分信息
data_merge3 = pd.merge(left=df1,right=df2,how="inner",on="x")
print(data_merge3)
# 执行结果
x y z
0 a 1 2
1 b 2 5
- 保留两个表中的所有信息
python"># 保留两个表中的所有信息
data_merge4 = pd.merge(left=df1,right=df2,how="outer",on="x")
print(data_merge4)
# 执行结果
x y z
0 a 1.0 2.0
1 b 2.0 5.0
2 c 3.0 NaN
3 d NaN 3.0
- on=[“x”,“y”]表示多列匹配
python"># on=["x","y"]表示多列匹配
data_merge5 = pd.merge(left=df1,right=df4,how="left",on=["x","y"])
print(data_merge5)
# 执行结果
x y z
0 a 1 2.0
1 b 2 NaN
2 c 3 NaN
- 根据不同的列名进行合并数据 left_on = “x”, right_on = “g”,即将列名为x和g的两组数据进行合并
python"># 根据不同的列名进行合并数据 left_on = "x", right_on = "g",即将列名为x和g的两组数据进行合并
data_merge6 = pd.merge(left=df1,right=df3,how="left",left_on="x",right_on="g")
print(data_merge6)
# 执行结果
x y g z
0 a 1 a 2.0
1 b 2 b 5.0
2 c 3 NaN NaN
- 在表合并中,两个表有一列同名,但是值不一样,合并时希望都保留,就可以用suffixes给每个表的重复列名增加后缀(如_1,_2)
python"># 在表合并中,两个表有一列同名,但是值不一样,合并时希望都保留,就可以用suffixes给每个表的重复列名增加后缀(如_1,_2)
data_merge7 = pd.merge(left=df1,right=df4,how="left",on="x",suffixes=["_1","_2"])
print(data_merge7)
# 执行结果
x y_1 y_2 z
0 a 1 1.0 2.0
1 b 2 4.0 5.0
2 c 3 NaN NaN
参考书籍
练习参考的书籍是Python数据可视化之美