第一章 数据合并基础
1.1 什么是数据合并
数据合并是将多个数据集按照某种规则组合成一个新数据集的过程。在数据分析中,我们经常需要从多个数据源获取信息并将它们合并在一起进行分析。
- merge:基于共同列进行合并(类似SQL的JOIN操作)
- concat:沿着指定轴进行连接
- join:基于索引进行合并
💡 数据合并是数据处理中非常重要的操作,掌握它可以让你灵活处理来自不同数据源的数据。
1.2 合并类型
常见的合并类型包括:
# 内连接 - 只保留两个表都有的行 pd.merge(df1, df2, on='key', how='inner') # 左连接 - 保留左表所有行 pd.merge(df1, df2, on='key', how='left') # 右连接 - 保留右表所有行 pd.merge(df1, df2, on='key', how='right') # 外连接 - 保留两个表的所有行 pd.merge(df1, df2, on='key', how='outer')
第二章 merge操作
2.1 基础merge
merge是最常用的数据合并方法,可以根据一个或多个键将DataFrame连接在一起。
import pandas as pd
# 创建两个DataFrame
df1 = pd.DataFrame({
'id': [1, 2, 3, 4],
'name': ['张三', '李四', '王五', '赵六'],
'age': [25, 30, 35, 40]
})
df2 = pd.DataFrame({
'id': [1, 2, 3, 5],
'city': ['北京', '上海', '广州', '深圳'],
'salary': [8000, 10000, 9000, 12000]
})
# 内连接
result = pd.merge(df1, df2, on='id')
print(result)
2.2 不同键名的合并
当两个DataFrame的键名不同时,可以分别指定左右键:
# 键名不同时的合并
df1 = pd.DataFrame({
'user_id': [1, 2, 3],
'name': ['张三', '李四', '王五']
})
df2 = pd.DataFrame({
'id': [1, 2, 4],
'score': [85, 90, 78]
})
result = pd.merge(df1, df2, left_on='user_id', right_on='id')
print(result)
第三章 concat操作
3.1 concat基础
concat用于沿着指定轴连接多个DataFrame。
import pandas as pd
# 创建两个DataFrame
df_a = pd.DataFrame({
'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']
})
df_b = pd.DataFrame({
'A': ['A3', 'A4', 'A5'],
'B': ['B3', 'B4', 'B5']
})
# 纵向合并
result = pd.concat([df_a, df_b], ignore_index=True)
print("纵向合并:")
print(result)
# 横向合并(列方向)
df_c = pd.DataFrame({
'city': ['北京', '上海', '广州', '深圳']
})
result_h = pd.concat([result, df_c], axis=1)
print("\n横向合并:")
print(result_h)
第四章 数据合并实战
4.1 综合示例
💻 在线代码编辑器
输入 Python 代码后点击运行按钮执行
练习题(共5题)
练习 1:基础merge操作
使用merge合并两个DataFrame。
练习 2:左连接
使用左连接保留所有左表数据。
练习 3:concat纵向合并
使用concat进行纵向合并。
练习 4:concat横向合并
使用concat进行横向合并。
练习 5:多表合并综合练习
综合使用merge合并多个表。
测试题(共 5 题,满分 100 分)
问题 1 / 5
以下哪种合并方式会保留左表的所有行?
问题 2 / 5
concat默认是沿着哪个轴进行合并?
问题 3 / 5
merge方法中,当两个DataFrame的键名不同时,应该使用哪个参数?
问题 4 / 5
外连接会保留哪些行?
问题 5 / 5
以下哪个方法是基于索引进行合并的?
作业提交
📝 数据合并作业
请完成以下数据合并任务:
- 1. 创建订单、客户、产品三个DataFrame
- 2. 使用merge合并订单和客户数据
- 3. 再合并产品数据
- 4. 统计每个客户的总消费金额
💻 作业代码提交