将字典转换为Pandas Dataframe 是数据科学中一项非常常用的方法,这里提供详细的攻略,包括基本方法和实际示例。
基本方法
将字典转换为 Pandas Dataframe,可以使用 Pandas 提供的函数 pd.DataFrame()
。该函数有两个主要用法:
1. 将字典的键值对作为行(row)
在这种情况下,字典的键将成为 Pandas Dataframe 的“行索引”(row index),值将成为 Dataframe 的“行(row)”。示例代码如下:
import pandas as pd
# 创建一个字典
d = {"name": ["Alice", "Bob", "Charlie", "David"],
"age": [25, 30, 20, 35],
"gender": ["F", "M", "M", "M"]}
# 将字典转换为 Pandas Dataframe
df = pd.DataFrame.from_dict(d, orient="index").T
# 显示结果
print(df)
输出结果如下:
name age gender
0 Alice 25 F
1 Bob 30 M
2 Charlie 20 M
3 David 35 M
在这个示例中,使用字典 d
创建了一个 Pandas Dataframe。使用函数 from_dict()
将字典转换为 Dataframe,在 from_dict()
内部,指定 orient="index"
,表示字典的键值对作为行(row)的数据。转换完成之后,再使用 .T
将 Dataframe 旋转,使得“行索引”(原来的字典键)变为了“列索引”。
2. 将字典的键值对作为列(column)
在这种情况下,字典的键将成为 Pandas Dataframe 的“列索引”(column index),值将成为 Dataframe 的“列(column)”。示例代码如下:
import pandas as pd
# 创建一个字典
d = {"name": ["Alice", "Bob", "Charlie", "David"],
"age": [25, 30, 20, 35],
"gender": ["F", "M", "M", "M"]}
# 将字典转换为 Pandas Dataframe
df = pd.DataFrame.from_dict(d)
# 显示结果
print(df)
输出结果如下:
name age gender
0 Alice 25 F
1 Bob 30 M
2 Charlie 20 M
3 David 35 M
在这个示例中,使用字典 d
创建了一个 Pandas Dataframe。使用函数 from_dict()
将字典转换为 Dataframe,默认情况下字典的键值对作为列(column)的数据。从结果来看,这个 Dataframe 的列索引为键,数据为对应的值。当字典的值是列表时,Dataframe 中的每一列将对应列表中的每个元素。
实例说明
下面通过一个具体的示例来演示如何将字典转换为 Pandas Dataframe。
假设我们有一个包含 4 个元素的字典,其中每个元素代表一场足球比赛的数据,包括比赛名、日期、参赛队伍,以及比分。具体内容如下:
d = {"game1": {"date": "2021-01-01",
"teams": ["China", "Japan"],
"score": [0, 1]},
"game2": {"date": "2021-01-02",
"teams": ["USA", "Russia"],
"score": [2, 2]},
"game3": {"date": "2021-01-03",
"teams": ["Spain", "Italy"],
"score": [1, 1]},
"game4": {"date": "2021-01-04",
"teams": ["Brazil", "Argentina"],
"score": [3, 1]}}
现在我们要将这个字典转换为 Pandas Dataframe。根据需求,这次我们将字典的键值对作为列(column)的数据。示例代码如下:
import pandas as pd
# 将字典转换为 Pandas Dataframe
df = pd.DataFrame.from_dict({i: dict(d[i]) for i in d}, orient="index")
# 添加比赛名为索引
df.index.name = "game name"
# 展示结果
print(df)
该代码将字典转换为 Pandas Dataframe,其中 {i: dict(d[i]) for i in d}
会生成一个新的字典,该字典的键与原字典相同,但值的类型变为了字典。然后,使用 from_dict()
函数将新字典转换为 Dataframe, orient="index"
表示将字典的键值对作为列(column)的数据。接下来,将比赛名设置为索引,即 df.index.name = "game name"
。最后,输出结果:
date teams score
game name
game1 2021-01-01 [China, Japan] [0, 1]
game2 2021-01-02 [USA, Russia] [2, 2]
game3 2021-01-03 [Spain, Italy] [1, 1]
game4 2021-01-04 [Brazil, Argentina] [3, 1]
该结果将 d
的数据转换为 Dataframe,并将比赛名设置为索引列。同时,注意到字典的 teams
和 score
列中的数据是列表,实际上也转换为了 Dataframe 中的一列。