python_pandas DAY_18(3) pandas索引

学习内容
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()#将多级索引数据返回成平面数据
发布了33 篇原创文章 · 获赞 0 · 访问量 684

猜你喜欢

转载自blog.csdn.net/soulproficiency/article/details/104089258