pandas札记8_索引对象、重新排序索引和行列索引

浏览: 1153
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

Index

  • 索引对象负责管理轴标签和元数据
  • 构建S和DF 的时候,数组和其他序列的标签会被转换成Index
  • Index对象是不可变的,用户不能修改
  • 允许有重复的标签

image.png

frame3.index.name = 'year'  # 索引name
frame3.columns.name = 'state' # 列属性name
frame3

image.png

frame3.values   # 获取DF的所有值

image.png

obj = pd.Series(range(3), index=['a', 'b', 'c'])
index = obj.index
index

# 结果
Index(['a', 'b', 'c'], dtype='object')

labels = pd.Index(np.arange(3))
labels

# 结果
Int64Index([0, 1, 2], dtype='int64')

obj2 = pd.Series([1.5, -2.5, 0], index=labels)
obj2
# 结果
0 1.5
1 -2.5
2 0.0
dtype: float64

>>frame3.columns # 获取列属性
Index(['Nevada', 'Ohio'], dtype='object', name='state')

reindex

  • pandas对象的方法
  • 创建一个新对象,符合新的索引
obj = pd.Series([4.5, 7.2, -5.3, 3.6], index=['d', 'b', 'a', 'c'])
obj
# 结果
d 4.5
b 7.2
a -5.3
c 3.6
dtype: float64

obj2 = obj.reindex(['a', 'b', 'c', 'd'])
obj2
# 结果排序索引
a -5.3
b 7.2
c 3.6
d 4.5
dtype: float64
frame = pd.DataFrame(np.arange(9).reshape((3, 3)),  # DF中具体的值values
index = ['a', 'b', 'c'], # 行属性index
columns=['Ohio', 'Texas', 'California']) # 列属性columns
frame

image.png

image.png

# 删除任意指定轴上的值
data = pd.DataFrame(np.arange(16).reshape((4, 4)), # 如何创建DF数据:values + index + columns
index=['Ohio', 'Colorado', 'Utah', 'New York'],
columns=['one', 'two', 'three', 'four'])
data

image.png

# drop删除某行的值,指定index即可;原来的数据不变
data.drop(['Colorado', 'Utah'])

image.png

# 删除某列的值,通过axis=1来指定列的值
data.drop("two", axis=1)

# 通过columns表示删除多列的值
data.drop(['two', 'three'], axis='columns')

image.png

image.png

# 条件判断作为索引
obj[obj < 2]

# 标签的切片运算包含末端,c和b都有
obj['c':'b']

# 对Series部分值进行设置
obj['b':'c'] = 5
obj

image.png

# ⽤⼀个值或序列对DataFrame进⾏索引其实就是获取⼀个或多个列
data = pd.DataFrame(np.arange(16).reshape((4, 4)),
index=['Ohio', 'Colorado', 'Utah', 'New York'],
columns=['one', 'two', 'three', 'four'])
data

# 结果

one two three four
Ohio 0 1 2 3
Colorado 4 5 6 7
Utah 8 9 10 11
New York 12 13 14 15

print(data["two"]) # 取一列数据
data[["two", "three"]] # 取多列数据

image.png


loc和iloc

  • 行标签索引
  • 轴标签loc和整数标签iloc

image.png

# 选择一行和多列:先指定行;再指定列
data.loc["Colorado", ["two", "three"]] # 通过行列的属性名

image.png

# iloc整数选取值
data.iloc[2, [3,0,1]] # 通过数值索引;先行后列

# 结果
four 11
one 8
two 9
Name: Utah, dtype: int32
# 一个标签或者多个标签的切片形式
data.loc[:'Utah', 'two'] # 前面是index标签,后面是columns标签

# 结果
Ohio 0
Colorado 5
Utah 9
Name: two, dtype: int32
data.loc[:'Utah', ['two', 'three']]   # 选取两列值

image.png

data.iloc[:, :3][data.three > 5]  # 所有行前3列;再选取大于5的值

data.iloc[:, :3] # 所有行,前3列

# 整数索引
ser = pd.Series(np.arange(3.))
ser

image.png

推荐 0
本文由 皮大大 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册