学习内容
pandas索引,分组计算,聚合计算
重点
1.pandas索引操作
import pandas as pd
import numpy as np
s = pd.Series([1, 3, 4, 6, 8], index=list("aaabc"))
print(s.index.is_unique)#判断所创建的索引是否唯一
False
print(s.index.unique())#将索引化为唯一索引
Index(['a', 'b', 'c'], dtype='object')
a = [['a', 'b', 'b', 'c', 'a', 'c', 'd', 'b'], [1, 2, 3, 3, 2, 1, 1, 3]]
t = list(zip(*a))
index = pd.MultiIndex.from_tuples(t, names=["level-1", "level-2"])#创建二级索引,
print(index)
MultiIndex(levels=[['a', 'b', 'c', 'd'], [1, 2, 3]],
codes=[[0, 1, 1, 2, 0, 2, 3, 1], [0, 1, 2, 2, 1, 0, 0, 2]],
names=['level-1', 'level-2'])
s = pd.Series(np.random.randint(10, 20, 8),index=index)
s.index.names=['one','two']#创建二级索引序列
print(s)
one two
a 1 10
b 2 12
3 14
c 3 15
a 2 14
c 1 12
d 1 12
b 3 10
print(s["a"])#查看一级索引a的内容
two
1 18
2 15
print(s[:,3])#查看二级索引2的内容
one
b 19
c 10
b 18
#注意,以上操作只适用于series,不能用于dataframe
上面我简单介绍了series的基本索引操作,在使用中还是以datafram居多
import pandas as pd
import numpy as np
s = pd.DataFrame(np.random.randint(10, 20, (8, 3)),
index=[['a', 'b', 'b', 'c', 'a', 'c', 'd', 'b'], [1, 2, 3, 3, 2, 1, 1, 3]],
columns=[["one", "one", "two"], [1, 2, 1]])
print(s)#创建包含二级索引的二维数组
one two
1 2 1
a 1 10 17 18
b 2 13 14 16
3 10 13 10
c 3 11 18 11
a 2 16 10 17
c 1 12 15 15
d 1 14 11 19
b 3 13 18 10
s.index.names = ['row1', 'row2']
s.columns.names = ['col1', 'col2']
print(s)#我们对行索引和列索引的一级二级索引进行命名
col1 one two
col2 1 2 1
row1 row2
a 1 19 17 19
b 2 19 11 12
3 10 10 10
c 3 15 16 18
a 2 15 19 11
c 1 19 11 19
d 1 16 18 16
b 3 17 11 13
s1=s.swaplevel("row1",'row2')
print(s1)#更换行的一级二级索引位置
col1 one two
col2 1 2 1
row2 row1
1 a 16 13 11
2 b 19 13 16
3 b 12 18 15
c 18 14 14
2 a 12 19 13
1 c 11 19 13
d 18 13 14
3 b 12 12 13
s.sortlevel(0)#根据一级索引排序,1表示按二级索引排序
s.sum(level=1)#根据二级索引求和
除去上述之外,我们一般不会创建多级索引数据,一般都是将平面数据的关键字设置成索引,估计实现的指令如下
df.set_index([1])#1表示列表型数据的关键字
df.reset_index()#将多级索引数据返回成平面数据