python数据选择与运算(1)数据选择

笔记

目的:

掌握python的数据选择提取与切片方法
了解python的数据拼接与合并
掌握python的数据算数运算与比较运算
掌握python的数据统计分析运算
掌握python的数据排序与排名方法

目录

 一、数据选择

1.Numpy数据选择

(1)一维数组

(2)多维数组

(3)布尔值索引与花式索引

2.Pandas数据选择 

(1)Series数据获取 

(2)DataFrame数据获取


 一、数据选择

1.Numpy数据选择

(1)一维数组

        关于Numpy数组的索引和切片操作的总结如下表

语法格式含义
a[m]选择下标m处的元素,其中m为整数(从0开始计数)
a[-m]从列表末尾选择第m个元素,其中m是整数。列表中的最后一个元素地址为-1,倒数第二个元素地址为-2,依此类推
a[m:n]选择索引从m开始,以n-1结束的元素(m和n都是整数)
a[:] or a[0:-1]选择给定轴中的所有元素
a[:n]选择从索引0开始一直到索引n-1(整数)的元素
a[m] or a[m:-1]选择从下标m(整数)开始一直到数组中最后一个元素
a[m:n:p]选择索引为m到n的元素,增量为p。
a[::-1]将数组所有元素逆置

(2)多维数组

        二维数组的索引格式是[a:b,m:n],逗号前选择行,逗号后选择列。而在选择行和列的时候可以传入列表,或者使用冒号来进行切片索引。

关键技术:
二维数组索引语法总结如下
[对行进行切片,对列的切片]
对行的切片:可以有start:stop:step
对列的切片:可以有start:stop:step 

        [例]请使用Python对如下的二维数组进行提取,选择第一行第二列的数据元素并输出。

import numpy as np
arr=np.array([1,2,3],[2,4,6])
print(arr[0,1])

        [例]请使用Python对如下的二维数组进行提取,选择第一行的数据元素并输出

        关键技术:多维数组中对行的选择,使用[]运算符只对行号选择即可

import numpy as np
arr=np.array([1,2,3],[2,4,6])
print(arr[0])

        [例]请使用Python对如下的二维数组进行提取,选择第一列的数据元素并输出关键技术:多维数组中对列的选择,可以使用I运算符、冒号运算符和逗号运算符其中冒号运算符对行号选择,间隔逗号后再对列号选择即可:

import numpy as np
arr=np.array([1,2,3],[2,4,6])
print(arr[:,0])

(3)布尔值索引与花式索引

        1.布尔索引
        我们可以通过一个布尔数组来索引目标数组,以此找出与布尔数组中值为True的对应的目标数组中的数据。需要注意的是,布尔数组的长度必须与目标数组对应的轴的长度一致。

        [例]一维数组的布尔索引。

        关键技术:假设我们有一个长度为7的字符串数组,然后对这个字符串数组进行逻辑运算,进而把元素的结果(布尔数组)作为索引的条件传递给目标数组。

import numpy as np
arr=np.arange(7)
boolingl=np.array([True, False, False, True, True, False, False)
arr[booling1]

        [例]二维数组的布尔索引。

        关键技术:布尔数组中,下标为0,3,4的位置是True,因此将会取出目标数组中第0,3,4行。

import numpy as np
arr=np.arange(28).reshape((7,4))
boolingl=np.array([True, False, False, True, True, False, False])
arr[boolingl]

        2.花式索引 

        [例]找出数组arr中大于15的元素。关键技术:与上面的例子不一样,这个例子返回的结果是一个一维数组。

arr[arr>15]

        [例]根据上面的例子引申,把上述数组中,小于或等于15的数归零

        关键技术:该例类似于数据清洗,那么可以通过下面的方式。可以采用arr<=15得到的布尔值作为索引,将小于或者等于15的数归零。 

arr[arr<=15]=0

2.Pandas数据选择 

(1)Series数据获取 

写法含义
变量名[index]index对应的值
变量名[[index1,index2,index3,...]]依次提取对应行的值
变量名[下限:上限:步长]在下限的基础上,取出步长的行,并遇到上限就截止

        [例]行索引的探索

import pandas as pd
s = pd.Series(data=[1,2,3,4,5,6],
index=['a','b','a','a','a','c'])
print(s[['b','c']])
print(s['b':'c'])
print(s['b':'c':2])

(2)DataFrame数据获取 

        列索引取值
        使用单个值或序列,可以从DataFrame中索引出一个或多个列DataFrame()数据结构,这里用 df 代表pd.DataFrame(数据)如下表所示

输入输出
df.列名取出单列,输出格式为Series
df[列名]取出单列,输出格式为Series
df[[列名]]取出单列,输出格式为DataFrame
df[[列名1,列名2,列名3, ......]]取出各个列对应的元素,输出格式为DataFrame

        [例]从DataFrame中抽取age列。

        关键技术:列索引取值

import pandas as pd
df = pd. DataFrame(data=[[22,"北京","律师"],
[26,"四川成都","工程师"],[24,"江苏南京","研究员"]],index=["张某","李某","段某"],
columns=["age","籍贯","职业"])
df_age=df["age"]
df_age1=df.age
print(df_age,type(df_age))
print(df_age1,type(df_age1))

        [例]当我们转换成Series结构后,通过下标和值均可以相互获取。

        关键技术:可以通过对应的下标或行索引来获取值,也可以通过值获取对应的索引对象以及索引值。

df_age = df["age"]
print(df_age[0])
print(df_age["张某"])
print(df_age[df_age.values==22].index)
print(df_age[df_age. values==22].index[0])

        行索引取值
        [例]通过切片方式选取多行

        关键技术:注意这里使用的是一个中括号,这里的2代表步长:[“张某”:“段某”:2}=[下界:上界:步长]。 

print(df["张某":"段某"])
print(df["张某":"段某": 2])

        loc()方法

        (1)直接使用法

一个参数

df.loc[行索引]

df.loc[ [index] ]

df.loc[[行index1,行index2,行index3,......]]

两个参数

df.loc[row横_label, col纵_label]

df.loc[[row横_label1,row横_label2,......],[col纵_label1,col纵_label2......]]

注意:横向(行索引index) 是必备的

        [例]使用loc()方法选取行

import pandas as pd
df = pd. DataFrame(data=[[22,"北京","律师"],
[26,"四川成都","工程师"],[24,"江苏南京","研究员"],
[11,"山东青岛","医生"]],index=pf.Index["张某","李某","段某","段某"],name="Name"
columns=["age","籍贯","职业"])
print(df.loe["张某"],type(df.loe["张某"]))
print(df.loe["段某"],type(df.loe["段某"]))

#下面两个输出的结果是相同的
df_s=df.loc["张某"]["age"]
df_sl=df.loc["张某","age"]

#选取多行的语法为:变量名.loc[[行index1,行index2,......]]
df_s_n = df.loc[["张某","段某"]]
print(df_s_n)

        iloc()方法

        iloc的使用与loc完全类似,只不过是针对“位置 (= 第几个)”进行筛选。函数语法为:.iloc[整数、整数列表、整数切片、布尔列表以及函数]。[]里面的使用方法同.loc[] 方法

        [例]采用上面例题的dataFrame,用iloc()函数结合lambda函数获取行数据

        关键技术:这里介绍一下.iloc[函数]中的函数使用方法:

        1.函数=自定义函数(函数的返回值需要是合法对象(=整数、整数列表、整数切片、布尔列表))
        2.匿名函数lambda:使用方法

        语法: lambda 自变量: slice(start = 下界,stop = 上界step = 步长)。

res_lambda = df.iloc[lambda x: slice(1,4)]
print(res_lambda)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值