📅  最后修改于: 2023-12-03 15:21:56.082000             🧑  作者: Mango
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开发者都需要掌握的库之一。