《Pandas 简易速速上手小册》第5章:Pandas 数据合并与重塑(2024 最新版)

简介: 《Pandas 简易速速上手小册》第5章:Pandas 数据合并与重塑(2024 最新版)

c8d8ed47f9a1368db458c1960ee26c7.png

5.1 数据合并:Concatenate 和 Merge

合并数据是数据分析中的一项基本技能,它允许我们将不同来源的数据集整合在一起,以进行更全面的分析。

5.1.1 基础知识

  1. Concatenate: 使用 pd.concat() 可以沿着一条轴将多个对象堆叠到一起。适用于结构相同的数据框架合并。
  2. Merge: 使用 pd.merge() 根据一个或多个键将不同的数据集的行连接起来。类似于 SQL 中的 JOIN 操作。

5.1.2 重点案例:客户订单数据合并

假设你有两个数据集,一个包含客户的基本信息,另一个包含客户的订单信息,你需要将这两个数据集合并在一起。

数据准备

import pandas as pd
# 示例客户基本信息数据
customers_data = {
    'customer_id': [1, 2, 3],
    'name': ['Alice', 'Bob', 'Charlie']
}
customers_df = pd.DataFrame(customers_data)
# 示例订单信息数据
orders_data = {
    'order_id': ['A001', 'A002', 'A003'],
    'customer_id': [3, 1, 2],
    'order_value': [200, 150, 50]
}
orders_df = pd.DataFrame(orders_data)

合并数据

# 合并客户信息和订单信息
merged_df = pd.merge(customers_df, orders_df, on='customer_id')

5.1.3 拓展案例一:产品目录和销售数据合并

假设你有一个产品目录数据集和一个销售记录数据集,你需要将它们合并以分析每个产品的销售情况。

数据准备

# 示例产品目录数据
catalog_data = {
    'product_id': [101, 102, 103],
    'product_name': ['Product A', 'Product B', 'Product C']
}
catalog_df = pd.DataFrame(catalog_data)
# 示例销售记录数据
sales_data = {
    'sale_id': ['S001', 'S002', 'S003'],
    'product_id': [102, 103, 101],
    'units_sold': [3, 2, 5]
}
sales_df = pd.DataFrame(sales_data)

合并数据

# 合并产品目录和销售记录
merged_sales_df = pd.merge(catalog_df, sales_df, on='product_id')

5.1.4 拓展案例二:员工信息和部门数据合并

如果你有员工信息的数据集和部门信息的数据集,需要合并它们来分析每个部门的员工分布。

数据准备

# 示例员工信息数据
employees_data = {
    'employee_id': ['E01', 'E02', 'E03'],
    'employee_name': ['Emily', 'Dan', 'Sarah'],
    'department_id': ['D01', 'D02', 'D01']
}
employees_df = pd.DataFrame(employees_data)
# 示例部门信息数据
departments_data = {
    'department_id': ['D01', 'D02'],
    'department_name': ['HR', 'Tech']
}
departments_df = pd.DataFrame(departments_data)

合并数据

# 合并员工信息和部门信息
merged_employees_df = pd.merge(employees_df, departments_df, on='department_id')

通过这些案例,我们展示了如何使用 Pandasconcat()merge() 方法来合并数据。这些操作是数据预处理和分析中不可或缺的步骤,无论是合并客户订单数据、产品销售数据还是员工部门数据。


5.2 数据透视和重塑

数据透视和重塑是数据分析中的强大工具,允许我们重新组织数据,以便更好地分析和可视化。

5.2.1 基础知识

  1. Pivot: 使用 pivot() 方法可以重塑数据,并根据给定的索引/列值重新组织数据。
  2. Melt: melt() 方法用于将宽格式数据转换为长格式数据,是 pivot() 的反向操作。
  3. Pivot Table: pivot_table()pivot() 的扩展,支持对数据进行聚合。

5.2.2 重点案例:销售数据透视

假设你有一份销售数据,包含多个产品在不同月份的销售情况,你需要将数据透视,以便分析每个产品的销售趋势。

数据准备

import pandas as pd
# 示例销售数据
sales_data = {
    'month': ['January', 'February', 'January', 'February'],
    'product': ['A', 'A', 'B', 'B'],
    'sales': [100, 150, 200, 250]
}
sales_df = pd.DataFrame(sales_data)

数据透视

# 将数据透视,以月份为列展示每个产品的销售情况
pivot_sales_df = sales_df.pivot(index='product', columns='month', values='sales')

5.2.3 拓展案例一:员工工时记录重塑

处理一份员工每日工时的记录,需要将数据从长格式转换为宽格式,以便更好地分析员工的工作时间。

数据准备

# 示例员工工时数据
time_data = {
    'employee': ['Alice', 'Bob', 'Alice', 'Bob'],
    'date': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02'],
    'hours_worked': [8, 9, 7, 8]
}
time_df = pd.DataFrame(time_data)

重塑数据

# 将数据重塑为宽格式,显示每个员工每天的工时
pivot_time_df = time_df.pivot(index='date', columns='employee', values='hours_worked')

5.2.4 拓展案例二:客户反馈调查结果聚合

假设你有一份客户反馈调查的数据,包含客户对不同问题的评分,需要对数据进行聚合以分析平均评分。

数据准备

# 示例客户反馈数据
feedback_data = {
    'customer_id': [1, 1, 2, 2],
    'question': ['Service', 'Quality', 'Service', 'Quality'],
    'rating': [4, 5, 3, 4]
}
feedback_df = pd.DataFrame(feedback_data)

创建数据透视表

# 创建数据透视表,计算每个问题的平均评分
pivot_feedback_df = feedback_df.pivot_table(index='question', values='rating', aggfunc='mean')

通过这些案例,我们展示了如何使用 Pandas 的数据透视和重塑功能来改变数据的组织方式。无论是分析销售趋势、员工工时还是客户反馈,这些技巧都能帮助你从数据中获得更深入的洞见。


5.3 分组与聚合操作

分组与聚合是数据分析中的核心操作,它们允许我们对数据集进行分段,并对每个段应用汇总统计,以便进行比较和模式识别。

5.3.1 基础知识

  1. GroupBy: 使用 groupby() 方法可以根据某个或某些列的值将数据分组。这对于分析子集内的统计数据非常有用。
  2. 聚合函数: 一旦数据被分组,就可以对分组应用多种聚合函数,如 sum()mean()max()min() 等,来计算统计数据。
  3. Transform: transform() 方法可以用来对分组数据应用一个函数,而且返回的对象与原始数据大小相同。
  4. Filter: filter() 方法允许你根据布尔条件过滤数据,对于去除或保留某些组非常有用。

5.3.2 重点案例:电商销售数据分析

假设你正在处理一份电商平台的销售数据,需要分析每个产品类别的总销售额。

数据准备

import pandas as pd
# 示例电商销售数据
ecommerce_data = {
    'category': ['Electronics', 'Clothing', 'Home & Garden', 'Electronics', 'Clothing'],
    'sales': [200, 150, 300, 250, 100]
}
ecommerce_df = pd.DataFrame(ecommerce_data)

分组与聚合

# 按产品类别分组并计算总销售额
category_sales = ecommerce_df.groupby('category').sum()

5.3.3 拓展案例一:员工绩效评分统计

处理一份员工绩效评分的数据,需要计算每个部门的平均绩效评分。

数据准备

# 示例员工绩效评分数据
performance_data = {
    'department': ['HR', 'Tech', 'HR', 'Tech', 'HR'],
    'score': [3, 4, 2, 5, 4]
}
performance_df = pd.DataFrame(performance_data)

计算平均绩效评分

# 按部门分组并计算平均绩效评分
department_performance = performance_df.groupby('department').mean()

5.3.4 拓展案例二:客户反馈分析

假设你有一份关于客户服务满意度的调查数据,需要过滤出平均评分低于3的服务类型。

数据准备

# 示例客户服务满意度数据
feedback_data = {
    'service_type': ['Delivery', 'Product Quality', 'Customer Support', 'Delivery', 'Product Quality'],
    'rating': [2, 5, 3, 1, 4]
}
feedback_df = pd.DataFrame(feedback_data)

过滤服务类型

# 计算服务类型的平均评分并过滤出平均评分低于3的类型
low_rating_service = feedback_df.groupby('service_type').filter(lambda x: x['rating'].mean() < 3)

通过这些案例,我们演示了如何在 Pandas 中进行分组与聚合操作,以及如何使用这些操作对数据进行分析。无论是处理电商销售数据、员工绩效评分,还是客户反馈,分组与聚合都是获取洞见的强大工具。

目录
相关文章
|
16天前
|
Python
|
16天前
|
Python
|
16天前
|
Python
Pandas 常用函数-数据合并
Pandas 常用函数-数据合并
31 1
|
16天前
|
索引 Python
Pandas 常用函数-数据排序
10月更文挑战第28天
8 1
|
17天前
|
Python
Pandas 常用函数-查看数据
Pandas 常用函数-查看数据
14 2
|
17天前
|
SQL JSON 数据库
Pandas 常用函数-读取数据
Pandas 常用函数-读取数据
13 2
|
21天前
|
Python
通过Pandas库处理股票收盘价数据,识别最近一次死叉后未出现金叉的具体位置的方法
在金融分析领域,&quot;死叉&quot;指的是短期移动平均线(如MA5)下穿长期移动平均线(如MA10),而&quot;金叉&quot;则相反。本文介绍了一种利用Python编程语言,通过Pandas库处理股票收盘价数据,识别最近一次死叉后未出现金叉的具体位置的方法。该方法首先计算两种移动平均线,接着确定它们的交叉点,最后检查并输出最近一次死叉及其后是否形成了金叉。此技术广泛应用于股市趋势分析。
38 2
|
16天前
|
Python
Pandas 常用函数-数据选择和过滤
Pandas 常用函数-数据选择和过滤
10 0
|
1月前
|
数据可视化 数据挖掘 数据处理
模型预测笔记(四):pandas_profiling生成数据报告
本文介绍了pandas_profiling库,它是一个Python工具,用于自动生成包含多种统计指标和可视化的详细HTML数据报告,支持大型数据集并允许自定义配置。安装命令为`pip install pandas_profiling`,使用示例代码`pfr = pandas_profiling.ProfileReport(data_train); pfr.to_file("./example.html")`。
48 1
|
2月前
|
索引 Python
使用 pandas 对数据进行移动计算
使用 pandas 对数据进行移动计算
23 0
下一篇
无影云桌面