Python Pandas 数据整合
1、数据合并
数据合并是指将两个数据集合并为一个数据集的过程。数据集的列名和数据类型是否一致。如果不一致,需要进行数据类型转换或重命名。数据集的索引是否一致。如果不一致,需要进行索引重置或合并。数据集的缺失值处理。可以使用均值、中位数或众数填充缺失值,也可以删除缺失值。
1)
根据一个或多个键将不同的 DataFrame 合并在一起,类似于 SQL 中的 JOIN 操作。
相关文档:
import pandas as pd # 创建示例 DataFrame df1 = pd.DataFrame({'key': ['K0', 'K1', 'K2'], 'A': ['A0', 'A1', 'A2']}) df2 = pd.DataFrame({'key': ['K0', 'K1', 'K2'], 'B': ['B0', 'B1', 'B2']}) # 基本合并 将两个 DataFrame 根据一个或多个键合并。默认情况下,它执行的是内合并(inner join)。 merged_df = pd.merge(df1, df2, on='key') print("基本合并:\n", merged_df) # 内合并 返回两个 DataFrame 中都有键的行。 inner_merged_df = pd.merge(df1, df2, on='key', how='inner') print("内合并:\n", inner_merged_df) # 外合并 返回两个 DataFrame 中任一存在键的行。 outer_merged_df = pd.merge(df1, df2, on='key', how='outer') print("外合并:\n", outer_merged_df) # 左合并 返回左侧 DataFrame 中的所有行,以及右侧 DataFrame 中的匹配行。 left_merged_df = pd.merge(df1, df2, on='key', how='left') print("左合并:\n", left_merged_df) # 右合并 返回右侧 DataFrame 中的所有行,以及左侧 DataFrame 中的匹配行。 right_merged_df = pd.merge(df1, df2, on='key', how='right') print("右合并:\n", right_merged_df)
2)concat()
concat()
函数是一种非常灵活的数据拼接工具,用于沿指定轴将多个 pandas 对象(如 Series 和 DataFrame)堆叠在一起。这个函数对于组合具有相同或相似结构的数据集特别有用。
pandas.concat(objs, axis=0, join=‘outer’, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True)
参数 |
描述 |
objs |
序列或映射。如果传递了映射,则排序的键将用作键参数, 除非传递,在这种情况下将选择值。 任何 除非它们都是 |
axis |
|
join |
|
ignore_index |
则不要沿连接轴使用索引值。结果轴将标记为 0, …, n - 1。 如要连接对象,而连接轴没有有意义的索引信息, 这将非常有用。请注意,连接中仍然尊重其他轴上的索引值。 |
keys |
键序列,默认 元组。使用传递的键作为最外层构建层次索引。 |
levels |
序列列表,默认 否则,它们将从密钥中推断出来。 |
names |
默认 |
verify_integrity |
bool 布尔值,默认为 检查新的连接轴是否包含重复项。 相对于实际的数据连接,这可能非常昂贵。 |
sort |
bool 布尔值,默认为 则对非连接轴进行排序。这在 join=‘inner’ 时无效, 它已经保留了非串联轴的顺序。在 1.0.0 版更改: 默认情况下更改为不排序。 |
copy |
则不要不必要地复制数据。 |
concat()
函数中,默认情况下沿着轴 0(行)进行垂直堆叠,而设置 axis=1 实现水平堆叠(并排放置数据集),同时提供选项以在堆叠过程中保留原始索引(ignore_index=False
)或重置索引(ignore_index=True
),并允许在拼接的对象列不完全对齐时选择外连接(保留所有列)或内连接(仅保留共同列)
import pandas as pd # 创建示例 DataFrame df1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']}) df2 = pd.DataFrame({'A': ['A2', 'A3'], 'C': ['C2', 'C3']}) # 垂直堆叠 vertical_concat = pd.concat([df1, df2]) # 水平堆叠 horizontal_concat = pd.concat([df1, df2], axis=1) # 重置索引 reset_index_concat = pd.concat([df1, df2], ignore_index=True) # 外连接和内连接 outer_concat = pd.concat([df1, df2], join='outer') inner_concat = pd.concat([df1, df2], join='inner') print("垂直堆叠:\n", vertical_concat) print("水平堆叠:\n", horizontal_concat) print("重置索引:\n", reset_index_concat) print("外连接:\n", outer_concat) print("内连接:\n", inner_concat)
2、数据连接
使用 join()
方法将不同的 DataFrame
根据索引连接在一起。根据索引或指定的列合并数据集,对于数据分析和处理非常重要。数据连接是指将两个数据集合并为一个数据集的过程,但与数据合并不同的是,数据连接是基于索引的匹配,而不是基于列的匹配。
参考文档:
使用示例:
3、分组与聚合
分组与聚合是数据整合的关键部分,主要涉及使用 groupby()
方法对数据进行分组,然后应用聚合函数来计算统计信息或其他操作。对于理解数据集的特定子集和进行复杂的数据分析非常重要。Pandas 的分组与聚合对于从数据中提取有意义的信息非常有用。
参考文档:
使用示例: