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
函数与 append
、merge
和 join
函数都有连接数据的功能,但它们之间存在一些区别:
append
: 主要用于在 DataFrame 的末尾添加行,功能较为单一。concat
则更灵活,可以沿着不同轴连接多个对象。merge
和join
: 基于共同的列或索引连接 DataFrame,类似于 SQL 中的 JOIN 操作。concat
则不需要共同的列或索引,直接将对象连接在一起。
四、concat
函数的应用场景
concat
函数在实际数据处理中应用广泛,例如:
- 合并来自不同来源的数据:例如,将多个 CSV 文件的数据合并成一个 DataFrame。
- 添加新的数据行或列:例如,将新的测量数据添加到已有的 DataFrame 中。
- 构建时间序列数据:例如,将不同时间段的股票价格数据连接成一个完整的时间序列。
五、总结
concat
函数是 Pandas 中一个功能强大的工具,可以灵活地连接各种 Pandas 对象。本文通过多个案例详细讲解了 concat
函数的不同用法,并与其他相关函数进行了比较。希望本文能够帮助你更好地理解和应用 concat
函数,提升你的数据处理能力。 在实际应用中,选择合适的参数和连接方式,可以高效地处理各种数据连接需求。 记住灵活运用 join
,keys
,ignore_index
等参数,可以实现更精细的数据操作。 同时,结合其他 Pandas 函数,例如 groupby
,pivot_table
等,可以实现更复杂的数据分析和处理流程。