python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > pandas合并数据

pandas数据探索之合并数据示例详解

作者:海狸大大

这篇文章主要为大家介绍了pandas数据探索之合并数据示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

用pandas探索你的数据-合并数据

在数据处理和分析中,数据的合并是一项关键任务。Pandas 提供了丰富的工具来处理不同来源的数据,并将它们合并成一个更大的数据集。在这篇文章中,我们将深入探讨 Pandas 中两个重要的数据合并函数:pd.concat() 和 pd.merge()

首先,我们将通过一系列的步骤和示例来学习如何使用这些函数。然后,我们将深入解释每个函数的详细用法,包括参数和常见的用例。无论您是数据科学家、数据分析师还是对数据处理感兴趣的任何人,这篇文章都将为您提供处理和合并数据的实用技能。

探索虚拟姓名数据

步骤1 导入必要的库

# 运行以下代码
import numpy as np
import pandas as pd

步骤2 按照如下的元数据内容创建数据框

# 运行以下代码
raw_data_1 = {
        'subject_id': ['1', '2', '3', '4', '5'],
        'first_name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 
        'last_name': ['Anderson', 'Ackerman', 'Ali', 'Aoni', 'Atiches']}
raw_data_2 = {
        'subject_id': ['4', '5', '6', '7', '8'],
        'first_name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 
        'last_name': ['Bonder', 'Black', 'Balwner', 'Brice', 'Btisan']}
raw_data_3 = {
        'subject_id': ['1', '2', '3', '4', '5', '7', '8', '9', '10', '11'],
        'test_id': [51, 15, 15, 61, 16, 14, 15, 1, 61, 16]}

步骤3 将上述的数据框分别命名为data1, data2, data3

# 运行以下代码
data1 = pd.DataFrame(raw_data_1, columns = ['subject_id', 'first_name', 'last_name'])
data2 = pd.DataFrame(raw_data_2, columns = ['subject_id', 'first_name', 'last_name'])
data3 = pd.DataFrame(raw_data_3, columns = ['subject_id','test_id'])

步骤4 将data1和data2两个数据框按照行的维度进行合并

命名为all_data

# 运行以下代码
all_data = pd.concat([data1, data2])
all_data

style scoped

.dataframe tbody tr th:only-of-type {
    vertical-align: middle;
}
.dataframe tbody tr th {
    vertical-align: top;
}
.dataframe thead th {
    text-align: right;
}
subject_idfirst_namelast_name
01AlexAnderson
12AmyAckerman
23AllenAli
34AliceAoni
45AyoungAtiches
04BillyBonder
15BrianBlack
26BranBalwner
37BryceBrice
48BettyBtisan

步骤5 将data1和data2两个数据框按照列的维度进行合并

命名为all_data_col

# 运行以下代码
all_data_col = pd.concat([data1, data2], axis = 1)
all_data_col

style scoped

.dataframe tbody tr th:only-of-type {
    vertical-align: middle;
}
.dataframe tbody tr th {
    vertical-align: top;
}
.dataframe thead th {
    text-align: right;
}
subject_idfirst_namelast_namesubject_idfirst_namelast_name
01AlexAnderson4BillyBonder
12AmyAckerman5BrianBlack
23AllenAli6BranBalwner
34AliceAoni7BryceBrice
45AyoungAtiches8BettyBtisan

步骤6 打印data3

# 运行以下代码
data3

style scoped

.dataframe tbody tr th:only-of-type {
    vertical-align: middle;
}
.dataframe tbody tr th {
    vertical-align: top;
}
.dataframe thead th {
    text-align: right;
}
subject_idtest_id
0151
1215
2315
3461
4516
5714
6815
791
81061
91116

步骤7 按照subject_id的值对all_data和data3作合并

# 运行以下代码
pd.merge(all_data, data3, on='subject_id')

style scoped

.dataframe tbody tr th:only-of-type {
    vertical-align: middle;
}
.dataframe tbody tr th {
    vertical-align: top;
}
.dataframe thead th {
    text-align: right;
}
subject_idfirst_namelast_nametest_id
01AlexAnderson51
12AmyAckerman15
23AllenAli15
34AliceAoni61
44BillyBonder61
55AyoungAtiches16
65BrianBlack16
77BryceBrice14
88BettyBtisan15

步骤8 对data1和data2按照subject_id作连接

# 运行以下代码
pd.merge(data1, data2, on='subject_id', how='inner')

style scoped

.dataframe tbody tr th:only-of-type {
    vertical-align: middle;
}
.dataframe tbody tr th {
    vertical-align: top;
}
.dataframe thead th {
    text-align: right;
}
subject_idfirst_name_xlast_name_xfirst_name_ylast_name_y
04AliceAoniBillyBonder
15AyoungAtichesBrianBlack

步骤9 找到 data1 和 data2 合并之后的所有匹配结果

# 运行以下代码
pd.merge(data1, data2, on='subject_id', how='outer')

style scoped

.dataframe tbody tr th:only-of-type {
    vertical-align: middle;
}
.dataframe tbody tr th {
    vertical-align: top;
}
.dataframe thead th {
    text-align: right;
}
subject_idfirst_name_xlast_name_xfirst_name_ylast_name_y
01AlexAndersonNaNNaN
12AmyAckermanNaNNaN
23AllenAliNaNNaN
34AliceAoniBillyBonder
45AyoungAtichesBrianBlack
56NaNNaNBranBalwner
67NaNNaNBryceBrice
78NaNNaNBettyBtisan

总结

在本练习中,我们使用Pandas进行了合并操作,主要涉及以下要点:

pd.concat() 是 Pandas 中用于合并数据的函数之一,它通常用于按行或列方向将多个数据框连接在一起。以下是对 pd.concat() 函数的详细解释:

pd.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True)

参数说明:

pd.concat() 返回一个合并后的新数据框,不会修改原始数据框。

使用示例:

合并两个数据框按行方向(默认方式):

result = pd.concat([df1, df2])

合并两个数据框按列方向:

result = pd.concat([df1, df2], axis=1)

创建多层索引:

result = pd.concat([df1, df2], keys=['df1', 'df2'])

重置索引:

result = pd.concat([df1, df2], ignore_index=True)

pd.concat() 是一个非常有用的函数,用于在数据处理中将多个数据框合并在一起,以便进行分析和操作。

pd.merge() 是 Pandas 中用于合并数据的函数之一,它通常用于将两个数据框(DataFrame)按照指定的列或索引进行连接操作。以下是对 pd.merge() 函数的详细解释:

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)

参数说明:

pd.merge() 返回一个合并后的新数据框,不会修改原始数据框。

使用示例:

内连接两个数据框,使用相同列名连接:

result = pd.merge(left_df, right_df, on='key_column', how='inner')

左连接两个数据框,指定左侧数据框的连接列和右侧数据框的连接列:

result = pd.merge(left_df, right_df, left_on='left_key', right_on='right_key', how='left')

连接时使用左侧数据框的索引:

result = pd.merge(left_df, right_df, left_index=True, right_on='key_column', how='inner')

添加后缀以区分相同列名的列:

result = pd.merge(left_df, right_df, on='key_column', suffixes=('_left', '_right'))

pd.merge() 是一个强大的数据连接工具,可用于合并不同来源的数据,进行数据分析和处理。根据不同的连接需求,可以选择不同的连接方式和参数。

以上就是pandas数据探索之合并数据示例详解的详细内容,更多关于pandas合并数据的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文