当我们需要从不同来源的数据源中组合数据时,可以使用 Merge
函数将它们连接到一起。在 Pandas 中, Merge
函数提供了一种非常强大的方式来将不同的数据集组合到一个单一的 Pandas 数据框架中。
下面是一份详细的 Merge
函数的使用指南,包含步骤和示例。
在使用 Pandas 的 Merge 函数之前,需要先导入 Pandas 库。
python
import pandas as pd
在执行 Merge 操作之前,需要创建要连接的数据框架。可以使用 Pandas 的 read_csv 函数或其它类似的函数来导入数据。
```python
# 创建第一个数据框架
df1 = pd.read_csv('data1.csv')
# 创建第二个数据框架
df2 = pd.read_csv('data2.csv')
```
在执行 Merge 操作之前,需要确定连接键。连接键是指要连接两个数据框架的列或多个列。通常,连接键列包含相同或相关的信息,例如 ID 或日期等。
python
# 确定连接键列
key_column = 'ID'
有多种方式可以使用 Merge 函数连接数据框架,具体取决于要连接的数据框架的类型。以下是其中的一些示例:
Inner Join
在执行内连接操作时,将只保留两个数据框架中都包含连接键的行。例如:
python
# 执行内连接操作
merged_data = pd.merge(df1, df2, on=key_column, how='inner')
Left Join
在执行左连接操作时,将保留第一个数据框架的所有行,同时将第二个数据框架中与连接键匹配的行添加到结果中。如果第二个数据框架中没有与连接键匹配的行,则将添加 NaN 值。例如:
python
# 执行左连接操作
merged_data = pd.merge(df1, df2, on=key_column, how='left')
Right Join
在执行右连接操作时,将保留第二个数据框架的所有行,同时将第一个数据框架中与连接键匹配的行添加到结果中。如果第一个数据框架中没有与连接键匹配的行,则将添加 NaN 值。例如:
python
# 执行右连接操作
merged_data = pd.merge(df1, df2, on=key_column, how='right')
Outer Join
在执行外连接操作时,将保留两个数据框架中所有行,将第一个数据框架中与连接键匹配的行与第二个数据框架中不匹配的行,以及第二个数据框架中与连接键匹配的行与第一个数据框架中不匹配的行添加到结果中。如果两个数据框架都没有与连接键匹配的行,则将添加 NaN 值。例如:
python
# 执行外连接操作
merged_data = pd.merge(df1, df2, on=key_column, how='outer')
最后,将合并后的数据框架保存到文件中,以备以后使用。
python
merged_data.to_csv('merged_data.csv', index=False)
假设有两个数据框架,分别包含员工的基本信息和薪资信息,我们需要将它们连接到一起,以便更好地分析数据。
# 导入 Pandas 库
import pandas as pd
# 创建第一个数据框架
df1 = pd.DataFrame({
'ID': ['001', '002', '003', '004', '005'],
'Name': ['John', 'Bill', 'Lucy', 'Sophia', 'Jack'],
'Department': ['Sales', 'HR', 'Engineering', 'Marketing', 'Finance']
})
# 创建第二个数据框架
df2 = pd.DataFrame({
'ID': ['001', '003', '005', '007', '009'],
'Salary': [6000, 8000, 10000, 5000, 7000],
'Bonus': [1000, 2000, 3000, 4000, 5000]
})
# 确定连接键列
key_column = 'ID'
# 执行左连接操作
merged_data = pd.merge(df1, df2, on=key_column, how='left')
# 保存合并后的数据框架
merged_data.to_csv('merged_data.csv', index=False)
执行上述示例代码后,将会在当前工作目录下创建一个名为 merged_data.csv
的文件,其中包含合并后的数据。
注:以上示例还有许多可以进行的操作,如筛选、绘图等,本篇只涵盖了最基础的融合操作及基本语法,具体操作可以以此为基础进行深入实践。
本文链接:http://task.lmcjl.com/news/17573.html