📜  展开字典 pandas - Python (1)

📅  最后修改于: 2023-12-03 14:53:57.439000             🧑  作者: Mango

展开字典 pandas - Python

Pandas 是 Python 中用于数据处理的一个常用库,它可以方便地进行数据清洗、转换和分析。在 Pandas 中,我们经常会处理一些复杂的数据结构,比如嵌套的字典。在处理这些字典时,我们可能需要将它们展开为 Pandas DataFrame 表格,以便更加方便地进行分析。

本文将介绍如何使用 Pandas 将嵌套字典展开为 DataFrame。我们将通过一个实际的例子来介绍展开字典的过程。

示例字典

我们先来看一个示例字典,它包含了若干个学生的个人信息和课程信息,其中课程信息是嵌套在个人信息中的:

students = [
    {
        'name': 'Alice',
        'age': 20,
        'courses': [
            {'name': 'Math', 'score': 90},
            {'name': 'Science', 'score': 80}
        ]
    },
    {
        'name': 'Bob',
        'age': 21,
        'courses': [
            {'name': 'Math', 'score': 85},
            {'name': 'Science', 'score': 95},
            {'name': 'English', 'score': 90}
        ]
    },
    {
        'name': 'Charlie',
        'age': 22,
        'courses': [
            {'name': 'Math', 'score': 70},
            {'name': 'English', 'score': 80}
        ]
    }
]

我们的目标是将上面的字典展开为一个 Pandas DataFrame 表格,其中每一行表示一个学生和一门课程,包含学生的个人信息和该门课程的信息,如下所示:

    name    age course_name  score
0  Alice    20        Math     90
1  Alice    20     Science     80
2    Bob    21        Math     85
3    Bob    21     Science     95
4    Bob    21     English     90
5    Joe    22        Math     70
6    Joe    22     English     80
展开字典的方式

为了将上述示例字典展开为 Pandas DataFrame,我们需要首先理解如何处理嵌套字典。通常情况下,我们可以使用嵌套循环来遍历所有的键值对。在本例中,我们可以使用两个嵌套的 for 循环,分别遍历每个学生和该学生所上的课程:

data = []
for student in students:
    name = student['name']
    age = student['age']
    for course in student['courses']:
        course_name = course['name']
        score = course['score']
        data.append([name, age, course_name, score])

在上面的代码中,我们创建了一个空列表 data 来存储处理后的数据。在内层循环中,我们提取了学生的名字和年龄、课程的名字和分数,并将它们作为一行数据添加到 data 列表中。

接着,我们可以将 data 列表转换为 Pandas DataFrame,如下所示:

import pandas as pd

columns = ['name', 'age', 'course_name', 'score']
df = pd.DataFrame(data, columns=columns)

在上面的代码中,我们首先创建了一个列名列表 columns,其中包含了需要展现的数据列。接着,我们使用 pd.DataFrame() 函数将 data 列表转换为了 Pandas DataFrame,并指定 columns 参数来设置列名。

最后,我们可以打印出 DataFrame 表格,如下所示:

print(df)

打印结果如下:

    name  age course_name  score
0  Alice    20        Math     90
1  Alice    20     Science     80
2    Bob    21        Math     85
3    Bob    21     Science     95
4    Bob    21     English     90
5  Charlie   22        Math     70
6  Charlie   22     English     80
总结

在本文中,我们介绍了如何使用 Pandas 将嵌套字典展开为 Pandas DataFrame 表格,并通过一个实际的例子演示了展开字典的过程。展开嵌套字典是一个常见的数据处理步骤,特别是在处理复杂的数据结构时。通过本文的介绍,相信读者能够掌握如何使用 Pandas 进行展开字典的操作,以便更加高效地处理和分析数据。