📜  从列表创建 Pandas DataFrame(1)

📅  最后修改于: 2023-12-03 15:21:56.082000             🧑  作者: Mango

从列表创建 Pandas DataFrame

Pandas是Python中最流行的数据分析库之一,它提供了许多用于处理大规模数据集的工具和函数。其中最常用的数据结构是DataFrame,可以看做是Excel中的一张表格,DataFrame由行和列组成。在Pandas中,我们可以使用各种方式来创建DataFrame,其中最常用的方法之一是从列表创建。本文将介绍从列表创建Pandas DataFrame的方法。

例子

首先,让我们看一下如何从列表创建Pandas DataFrame。下面的代码创建了一个包含学生姓名、学生年龄和学生成绩的列表:

import pandas as pd

students = [
    ["Alice", 18, 90],
    ["Bob", 19, 80],
    ["Charlie", 20, 85]
]

df = pd.DataFrame(students, columns=["Name", "Age", "Grade"])

print(df)

运行结果是:

       Name  Age  Grade
0     Alice   18     90
1       Bob   19     80
2   Charlie   20     85

在这个例子中,我们首先导入了Pandas库,并创建了一个名为students的列表,其中包含了三个包含学生姓名、学生年龄和学生成绩的列表。接下来,我们使用pd.DataFrame函数将students列表转换为DataFrame,并将列名设置为Name、Age和Grade。最后,我们通过print函数输出了结果。

解释

让我们逐步解释上面的代码。

首先,我们导入了Pandas库:

import pandas as pd

然后,我们创建了一个名为students的列表,其中包含了三个包含学生姓名、学生年龄和学生成绩的列表:

students = [
    ["Alice", 18, 90],
    ["Bob", 19, 80],
    ["Charlie", 20, 85]
]

接下来,我们使用pd.DataFrame函数将students列表转换为DataFrame:

df = pd.DataFrame(students, columns=["Name", "Age", "Grade"])

在这个函数中,我们使用students列表作为第一个参数,用于创建DataFrame。另外,我们还传递了columns参数,该参数用于指定DataFrame的列名。在这个例子中,我们将三个列的名称设置为Name、Age和Grade。如果不指定columns参数,则Pandas会自动将第一行作为列名。

最后,我们通过print函数输出了结果:

print(df)
列表嵌套列表

如果我们的列表中包含了多个列表,例如每个学生还有一个包含主修课程和分数的列表,那么我们可以在创建DataFrame时添加额外的列。下面的代码演示了如何从列表嵌套列表创建Pandas DataFrame:

students = [
    ["Alice", 18, 90, ["Math", 95], ["Science", 85]],
    ["Bob", 19, 80, ["Math", 75], ["Science", 85]],
    ["Charlie", 20, 85, ["Math", 85], ["Science", 85]]
]

df = pd.DataFrame(students, columns=["Name", "Age", "Grade", "Major1", "Major2"])

print(df)

运行结果是:

       Name  Age  Grade     Major1        Major2
0     Alice   18     90  [Math, 95]  [Science, 85]
1       Bob   19     80  [Math, 75]  [Science, 85]
2   Charlie   20     85  [Math, 85]  [Science, 85]

在这个例子中,我们的students列表中包含了每个学生还有两个关于主修课程的列表。我们在创建DataFrame时添加了额外的列Major1和Major2。

列表嵌套字典

如果我们的列表中包含了多个字典,例如每个学生还有一个包含主修课程和分数的字典,同样可以从列表嵌套字典创建Pandas DataFrame。下面的代码演示了如何从列表嵌套字典创建Pandas DataFrame:

students = [
    {"name": "Alice", "age": 18, "grade": 90, "major1": {"name": "Math", "score": 95},
     "major2": {"name": "Science", "score": 85}},
    {"name": "Bob", "age": 19, "grade": 80, "major1": {"name": "Math", "score": 75},
     "major2": {"name": "Science", "score": 85}},
    {"name": "Charlie", "age": 20, "grade": 85, "major1": {"name": "Math", "score": 85},
     "major2": {"name": "Science", "score": 85}}
]

df = pd.DataFrame(students)

print(df)

运行结果是:

       name  age  grade      major1      major2
0     Alice   18     90  {'name': 'Math', 'score': 95}  {'name': 'Science', 'score': 85}
1       Bob   19     80  {'name': 'Math', 'score': 75}  {'name': 'Science', 'score': 85}
2   Charlie   20     85  {'name': 'Math', 'score': 85}  {'name': 'Science', 'score': 85}

在这个例子中,我们的students列表中包含了每个学生还有两个字典,一个关于主修课程1,一个关于主修课程2。在创建DataFrame时,我们不需要指定列名,因为每个字典的键名作为列名。如果某个字典中缺少某个键,则该键对应的列中的值为NaN。如果某个字典中有多余的键,则这些键和对应的值将被忽略。

结论

本文介绍了如何从列表、列表嵌套列表和列表嵌套字典创建Pandas DataFrame。实际上,我们还可以从CSV文件、Excel文件、数据库和网页等来源创建DataFrame。而Pandas强大的数据清洗和预处理函数可以让我们更加高效地处理数据。因此,Pandas是每一个数据科学家和Python开发者都需要掌握的库之一。