Python 数据处理(二十四)—— 索引和选择

作者&投稿:弥莎 (若有异议请与网页底部的电邮联系)
~

如果你想获取 'A' 列的第 0 和第 2 个元素,你可以这样做:

这也可以用 .iloc 获取,通过使用位置索引来选择内容

可以使用 .get_indexer 获取多个索引:

警告

对于包含一个或多个缺失标签的列表,使用 .loc 或 [] 将不再重新索引,而是使用 .reindex

在以前的版本中,只要索引列表中存在至少一个有效标签,就可以使用 .loc[list-of-labels]

但是现在,只要索引列表中存在缺失的标签将引发 KeyError 。推荐的替代方法是使用 .reindex() 。

例如

索引列表的标签都存在

先前的版本

但是,现在

索引标签列表中包含不存在的标签,使用 reindex

另外,如果你只想选择有效的键,可以使用下面的方法,同时保留了数据的 dtype

对于 .reindex() ,如果有重复的索引将会引发异常

通常,您可以将所需的标签与当前轴做交集,然后重新索引

但是,如果你的索引结果包含重复标签,还是会引发异常

使用 sample() 方法可以从 Series 或 DataFrame 中随机选择行或列。

该方法默认会对行进行采样,并接受一个特定的行数、列数,或数据子集。

默认情况下, sample 每行最多返回一次,但也可以使用 replace 参数进行替换采样

默认情况下,每一行被选中的概率相等,但是如果你想让每一行有不同的概率,你可以为 sample 函数的 weights 参数设置抽样权值

这些权重可以是一个列表、一个 NumPy 数组或一个 Series ,但它们的长度必须与你要抽样的对象相同。

缺失的值将被视为权重为零,并且不允许使用 inf 值。如果权重之和不等于 1 ,则将所有权重除以权重之和,将其重新归一化。例如

当应用于 DataFrame 时,您可以通过简单地将列名作为字符串传递给 weights 作为采样权重(前提是您要采样的是行而不是列)。

sample 还允许用户使用 axis 参数对列进行抽样。

最后,我们还可以使用 random_state 参数为 sample 的随机数生成器设置一个种子,它将接受一个整数(作为种子)或一个 NumPy RandomState 对象

当为该轴设置一个不存在的键时, .loc/[] 操作可以执行放大

在 Series 的情况下,这实际上是一个追加操作

可以通过 .loc 在任一轴上放大 DataFrame

这就像 DataFrame 的 append 操作

由于用 [] 做索引必须处理很多情况(单标签访问、分片、布尔索引等),所以需要一些开销来搞清楚你的意图

如果你只想访问一个标量值,最快的方法是使用 at 和 iat 方法,这两个方法在所有的数据结构上都实现了

与 loc 类似, at 提供了基于标签的标量查找,而 iat 提供了基于整数的查找,与 iloc 类似

同时,你也可以根据这些索引进行设置值

如果索引标签不存在,会放大数据

另一种常见的操作是使用布尔向量来过滤数据。运算符包括:

|(or) 、 &(and) 、 ~ (not)

这些必须用括号来分组,因为默认情况下, Python 会将 df['A'] > 2 & df['B'] < 3 这样的表达式评估为 df['A'] > (2 & df['B']) < 3 ,而理想的执行顺序是 (df['A'] > 2) & (df['B'] < 3)

使用一个布尔向量来索引一个 Series ,其工作原理和 NumPy ndarray 一样。

您可以使用一个与 DataFrame 的索引长度相同的布尔向量从 DataFrame 中选择行

列表推导式和 Series 的 map 函数可用于产生更复杂的标准

我们可以使用布尔向量结合其他索引表达式,在多个轴上索引

iloc 支持两种布尔索引。如果索引器是一个布尔值 Series ,就会引发异常。

例如,在下面的例子中, df.iloc[s.values, 1] 是正确的。但是 df.iloc[s,1] 会引发 ValueError 。




公主岭市18573366044: Python24干什么用 -
庾武诺为: python24是注册表 注册表是windows操作系统中的一个核心数据库,其中存放着各种参数,直接控制着windows的启动、硬件驱动程序的装载以及一些windows应用程序的运行,从而在整个系统中起着核心作用.这些作用包括了软、硬件的相关...

公主岭市18573366044: 如何利用python进行数据分析 -
庾武诺为: 1、为什么用Python做数据分析 首先因为Python可以轻松地集成C、C++、Fortran代码,一些底层用C写的算法封装在python包里后性能非常高效.并且Python与Ruby都有大量的Web框架,因此用于网站的建设,另一方面个人觉得因为Python作...

公主岭市18573366044: python对Excel中数据的处理 -
庾武诺为: 下面就详细的讲述整个实现过程. 1、在计算机上安装python(x,y)2.6.6版本.这一步是确保机器上的python开发环境,具体的安装过程在此就不在赘述,网上相关资料比较多 2、建议安装一个Notepad++,这样写代码比较方便

公主岭市18573366044: python数据分析(python是啥)
庾武诺为: 1、Python is an object-oriented explanation of computer programming languages, is a powerful and well-size-fits-all language, has been more than a decade of development,...

公主岭市18573366044: python 怎么处理json -
庾武诺为: json.dumps() 该函数可以将简单数据类型(int\float\string\tuple\list\dict\unicode)转换成JSON格式,样例代码如下: import jsonsrc_data = {"name":"Tacey","age":13,"sex":"male","interst":("Programing","Reading")}#...

公主岭市18573366044: python 行列 文本数据处理 -
庾武诺为: 图表的事先放一放.先给你一个按行读取文件的例子 with open("text.txt", "r") as fin:for line in fin:nums = line.split() # 按空白切分行,得到一组数值....因为文件格式比较严谨,每一列的内容都是统一的,所以就很容易处理了.

公主岭市18573366044: 如何用python处理json文件 -
庾武诺为:import json,timeinfos = {"_id":"description","name":"python","filename":"中文","os":["abcd","hello","www"]} infos["time"] = time.time()#动态修改json文件内容 #生成json文件 def json_file(infos):with ...

公主岭市18573366044: python的文件处理 -
庾武诺为: import glob import os import re filelist = glob.glob('*.txt') p = re.compile(r'(.*)\|(.*)') for fn in filelist: try: fin = open(fn, 'r') fout = open('pro_' + os.path.split(fn)[1], 'w') except: print 'File open error!' os.exit(1) for line in fin.readlines(): if 'Rd' in line: line = p.sub...

公主岭市18573366044: python怎么处理数据库查询的记录? -
庾武诺为: python数据处理numpy和pandas插件,可以使用pip命令进行安装,也可以用excel插件进行简单处理数据,图像显示一般用matplotion,也是一个插件,import nump as np import pandas as pd 进行引用

公主岭市18573366044: 如何使用Python进行Web数据处理 -
庾武诺为: 如果你对这门语言还不太熟悉,你需要复习前面的内容.假定我们现在已经掌握了python语言的基本知识,现在让我们来使用python语言做一些更有意义的工作.几个星期以前,我收到来自web站点发送的一封e-mail,通知我的网络空...

你可能想看的相关专题

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网