Python Pandas DataFrame
数据框是一种二维数据结构,即数据以表格的方式排列在行和列中。
DataFrame的特点
- 潜在的列是不同类型的
- 大小 – 可变
- 标记的轴(行和列)
- 可以对行和列进行算术运算
结构
让我们假设,我们正在创建一个包含学生数据的数据框。
你可以把它看成是一个SQL表或电子表格的数据表示。
pandas.DataFrame
可以使用以下构造函数创建pandas DataFrame −
构造函数的参数如下:
序号 | 参数和描述 |
---|---|
1 | data 数据有多种形式,如ndarray, series, map, lists, dict, constants和另一个DataFrame。 |
2 | index 对于行标签,如果没有传递索引,则可选择默认为np.range(n),用于生成框架的索引。 |
3 | columns 对于列标签,可选的默认语法是 – np.range(n)。只有在没有传递索引的情况下,这才是真的。 |
4 | dtype 每一列的数据类型。 |
5 | copy 这个命令(或者叫什么)是用来复制数据的,如果默认为False。 |
创建数据框架
pandas DataFrame可以使用各种输入创建,例如 −
- 列表
- 数据集
- 系列
- Numpy ndarrays
- 另一个DataFrame
在本章的后续章节中,我们将看到如何使用这些输入创建一个DataFrame。
创建一个空的数据框架
一个基本的DataFrame可以被创建,它是一个空的DataFrame。
例子
其 输出结果 如下 –
从列表中创建一个数据框架
DataFrame可以用一个单一的列表或一个列表来创建。
例1
其 输出结果 如下 –
例2
其 输出结果 如下 –
示例3
其 输出结果 如下 –
注意 - 观察一下, dtype 参数将Age列的类型改为浮点。
从ndarrays/Lists的Dict创建一个DataFrame
所有的 ndarrays 必须是相同的长度。如果索引被传递,那么索引的长度应该等于数组的长度。
如果没有传递索引,那么默认情况下,索引将是range(n),其中 n 是数组长度。
例子1
其 输出结果 如下 –
注意 - 观察数值0,1,2,3。它们是使用函数range(n)分配给每个人的默认索引。
例2
现在让我们使用数组创建一个有索引的DataFrame。
其 输出结果 如下 –
注意 - 观察一下, 索引 参数为每一行分配了一个索引。
从Dict列表中创建一个DataFrame
列表中的字典可以作为输入数据被传递来创建一个DataFrame。字典的键默认为列名。
例子1
下面的例子显示了如何通过传递一个字典列表来创建一个DataFrame。
其 输出结果 如下 –
注意 - 观察一下,NaN(不是一个数字)被附加在缺失的地方。
例2
下面的例子显示了如何通过传递一个字典列表和行索引来创建一个DataFrame。
其 输出结果 如下 –
例3
下面的例子展示了如何创建一个带有字典列表、行索引和列索引的DataFrame。
其 输出结果 如下 –
注意 - 观察一下,df2 DataFrame创建时的列索引不是字典中的键;因此,在原地追加了NaN。而df1创建时的列索引与字典的键值相同,所以追加了NaN。
从系列的字典中创建一个DataFrame
系列的字典可以被传递来形成一个 DataFrame。结果索引是所有传递的系列索引的联合。
例子
其 输出结果 如下 –
注意 - 观察一下,对于系列一,没有传递标签 ‘d ‘,但在结果中,对于 d 标签,NaN被附加了NaN。
现在让我们通过例子来了解 列的选择、添加 和 删除 。
列的选择
我们将通过从DataFrame中选择一列来理解这个问题。
例子
其 输出结果 如下 –
列的增加
我们将通过向现有的数据框架添加一个新的列来理解这个问题。
例子
其 输出结果 如下 –
列的删除
列可以被删除或弹出;让我们举一个例子来了解如何删除。
例子
其 输出结果 如下 –
行的选择、增加和删除
现在我们将通过实例来理解行选择、增加和删除。让我们从选择的概念开始。
通过标签选择
行可以通过向 loc 函数传递行标签来进行选择。
其 输出结果 如下 –
结果是一个系列,其标签是DataFrame的列名。而且,系列的名称是它被检索的标签。
按整数位置选择
可以通过向 iloc 函数传递整数位置来选择行。
其 输出结果 如下 –
分片排队
使用’:’操作符可以选择多行。
其 输出结果 如下 –
增加行数
使用 append 函数向DataFrame添加新行。这个函数将把行追加到最后。
其 输出结果 如下 –
删除行
使用索引标签从DataFrame中删除或删除行。如果标签是重复的,那么多个行将被删除。
如果你观察,在上面的例子中,标签是重复的。让我们删除一个标签,看看有多少行会被删除。
其 输出结果 如下 –
在上面的例子中,有两行被删除,因为这两行包含相同的标签0。