panda-with-pile-of-bamboo-on-stomach

更可爱…对数据争用稍没有那么有用

这篇文章是我上一篇文章的延续。在这里,我们将讨论另一个数据类型,数据帧。

数据帧将成为开发人员在使用熊猫时使用的主要工具。

您可能还喜欢:
了解 Numpy.

先决条件

Python 的熊猫模块应安装在系统中,如果尚未安装,则可以使用以下功能进行安装:

pip install pandas 

(如果您通过直接https://www.python.org/downloads/来安装 python)

conda install pandas 

(如果您有蛇的 Anaconda 分布)

数据帧和熊猫

DataFrame是熊猫的主力,直接受到R编程语言的启发。我们可以将 DataFrame 视为一组序列对象,这些对象组合在一起以共享相同的索引。让我们用熊猫来探讨这个话题。

import pandas as pd 
import numpy as np 

from numpy.random import randn

np.random.seed(101)

为了生成一些随机数,我们在这里使用种子。

现在,让我们创建一个数据帧:

df = pd.Dataframe

如果您使用的是 Jupyter 笔记本,请按 移位 +tab df = pd.Dataframe 后,您将看到:

Result of "Shift+tab" after df initialization

df 初始化后”Shift_tab”的结果

签出此 DataFrame 的文档字符串和初始签名。我们有一个数据参数,索引参数(就像系列),但随后我们有这些额外的列参数。

让我们继续用一些随机数据创建它,我们将了解 DataFrame 的实际外观。对于数据,我们使用 randn(5,4) 的为索引,我们使用字符列表,对于列,我们使用另一个字符列表。

df = pd.DataFrame(randn(5,4),['A','B','C','D','E'],['W','X','Y','Z']) 

Checking DataFrame content

检查数据帧内容

因此,基本上,我们这里有一个列 W、Y、Y 和 Z 的列表以及相应的行 A、B、C、D 和 E。这些列中的每一个实际上是一个熊猫系列,如 W 或 X 或 Y 或 Z,它们都共享一个公共索引

选择列:

df['W']

Outputting the "W" column to the screen

将”W”列输入屏幕

您可以使用以下功能检查类型:

type(df['W']) 

这将给予熊猫.core.系列因此。

您还可以检查:

type(df) 

这将给熊猫.core.frame.DataFrame。

如果要选择多个列,请使用:

df[['W','Z']] 

Indexing columns "W" and "Z"

索引列”W”和”Z”

创建新列

df['new'] = df['W'] + df['Y'] 

Creating a new column, "new"

创建新列”新建”

删除列

要删除列,只需执行下列操作:

df.drop('new',axis=1) 

Dropping "new" from the DataFrame

从 DataFrame 删除”新”

在这里,您可以使用移位 + 选项卡来检查轴实际引用的内容。轴 = 0,默认情况下用于行,而轴= 1是指列。因此,这里我们使用轴#1,因为我们想要删除一列。

注意:”新”列仍然存在;您必须使用 inplace 参数来保留此更改。熊猫这样做,所以用户不会意外地丢失信息。因此,请使用 inplace = True

Using inplace parameter

使用就地参数

我们还可以使用 df.drop('E',axis=0) 删除一行。自己试试吧。

快速问题:

为什么行为 0,为什么列为 1?

引用实际上又回到了numpy。DataFrame 本质上是 numpy 数组之上的索引标记shape() 产生元组 (5, 4)。对于二维矩阵,0 索引是行数(A、B、C、D、E),然后索引 1 是列(W、X、Y、Z)。这就是为什么行被称为 0 轴,列被称为 1 轴,因为它直接取自形状,就像在 numpy 数组中一样。

选择行

有两种方法可以在 DataFrame 中选择行,您必须为此调用方法。

根据标签选择:

df.loc['A'] 

根据位置选择:

df.iloc[2] 

Using loc and iloc to select rows

使用 loc 和 iloc 选择行

注意:不仅是所有列系列,而且行也是序列。

选择行和列的子集:

为此,您可以使用:

df.loc[['A','B'],['W','Y']] 

要选择特定值,请使用:

df.loc['B','Y'] 

Selecting subsets of rows using loc

使用 loc 选择行的子集

条件选择

熊猫的一个重要特征是能够使用括号符号执行条件选择。这将非常类似于 numpy。

让我们使用比较运算符:

df > 0 

结果是具有布尔值的数据帧。如果该位置的 DataFrame 值大于零,则返回 true;如果该位置的值不大于零,则返回 true。请参阅以下内容:

Creating masks for our DataFrame

为我们的 DataFrame 创建掩码

df[df>0] 

正如您所看到的,只要值为负值,不符合条件, NaN 则返回。

现在,重要的是, NaN 我们将只返回条件为 true 的 DataFrame 子集的行或列,而不是返回 。

Using masks on the whole DataFrame and one column

对整个 DataFrame 和一列使用掩码

假设我们想要在数据帧中获取列值为

W>0

,我们要提取”Y”列请参阅以下内容:

Image title

使用多个条件:

对于多个条件,我们可以使用 |或&请记住,我们不能在这里使用 python 和/或。

df[(df['W']>0) & (df['Y'] > 1)] 

Masks with multiple conditions

具有多个条件的蒙版

重置索引

为了将索引重置回默认值为 1234….n,我们使用方法reset_index()。我们将获取索引,重置为列,并将实际索引转换为数字。但是,如果不使用”原地”*True,它将不会保留更改。熊猫在许多区域使用此位置参数,只需移位+tab(如果使用 Jupyter 笔记本),您将看到它。

df.reset_index() 

Resetting indexes

重置索引

设置新索引

对于设置新索引,首先,我们必须创建一个新索引。我们使用的是字符串的split()方法,这只是拆分空格的常用方法。这是创建列表的快速方法;)

newind = 'WB MP KA TN UP'.split() 

现在,将此列表作为数据帧的列。

df['States'] = newind 
df 

如果我们想要使用此状态列作为索引,则应使用:

Result of setting "States" as the new index

将”国家”设置为新索引的结果

注意:除非我们保留索引的此信息,否则它将覆盖旧索引,并且我们实际上无法将此信息保留为新列 – 与允许我们拥有该新列的重置索引不同。

因此,这是设置索引与重置索引。:)

在这里,地方_True也起着重要的作用。

我希望,到目前为止,您喜欢阅读有关 DataFrame 的介绍。在即将发布的有关 DataFrame 的文章中,还有更多内容需要介绍。

快乐学习:)

相关文章

Comments are closed.