Pandas Concat实战:案例分析与代码演示 – wiki基地

Pandas Concat 实战:案例分析与代码演示

Pandas 的 concat 函数是数据处理中常用的工具,它允许你沿着特定轴将多个 Pandas 对象(例如 Series 和 DataFrame)连接在一起。本文将深入探讨 concat 函数的各种用法,并结合实际案例进行代码演示,帮助你掌握这个强大的工具。

一、concat 函数基础

concat 函数的主要功能是连接 Pandas 对象。其核心参数如下:

  • objs: 需要连接的 Pandas 对象序列或字典。可以是 Series、DataFrame 或 Panel(已弃用)。
  • axis: 连接的轴。0 表示沿着行(索引)连接,1 表示沿着列(列名)连接。默认为 0。
  • join: 连接方式。’inner’ 表示取交集,’outer’ 表示取并集。默认为 ‘outer’。
  • ignore_index: 是否忽略原始索引。True 表示忽略并重新创建索引,False 表示保留原始索引。默认为 False。
  • keys: 为连接后的对象添加多级索引。

二、案例分析与代码演示

我们将通过几个案例来演示 concat 函数的不同用法。

案例一:连接 Series

假设我们有两个 Series,分别记录了不同城市的温度:

“`python
import pandas as pd

s1 = pd.Series([20, 22, 25], index=[‘北京’, ‘上海’, ‘广州’])
s2 = pd.Series([18, 20, 23], index=[‘武汉’, ‘南京’, ‘成都’])

沿着行连接

s_concat_row = pd.concat([s1, s2])
print(“沿着行连接:\n”, s_concat_row)

沿着列连接

s_concat_col = pd.concat([s1, s2], axis=1)
print(“\n沿着列连接:\n”, s_concat_col)

使用 keys 添加多级索引

s_concat_keys = pd.concat([s1, s2], keys=[‘温度1’, ‘温度2’])
print(“\n使用 keys 添加多级索引:\n”, s_concat_keys)
“`

案例二:连接 DataFrame

假设我们有两个 DataFrame,分别记录了不同城市的温度和湿度:

“`python
df1 = pd.DataFrame({‘温度’: [20, 22, 25], ‘湿度’: [60, 70, 80]}, index=[‘北京’, ‘上海’, ‘广州’])
df2 = pd.DataFrame({‘温度’: [18, 20, 23], ‘湿度’: [50, 60, 70]}, index=[‘武汉’, ‘南京’, ‘成都’])

沿着行连接

df_concat_row = pd.concat([df1, df2])
print(“沿着行连接:\n”, df_concat_row)

沿着列连接,outer join

df_concat_col_outer = pd.concat([df1, df2], axis=1)
print(“\n沿着列连接 (outer join):\n”, df_concat_col_outer)

df3 = pd.DataFrame({‘风速’: [5, 10, 15]}, index=[‘北京’, ‘上海’, ‘广州’])

沿着列连接,inner join

df_concat_col_inner = pd.concat([df1, df3], axis=1, join=’inner’)
print(“\n沿着列连接 (inner join):\n”, df_concat_col_inner)

使用 keys 添加多级索引

df_concat_keys = pd.concat([df1, df2], keys=[‘城市1’, ‘城市2’])
print(“\n使用 keys 添加多级索引:\n”, df_concat_keys)

忽略原始索引

df_concat_ignore = pd.concat([df1, df2], ignore_index=True)
print(“\n忽略原始索引:\n”, df_concat_ignore)

“`

案例三:连接不同列的 DataFrame

假设我们有两个 DataFrame,列名不同:

“`python
df4 = pd.DataFrame({‘温度’: [26, 28, 30], ‘湿度’: [65, 75, 85]}, index=[‘深圳’, ‘杭州’, ‘厦门’])
df5 = pd.DataFrame({‘气压’: [1010, 1012, 1015], ‘风向’: [‘东’, ‘南’, ‘西’]}, index=[‘深圳’, ‘杭州’, ‘厦门’])

沿着列连接,outer join

df_concat_diff_col = pd.concat([df4, df5], axis=1)
print(“\n连接不同列的 DataFrame (outer join):\n”, df_concat_diff_col)

“`

案例四:连接字典中的 DataFrame

“`python
dfs = {‘group1’: df1, ‘group2’: df2}
df_concat_dict = pd.concat(dfs)
print(“\n连接字典中的 DataFrame:\n”, df_concat_dict)

df_concat_dict_keys = pd.concat(dfs, axis=1)
print(“\n连接字典中的 DataFrame (axis=1):\n”, df_concat_dict_keys)

“`

三、concat 函数与其他函数的比较

concat 函数与 appendmergejoin 函数都有连接数据的功能,但它们之间存在一些区别:

  • append: 主要用于在 DataFrame 的末尾添加行,功能较为单一。concat 则更灵活,可以沿着不同轴连接多个对象。
  • mergejoin: 基于共同的列或索引连接 DataFrame,类似于 SQL 中的 JOIN 操作。concat 则不需要共同的列或索引,直接将对象连接在一起。

四、concat 函数的应用场景

concat 函数在实际数据处理中应用广泛,例如:

  • 合并来自不同来源的数据:例如,将多个 CSV 文件的数据合并成一个 DataFrame。
  • 添加新的数据行或列:例如,将新的测量数据添加到已有的 DataFrame 中。
  • 构建时间序列数据:例如,将不同时间段的股票价格数据连接成一个完整的时间序列。

五、总结

concat 函数是 Pandas 中一个功能强大的工具,可以灵活地连接各种 Pandas 对象。本文通过多个案例详细讲解了 concat 函数的不同用法,并与其他相关函数进行了比较。希望本文能够帮助你更好地理解和应用 concat 函数,提升你的数据处理能力。 在实际应用中,选择合适的参数和连接方式,可以高效地处理各种数据连接需求。 记住灵活运用 joinkeysignore_index 等参数,可以实现更精细的数据操作。 同时,结合其他 Pandas 函数,例如 groupbypivot_table 等,可以实现更复杂的数据分析和处理流程。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部