pandas将一列拆分为3列_Pandas 操作数据集(最全总结之一)

这篇博客详细介绍了如何使用Pandas中的 .loc 和 .iloc 方法来选择DataFrame和Series中的数据子集。内容涵盖了DataFrame的组件、选择行和列的多种方式,以及如何通过标签和整数位置进行选择。博客强调了子集选择在数据分析中的重要性,并对比了Python列表和字典的选变认识,提供了多个示例来帮助理解这两个方法的区别和使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

32412de29df0127971c5554b2114b2c1.png

Pandas 操作数据集(最全总结之一)

第1部分:选择带[ ],.loc和.iloc

这是关于如何从pandas DataFrame或Series中选择数据子集的四部分系列的开始。Pandas为子集选择提供了多种选择,这需要多篇文章。本系列分为以下四个主题。

  1. 选择带[],.loc和.iloc
  2. 布尔索引
  3. 分配数据子集
  4. 如何不选择数据子集

开始之前的假设

这些系列文章假定您不了解Pandas,但是您了解Python编程语言的基础。它还假定您已在计算机上安装了Pandas。

将Pandas与Python和其他主要科学计算库结合使用的最简单方法是安装Miniconda发行版(请参阅完整的教程的链接)。

进行子集选择的重要性

您可能想知道,为什么有那么多关于选择数据子集的文章。这个主题对pandas来说非常重要,很遗憾它很复杂,因为在实际分析中子集选择经常发生。由于您经常选择子集,因此需要掌握它才能使pandas变得更轻松。

参考文档

有关索引和选择数据的官方pandas文档也涵盖了本文中的材料。我强烈建议您与本教程一起阅读文档的该部分。实际上,文档是掌握pandas的主要手段之一。我写了一篇循序渐进的文章“ 如何学习pandas”,其中提供了有关如何在掌握pandas的同时使用文档的建议。

DataFrame和Series的剖析

pandas库具有两个主要的数据容器:DataFrame和Series。使用Pandas时,几乎所有的时间都花在处理这两个对象上。DataFrame的使用比Series更多,因此让我们首先看一下它的图像。

aa498711c93720770af7273c9341d1e6.png

此图像带有一些附加的插图,以突出显示其组件。乍一看,DataFrame看起来就像您看到的任何其他二维数据表一样。它有行,有列。从技术上讲,DataFrame具有三个主要组件。

DataFrame的三个组成部分

DataFrame由三个不同的组件组成:索引数据。数据也称为

索引表示DataFrame最左侧的值序列。索引中的所有值都在粗字体。索引的每个单独的值称为标签。有时,该索引称为行标签。在上面的示例中,行标签不是很有趣,只是从0到n-1的整数,其中n是表中的行数。pandas默认使用此简单索引作为DataFrames。

这些列是DataFrame顶部的值序列。它们也以粗体显示。列的每个单独的值都称为,但也可以称为列名列标签

其他所有非粗体字都是数据或值。有时您会听到被称为表格数据的DataFrames 。这只是具有行和列的矩形表数据的另一个名称。将行或列称为也是常见的术语。统称为“ 轴”。因此,一行是一个轴,一列是另一个轴。

每行都有一个标签,每列都有一个标签

从DataFrame解剖结构中得出的主要结论是,每行都有一个标签,每列都有一个标签。这些标签用于引用DataFrame中的特定行或列。这与人类如何使用名称来指代特定的人一样。

什么是子集选择?

在开始选择子集之前,最好定义一下子集。子集选择只是从DataFrame(或Series)中选择数据的特定行和列。这可能意味着选择所有行和一些列,选择一些行和所有列,或者选择每个行和列。

选择某些列和所有行的示例

让我们看一些子集选择的图像。我们将首先查看带有伪数据的示例DataFrame。

fd24f30a68164c8c96cc0239817f6ff9.png

比方说,我们要选择的只是列color,age和height但保留所有行。

我们最终的DataFrame如下所示:

5b19dc4d34cd8ecd4e0900dfe6b00fe6.png

选择一些行和所有列的示例

我们还可以进行选择,仅选择一些行。我们选择带有标签的行Aaron,并Dean连同所有的列:

0decf90c585273f62d710bc20f55518a.png

我们最终的DataFrame希望:

5a19997ec4f7a911de884d1a7d86c9d9.png

选择一些行和一些列的示例

让我们从上面结合选择和选择的列color,age以及height只带标签的行Aaron和Dean。

ff83efe1daf91c3c8579ebe969474207.png

我们最终的DataFrame如下所示:

bfee76db10876139a17c413f2f3b5a17.png

熊猫双重参考:按标签和按整数位置

我们已经提到过,每一行和每一列都有一个可用来引用它们的特定标签。这在DataFrame中以粗体显示。

但是,没有提到的是,每一行和每一列也可以由整数引用。我称这个整数位置。对于每一行和每一列,整数位置从0开始,以n-1结束。再次在上方查看我们的示例DataFrame。

带标签的行Aaron和Dean还可以通过它们各自的整数位置2和4类似地,列中引用color,age并且height可以通过它们的整数位置1,图3和4中被引用。

该文档将整数位置称为position。我不特别喜欢这种术语,因为它不像整数位置那样明确。这里的关键术语是整数。

索引和选择数据子集有什么区别?

该文档经常使用术语索引。这个术语本质上只是一个单字短语,用来表示“子集选择”。我更喜欢术语子集选择,因为它再次描述了实际发生的事情。索引也是官方Python文档中使用的术语。

只注重[],.loc以及.iloc

选择数据子集的方法有很多,但是在本文中,我们仅介绍方括号([])**.loc**和的用法**.iloc**。它们统称为索引器。到目前为止,这些是选择数据的最常用方法。本系列的不同部分将讨论一些可用于进行子集选择的方法。

如果您有一个DataFrame,则df您的子集选择将类似于以下内容:

df [] 
df.loc [] 
df.iloc []

实际的子集选择将在方括号内包含一些内容。本文中的所有选择都将在这些方括号内进行。

请注意,方括号也位于.loc和之后.iloc。Python中的所有索引都发生在这些方括号内。

使用以下命令将数据读入DataFrame read_csv

让我们开始使用熊猫读取DataFrame,然后从那里单独使用索引运算符选择数据子集。这些教程的所有数据都在数据目录中。

我们将使用该read_csv 函数将数据读入DataFrame。我们将路径传递到文件作为函数的第一个参数。我们还将使用该index_col`参数选择数据的第一列作为索引(稍后会对此进行更多介绍)。

>>> import pandas as pd
>>> import numpy as np>>> df = pd.read_csv('data/sample_data.csv', index_col=0)
>>> df

fd24f30a68164c8c96cc0239817f6ff9.png

提取单个DataFrame组件

之前,我们提到了DataFrame的三个组件。索引,列和数据(值)。我们可以将每个组件提取到它们自己的变量中。让我们这样做,然后检查它们:

>>> index = df.index
>>> columns = df.columns
>>> values = df.values
>>> index
Index(['Jane', 'Niko', 'Aaron', 'Penelope', 'Dean', 'Christina', 
       'Cornelia'], dtype='object')
>>> columns
Index(['state', 'color', 'food', 'age', 'height', 'score
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值