python-数据分析-Pandas-5、DataFrame-index
Index类型,它为Series和DataFrame对象提供了索引服务,有了索引我们就可以排序数据(sort_index方法)、对齐数据(在运算和合并数据时非常重要)并实现对数据的快速检索(索引运算)。 由于DataFrame类型表示的是二维数据,所以它的行和列都有索引,分别是index和columns。Index类型的创建的比较简单,通常给出data、dtype和name三个参数即可,分别表示作为索引的数据、索引的数据类型和索引的名称。 由于Index本身也是一维的数据,索引它的方法和属性跟Series非常类似
# -*- coding: utf-8 -*- #index import pandas import numpy #范围索引 #范围索引是由具有单调性的整数构成的索引,我们可以通过RangeIndex构造器来创建范围索引, # 也可以通过RangeIndex类的类方法from_range来创建范围索引 sales_data= numpy.random.randint(400, 1000, 12) index = pandas.RangeIndex(1, 13, name='月份') ser = pandas.Series(data=sales_data, index=index) print(ser) ''' 月份 1 729 2 676 3 548 4 527 5 949 6 502 7 947 8 579 9 633 10 454 11 498 12 843 dtype: int32 ''' #分类索引 #分类索引是由定类尺度构成的索引。如果我们需要通过索引将数据分组,然后再进行聚合操作,分类索引就可以派上用场 #分类索引还有一个名为reorder_categories的方法,可以给索引指定一个顺序,分组聚合的结果会按照这个指定的顺序进行呈现 sales_data = [6, 6, 7, 6, 8, 6] index = pandas.CategoricalIndex( # 创建分类索引 data=['苹果', '香蕉', '西瓜', '苹果', '西瓜', '香蕉'], # 索引数据 categories=['苹果', '香蕉', '西瓜'], # 指定分类顺序 ordered=True # 指定索引为有序索引 ) ser = pandas.Series(data=sales_data, index=index) print(ser) ''' 苹果 6 香蕉 6 西瓜 7 苹果 6 西瓜 8 香蕉 6 dtype: int64 ''' #基于索引分组数据,然后使用sum进行求和。 print(ser.groupby(level=0).sum()) # 按索引分组求和 level: 指定分组的索引级别 ''' 苹果 12 香蕉 12 西瓜 15 dtype: int64 ''' #指定索引的顺序。 ser.index = index.reorder_categories(['西瓜', '香蕉', '苹果']) print(ser.groupby(level=0).sum()) ''' 西瓜 15 香蕉 12 苹果 12 dtype: int64 ''' print('-------------------------------------------') #多级索引 #Pandas 中的MultiIndex类型用来表示层次或多级索引。 # 可以使用MultiIndex类的类方法from_arrays、from_product、from_tuples等来创建多级索引,我们给大家举几个例子。 tuples = [(1, 'red'), (1, 'blue'), (2, 'red'), (2, 'blue')] index = pandas.MultiIndex.from_tuples(tuples, names=['number', 'color']) print(index) ''' MultiIndex([(1, 'red'), (1, 'blue'), (2, 'red'), (2, 'blue')], names=['number', 'color']) ''' arrays = [[1, 1, 2, 2], ['red', 'blue', 'red', 'blue']] index = pandas.MultiIndex.from_arrays(arrays, names=['number', 'color']) print(index) ''' MultiIndex([(1, 'red'), (1, 'blue'), (2, 'red'), (2, 'blue')], names=['number', 'color']) ''' stu_ids = numpy.arange(1001, 1006) semisters = ['期中', '期末'] index = pandas.MultiIndex.from_product((stu_ids, semisters), names=['学号', '学期']) courses = ['语文', '数学', '英语'] scores = numpy.random.randint(60, 101, (10, 3)) df = pandas.DataFrame(data=scores, columns=courses, index=index) print(df)
本文作者:little小新
本文链接:https://www.cnblogs.com/littlecc/p/18240703
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步