当前位置: 首页> 科技> 数码 > 摄影网站设计图片_公司网站制作的费用申请_百度收录时间_seo营销培训

摄影网站设计图片_公司网站制作的费用申请_百度收录时间_seo营销培训

时间:2025/8/29 0:37:09来源:https://blog.csdn.net/bbaaa123/article/details/142381363 浏览次数:0次
摄影网站设计图片_公司网站制作的费用申请_百度收录时间_seo营销培训

目录

Pandas中的索引类

RangeIndex

MultiIndex多层索引

pd.MultiIndex.from_arrays()

索引名称设置

pd.MultiIndex.from_tuples()

pd.MultiIndex.from_product()

高维索引的访问方式

显示索引访问方式

显示切片

隐式索引访问方式

隐式切片

逐级访问


Pandas中的索引类

pandas中常用的索引类为

pd.Index

其还有很多子类,包括

RangeIndex : Index implementing a monotonic integer range.
CategoricalIndex : Index of :class:`Categorical` s.
MultiIndex : A multi-level, or hierarchical, Index.
IntervalIndex : An Index of :class:`Interval` s.
DatetimeIndex, TimedeltaIndex, PeriodIndex
Int64Index, UInt64Index,  Float64Index

RangeIndex

比较常见的为RangeIndex,其实例化方法较为方便,只需要确定start,stop以及step就可以

三个参数分别代表起点,终点以及步长,

遵从左闭右开的原则[start,stop)

最常见的RangeIndex就是DataFrame和Series中的隐式索引

import numpy as np
import pandas as pdnp.random.seed(0)data1 = pd.DataFrame(data=np.random.randint(0,100,(3,4)))
print(data1)
print(data1.index)
print(data1.columns)data2 = pd.DataFrame(data=np.random.randint(0,100,(3,4)),index = list('abc'),columns = list('ABCD'))
print(data2)
print(data2.index)
print(data2.columns)#     0   1   2   3
# 0  44  47  64  67
# 1  67   9  83  21
# 2  36  87  70  88
# RangeIndex(start=0, stop=3, step=1)
# RangeIndex(start=0, stop=4, step=1)
#     A   B   C   D
# a  88  12  58  65
# b  39  87  46  88
# c  81  37  25  77
# Index(['a', 'b', 'c'], dtype='object')
# Index(['A', 'B', 'C', 'D'], dtype='object')

可以看到data1由于未指定索引,所以行,列索引都为隐式索引,类型为RangeIndex,而下面手动指定索引的类型为Index类

MultiIndex多层索引

MultiIndex也为Index的子类,用于多层索引的创建

所谓多层索引,就是无论在行维度,还是列维度都有不只一个维度的索引,常用的创建多维索引的方式如下

pd.MultiIndex.from_arrays()

由名称可见,这是一个由数组或列表对象生成的索引,若要生成二维索引,一般需要使用一个二维列表或数组,每层数组的长度相等并且一一对应,高维索引相同者会被合并

import numpy as np
import pandas as pdnp.random.seed(0)multiindex = pd.MultiIndex.from_arrays([['第一周','第一周','第一周','第一周','第二周','第二周','第二周','第二周'],['早上','上午','下午','晚上','早上','上午','下午','晚上']])data2 = pd.DataFrame(data=np.random.randint(0,100,(3,8)),index = list('abc'),columns = multiindex)
print(data2)
print(data2.index)
print(data2.columns)#   第一周             第二周            
#    早上  上午  下午  晚上  早上  上午  下午  晚上
# a  44  47  64  67  67   9  83  21
# b  36  87  70  88  88  12  58  65
# c  39  87  46  88  81  37  25  77
# Index(['a', 'b', 'c'], dtype='object')
# MultiIndex([('第一周', '早上'),
#             ('第一周', '上午'),
#             ('第一周', '下午'),
#             ('第一周', '晚上'),
#             ('第二周', '早上'),
#             ('第二周', '上午'),
#             ('第二周', '下午'),
#             ('第二周', '晚上')],
#            )

可以看到这里在行维度上生成的索引有两层,分别为第一周,第二周以及早上,上午,下午,晚上,这里由于有两个第一周和两个第二周连续存在,进行了合并

索引名称设置

索引名称的设置会在索引的行首或列首进行名称的显示

import numpy as np
import pandas as pdnp.random.seed(0)multiindex = pd.MultiIndex.from_arrays([['第一周','第一周','第一周','第一周','第二周','第二周','第二周','第二周'],['早上','上午','下午','晚上','早上','上午','下午','晚上']],names=['周数','时段'])
inde = pd.Index(data = ['tom','jack','nancy'],name = 'Name')data2 = pd.DataFrame(data=np.random.randint(0,100,(3,8)),index = inde,columns = multiindex)
print(data2)
print(data2.index)
print(data2.columns)# 周数    第一周             第二周            
# 时段     早上  上午  下午  晚上  早上  上午  下午  晚上
# Name                                 
# tom    44  47  64  67  67   9  83  21
# jack   36  87  70  88  88  12  58  65
# nancy  39  87  46  88  81  37  25  77
# Index(['tom', 'jack', 'nancy'], dtype='object', name='Name')
# MultiIndex([('第一周', '早上'),
#             ('第一周', '上午'),
#             ('第一周', '下午'),
#             ('第一周', '晚上'),
#             ('第二周', '早上'),
#             ('第二周', '上午'),
#             ('第二周', '下午'),
#             ('第二周', '晚上')],
#            names=['周数', '时段'])

可以看到这里分别设置了列索引的name以及行索引的二级索引的names,需要注意创建多个索引的名称,在实例化的时候要使用names,赋值为包含多个索引名字的列表

pd.MultiIndex.from_tuples()

在上一个由二维列表转为索引的例子中,我们打印输出了行索引的二级索引,输出结果为

MultiIndex([('第一周', '早上'),('第一周', '上午'),('第一周', '下午'),('第一周', '晚上'),('第二周', '早上'),('第二周', '上午'),('第二周', '下午'),('第二周', '晚上')],names=['周数', '时段'])

这里面可以看出,高维索引和低维索引间都是通过一个个元组来组成的,所以自然也会有通过元组来实例化高维索引的方法,pd.MultiIndex.from_tuples()

其实例化的方法也很简单,通过使用一个类似于上面输出的元组列表,第一个元素为高维索引,第二个元素为低维索引

import numpy as np
import pandas as pdnp.random.seed(0)multiindex = pd.MultiIndex.from_tuples([('第一周', '早上'),('第一周', '上午'),('第一周', '下午'),('第一周', '晚上'),('第二周', '早上'),('第二周', '上午'),('第二周', '下午'),('第二周', '晚上')],names=['周数','时段'])
inde = pd.Index(data = ['tom','jack','nancy'],name = 'Name')data2 = pd.DataFrame(data=np.random.randint(0,100,(3,8)),index = inde,columns = multiindex)
print(data2)
print(data2.index)
print(data2.columns)# 周数    第一周             第二周
# 时段     早上  上午  下午  晚上  早上  上午  下午  晚上
# Name
# tom    44  47  64  67  67   9  83  21
# jack   36  87  70  88  88  12  58  65
# nancy  39  87  46  88  81  37  25  77
# Index(['tom', 'jack', 'nancy'], dtype='object', name='Name')
# MultiIndex([('第一周', '早上'),
#             ('第一周', '上午'),
#             ('第一周', '下午'),
#             ('第一周', '晚上'),
#             ('第二周', '早上'),
#             ('第二周', '上午'),
#             ('第二周', '下午'),
#             ('第二周', '晚上')],
#            names=['周数', '时段'])

pd.MultiIndex.from_product()

这个方法是创建高维所以最为常用的方法,product具有乘积的意思,在这里的用法为同样传入一个二维列表,第一维为高维索引,第二位为低维索引,与from_arrays的区别为,from_product会将每个高维索引与一维索引一一匹配,不需要重复书写高维索引和低维索引

import numpy as np
import pandas as pdnp.random.seed(0)multiindex = pd.MultiIndex.from_product([['第一周','第二周'],['早上','上午','下午','晚上']],names=['周数','时段'])
inde = pd.Index(data = ['tom','jack','nancy'],name = 'Name')data2 = pd.DataFrame(data=np.random.randint(0,100,(3,8)),index = inde,columns = multiindex)
print(data2)
print(data2.index)
print(data2.columns)# 周数    第一周             第二周
# 时段     早上  上午  下午  晚上  早上  上午  下午  晚上
# Name
# tom    44  47  64  67  67   9  83  21
# jack   36  87  70  88  88  12  58  65
# nancy  39  87  46  88  81  37  25  77
# Index(['tom', 'jack', 'nancy'], dtype='object', name='Name')
# MultiIndex([('第一周', '早上'),
#             ('第一周', '上午'),
#             ('第一周', '下午'),
#             ('第一周', '晚上'),
#             ('第二周', '早上'),
#             ('第二周', '上午'),
#             ('第二周', '下午'),
#             ('第二周', '晚上')],
#            names=['周数', '时段'])

高维索引的访问方式

显示索引访问方式

如果要使用高维索引进行访问,如果要取一行或一列,则使用元组形式(第一个元素为高维索引,第二个元素为低维索引),如果要取多行或多列则使用元组列表,样例如下

import numpy as np
import pandas as pdnp.random.seed(0)multiindex = pd.MultiIndex.from_product([['第一周','第二周'],['早上','上午','下午','晚上']],names=['周数','时段'])
inde = pd.Index(data = ['tom','jack','nancy'],name = 'Name')data2 = pd.DataFrame(data=np.random.randint(0,100,(3,8)),index = inde,columns = multiindex)
print(data2,end = '\n\n')
print(data2[('第一周','早上')],end = '\n\n')
print(data2[[('第二周','早上'),('第二周','晚上')]],end = '\n\n')# 周数    第一周             第二周            
# 时段     早上  上午  下午  晚上  早上  上午  下午  晚上
# Name                                 
# tom    44  47  64  67  67   9  83  21
# jack   36  87  70  88  88  12  58  65
# nancy  39  87  46  88  81  37  25  77
# 
# Name
# tom      44
# jack     36
# nancy    39
# Name: (第一周, 早上), dtype: int64
# 
# 周数    第二周    
# 时段     早上  晚上
# Name         
# tom    67  21
# jack   88  65
# nancy  81  77
显示切片

显示切片依旧为左闭右闭,需要如果索引为字符串类型,则需要先对DataFrame按字符串索引先排序,

方法为sort_index(),参数axis值为1则沿列方向根据列索引排序,若为0则沿行方向根据行索引排序,默认为0

import numpy as np
import pandas as pdnp.random.seed(0)multiindex = pd.MultiIndex.from_product([['第一周','第二周'],['早上','上午','下午','晚上']],names=['周数','时段'])
inde = pd.Index(data = ['tom','jack','nancy'],name = 'Name')data2 = pd.DataFrame(data=np.random.randint(0,100,(3,8)),index = inde,columns = multiindex)
print(data2,end = '\n\n')
data2.sort_index(axis=1,inplace=True)
print(data2,end = '\n\n')
print(data2.loc[:,('第一周','上午'):('第二周','下午')],end = '\n\n')# 周数    第一周             第二周            
# 时段     早上  上午  下午  晚上  早上  上午  下午  晚上
# Name                                 
# tom    44  47  64  67  67   9  83  21
# jack   36  87  70  88  88  12  58  65
# nancy  39  87  46  88  81  37  25  77
# 
# 周数    第一周             第二周            
# 时段     上午  下午  早上  晚上  上午  下午  早上  晚上
# Name                                 
# tom    47  64  44  67   9  83  67  21
# jack   87  70  36  88  12  58  88  65
# nancy  87  46  39  88  37  25  81  77
# 
# 周数    第一周             第二周    
# 时段     上午  下午  早上  晚上  上午  下午
# Name                         
# tom    47  64  44  67   9  83
# jack   87  70  36  88  12  58
# nancy  87  46  39  88  37  25

隐式索引访问方式

隐式索引与一维索引的使用方式相同,不受高维索引的影响

import numpy as np
import pandas as pdnp.random.seed(0)multiindex = pd.MultiIndex.from_product([['第一周','第二周'],['早上','上午','下午','晚上']],names=['周数','时段'])
inde = pd.Index(data = ['tom','jack','nancy'],name = 'Name')data2 = pd.DataFrame(data=np.random.randint(0,100,(3,8)),index = inde,columns = multiindex)
print(data2,end = '\n\n')
print(data2.iloc[:,0],end = '\n\n')
print(data2.iloc[:,[4,7]],end = '\n\n')# 周数    第一周             第二周
# 时段     早上  上午  下午  晚上  早上  上午  下午  晚上
# Name
# tom    44  47  64  67  67   9  83  21
# jack   36  87  70  88  88  12  58  65
# nancy  39  87  46  88  81  37  25  77
#
# Name
# tom      44
# jack     36
# nancy    39
# Name: (第一周, 早上), dtype: int64
#
# 周数    第二周
# 时段     早上  晚上
# Name
# tom    67  21
# jack   88  65
# nancy  81  77
隐式切片

隐式切片为左闭右闭

import numpy as np
import pandas as pdnp.random.seed(0)multiindex = pd.MultiIndex.from_product([['第一周','第二周'],['早上','上午','下午','晚上']],names=['周数','时段'])
inde = pd.Index(data = ['tom','jack','nancy'],name = 'Name')data2 = pd.DataFrame(data=np.random.randint(0,100,(3,8)),index = inde,columns = multiindex)
print(data2,end = '\n\n')
data2.sort_index(axis=1,inplace=True)
print(data2,end = '\n\n')
print(data2.iloc[:,0:6],end = '\n\n')# 周数    第一周             第二周
# 时段     早上  上午  下午  晚上  早上  上午  下午  晚上
# Name
# tom    44  47  64  67  67   9  83  21
# jack   36  87  70  88  88  12  58  65
# nancy  39  87  46  88  81  37  25  77
#
# 周数    第一周             第二周
# 时段     上午  下午  早上  晚上  上午  下午  早上  晚上
# Name
# tom    47  64  44  67   9  83  67  21
# jack   87  70  36  88  12  58  88  65
# nancy  87  46  39  88  37  25  81  77
#
# 周数    第一周             第二周
# 时段     上午  下午  早上  晚上  上午  下午
# Name
# tom    47  64  44  67   9  83
# jack   87  70  36  88  12  58
# nancy  87  46  39  88  37  25

逐级访问

逐级访问可以先访问高级索引,每一个高级索引都对应一个低维的DataFrame,比如这里要访问第一周的上午数据

我们可以调用两次loc访问

import numpy as np
import pandas as pdnp.random.seed(0)multiindex = pd.MultiIndex.from_product([['第一周','第二周'],['早上','上午','下午','晚上']],names=['周数','时段'])
inde = pd.Index(data = ['tom','jack','nancy'],name = 'Name')data2 = pd.DataFrame(data=np.random.randint(0,100,(3,8)),index = inde,columns = multiindex)
print(data2,end = '\n\n')print(data2.loc[:,'第一周'],end = '\n\n')
print(data2.loc[:,'第一周'].loc[:,'上午'])# 周数    第一周             第二周            
# 时段     早上  上午  下午  晚上  早上  上午  下午  晚上
# Name                                 
# tom    44  47  64  67  67   9  83  21
# jack   36  87  70  88  88  12  58  65
# nancy  39  87  46  88  81  37  25  77
# 
# 时段     早上  上午  下午  晚上
# Name                 
# tom    44  47  64  67
# jack   36  87  70  88
# nancy  39  87  46  88
# 
# Name
# tom      47
# jack     87
# nancy    87
# Name: 上午, dtype: int64

关键字:摄影网站设计图片_公司网站制作的费用申请_百度收录时间_seo营销培训

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: