索引器
一.列索引
列索引是最常见的索引方式,一般通过 [ ]来实现,通过 [列名] 可以从DataFrame中取出相应的列,返回值为Series
df.= pd.read_csv(“data数据存储在你电脑的位置”, usecols = [“School”,”Grade”,”Name”,”Gende”,”weight”,”Transter”])
)
df[“Name”].head()
Name
0 x
1 x
2 x
3 x
4 x
#如果要取出多个列表,则可以通过[列名组成的列表],其返回值为DataFrame,从列表中选取性别和姓名俩列:
df.= pd.read_csv(“data数据存储在你电脑的位置”)
usecols =( [“School”,”Grade”,”Name”,”Gende”,”weight”,”Transter”])
df[[“Grande”,”Name”]].head()
Grande Name
0 x x
1 x x
2 x x
3 x x
4 x x
#此外,若要取出单列,且列名中不包含空格,则可以用列名取出,这和[列名]是等价的:
df.Name.head()
Name
0 x
1 x
2 x
3 x
4 x
二.行索引
以字符串为索引的Series
如果取出单个索引的对应元素。则可以使用[item],若Series只有单个值对应,则返回这个标量值。
如果有多个值对应,则返回一个Series:
s = pd.Series([1,2,3,4,5,6],index = [“a”,”b”,”a”,”a”,”a”,”c”])
s[“a”]
a 1
a 3
a 4
a 5
s[‘b”]
b 2
#如果取出多个索引的对应元素,则可以使用[item列表]
s[[“c”,”b”]]
C 6
b 2
#如果像要取出某俩个索引中间的元素,平且这俩个索引是在整个索引中惟一出现,则可以使用切片,同时需要注意的,这里的切片包含俩个端点:
s[“c”:”b”:-2]
c 6
a 4
b 2
#以整数为索引的Series
在使用函数读入数据时,如果不特别指定所对应列作为索引,那么会生成从0开始的整数索引,默认为初始索引
特别的:任意一组符合长度要求的整数都可以作为索引
则 使用[int] or[ int_list],可以取出对应索引元素的值
s = pd.Series([“a”,”b”,”c”,”d”,”e”,”f”],index = [1,3,1,2,4,5])
s[1]
1 a
1 c
s [[2,3]]
2 d
3 b
三.关于loc索引器
1 基于元素的loc索引器
2 基于位置的索引器
loc[ ]中的合法对象共有五类:1)单个元素;元素列表;元素切片;布尔列表以及函数
利用set_list将“Name”作为列的显示
df.= pd.read_csv(“data数据存储在你电脑的位置”, usecols = [“School”,”Grade”,”Name”,”Gende”,”weight”,”Transter”])
)
df_demo = df.set_index(“name”)
df_demo,head()
Name school Grade Gender weight Transfer
X x x x x x
X x x x x x
X x x x x x
X x x x x x
X x x x x x
备注:其中 x为多种类型的不同代称,我在手机端编辑,这边没有数据集为了方便统一写成了 x
单个元素
直接取出相应的行或列,如果该元素在索引中重复则结果为DataFrame,否则为 series
df_demo.loc[“Qing Sun”] #在data中多个人叫此名,重复则结果返回为DataFrame
Name school Grade Gender weight Transfer
X S z x p x
X O z x x x
X z y x b x
df_demo.loc[“Quan Zhao”] #在data中,名字唯一
school X
Grade Y
Gender U
Weight G
Transfer B
切片时
如果DataFrame使用整数索引,其使用整数切片的时候和上面字符串索引的要求一致,都是元素切片,包含端点且起点,终点不允许有重复值,如果不唯一则报错
df_demo.loc[“x”:”z”,”y”:”d”]
Name y d
x xxxx x
z iiii hh
p s nm
o v bv
知识点补充:DataFrame 和Series的区别
DataFrame:
二维数据,整个表格 ,有多行有多列
df.Index索引列
df.columns索引行
在pandas中查询数据就是对 df.columns查询列,对df.index查询行
Series:一纬数据,一行或一列
每一列都是Series对象,每一行都是Series对象
DataFrame和Series搭配使用
**如果在一个表格中查处了数据仍是区块,查询出来的结果仍然是DataFrame,但是如果查出的是一行或一列的话,他的结构对象就变成了Series。
因为对一纬数据,类似于python中的字典,处理起来会比二维数组Dataframe更加快捷,所以在pandas中就俩个数据结构DataFrame和Series*
练习题 员工数据集