Pandas 将字典列表转换为数据框

Pandas 将字典列表转换为数据框

在本文中,我们将介绍如何使用Pandas将一个字典列表转换为数据框。通常,在数据科学中,我们需要将一个大的、多维的数据储存为一个数据框以进行更好的数据分析和操作。而将一个字典转换为数据框则是非常常见且常用的操作之一。

阅读更多:Pandas 教程

字典列表和数据框的概述

在Python中,字典是一种储存键值对(key-value pair)的数据结构,可以用来储存各种不同类型的数据。其中,键是唯一的,而值可以是任意类型。下面是一个简单的字典案例:

dict = {"name": "Alice", "age": 20, "city": "New York"}
Python

在数据科学中,我们通常储存的不是一个字典,而是一个包含多个字典的列表。这些字典通常具有相同的键(变量名),不同的值(变量的具体值)。这个字典列表可以理解为一个包含多个观测值和变量的二维数据,与数据框非常相似。此外,数据框还具有许多好处,例如可以对列进行加减乘除等运算、筛选、排序等等。

将一个字典列表转化为数据框

现在我们已经对字典列表和数据框有了更深入的了解,我们就可以开始学习如何编写Python代码来将字典列表转化为数据框。在Pandas中,我们可以使用pandas.DataFrame()函数来实现这个转换,该函数需要传入一个字典列表和标签名称。下面是一个将字典列表转换为数据框的例子:

import pandas as pd

dictionary_list = [
    {"name": "Alice", "age": 20, "city": "New York"},
    {"name": "Bob", "age": 30, "city": "Los Angeles"},
    {"name": "Charlie", "age": 25, "city": "Chicago"}
]

df = pd.DataFrame(dictionary_list, columns=["name", "age", "city"])
Python

在这个例子中,我们首先创建了一个包含三个字典的列表。其中,每个字典都包含了三个变量,分别是姓名(name)、年龄(age)和城市(city)。接着,我们使用pandas.DataFrame()函数将这个列表转换为数据框,并生成nameagecity三个标签。最后,我们储存在一个df变量中的数据框看起来像这样:

      name  age         city
0    Alice   20     New York
1      Bob   30  Los Angeles
2  Charlie   25      Chicago
Python

空值的处理

创建的数据框中,如果字典列表中某些字典中所含的键(变量名)并非全部相同,则在相应的位置上会出现空值(NaN)。我们可以通过参数fillna()来设置这些空值的默认值,例如下面的例子:

df = pd.DataFrame(dictionary_list, columns=["name", "age", "job"]).fillna("Unknown")
Python

在这个例子中,我们将之前的city列改为了job,由于字典列表中并没有名为job的键,所以pandas.DataFrame()函数会在数据框的job列中插入空值。接着,我们使用fillna()函数将这些空值全部替换为Unknown,并且重新生成一个数据框。最终得到的数据框如下:

      name  age       job
0    Alice   20   Unknown
1      Bob   30   Unknown
2  Charlie   25   Unknown
Python

改变数据框中的顺序和排列方式

在数据分析中,经常需要改变数据框中列的顺序和排列方式。在Pandas中,我们可以使用.loc[]函数和.iloc[]函数来实现这个操作。.loc[]函数用于根据标签名(列名)选择一列或多列数据,并根据需要改变它们的顺序。例如:

df.loc[:, ["age", "name", "city"]]
Python

这个函数将返回一个数据框,其中包含所有行和按照"age""name""city"的顺序重新排列的列。而.iloc[]函数则用于根据位置选择一列或多列数据。例如,以下代码将选择数据框中的第二列和第一列,并根据需要重新排列:

df.iloc[:, [1, 0, 2]]
Python

这两个函数非常实用,因为它们不仅可以改变列的顺序,还可以根据需要对选定的列进行任何其他操作。

从字典中选择特定的数据

有时候,我们可能只需要从一个字典列表中选择特定的键(变量名)储存在数据框中。在这种情况下,我们可以使用Python的列表解析语法来选择指定的键。例如,以下代码将选择名为"name""age"的两个键,并生成一个包含这两个键的新字典列表:

new_list = [{k: v for k, v in d.items() if k in ["name", "age"]} for d in dictionary_list]
Python

接着,我们可以将这个新字典列表转换为数据框,并生成"name""age"两个标签,如下所示:

df = pd.DataFrame(new_list, columns=["name", "age"])
Python

得到结果如下:

      name  age
0    Alice   20
1      Bob   30
2  Charlie   25
Python

转换数据类型

有时候,从字典列表中生成的数据框中的数据类型并不是我们想要的类型,例如整数会被转换为浮点数。在这种情况下,我们可以使用.astype()函数来手动改变数据类型。例如,以下代码将把"age"列中的浮点数转换为整数:

df["age"] = df["age"].astype(int)
Python

注意,在数据类型转换期间,如果有非数字类型的数据则将会引发错误。因此,在进行数据类型转换之前,必须先对数据进行清理和验证。

总结

本文介绍了如何使用Pandas将一个字典列表转换为数据框,并对如何处理空值、改变数据框中列的顺序和排列方式、从字典中选择特定的数据以及手动转换数据类型进行了说明。将字典列表转换为数据框是数据科学中非常常见而又必要的操作,相信本文对于读者们在数据分析中的工作会有所帮助。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册