下面是详细讲解“Python Pandas创建多层索引MultiIndex的6种方式”的完整攻略。
什么是MultiIndex
多层索引(MultiIndex)是由多个索引级别构成的索引对象。在Pandas中,MultiIndex使得数据可以在更高维度上被标记和查询。
为什么需要MultiIndex
在一些数据分析场景中,需要对数据进行“分组-聚合”等操作。这时MultiIndex可以让我们更方便的按照想要的方式对数据进行分组聚合操作,方便我们进行更深层次的数据探索,不同于普通Index,它可以挖掘出数据与数据间的层级关系,也可以方便地进行关联、筛选等操作。
创建MultiIndex的6种方式
方法一:使用list创建MultiIndex
使用list创建MultiIndex,list中每个元素表示一个索引级别,list中每个元素的长度都要相等。
import pandas as pd
# 通过list生成MultiIndex
multi_index = pd.MultiIndex.from_arrays([['A', 'A', 'A', 'B', 'B'],
['a', 'b', 'c', 'd', 'e']])
s = pd.Series([1, 2, 3, 4, 5], index=multi_index)
print(s)
输出结果:
A a 1
b 2
c 3
B d 4
e 5
dtype: int64
方法二:使用tuples创建MultiIndex
使用tuples创建MultiIndex,tuples元素个数即为索引级别数,每个tuples中的元素表示一个索引点。
import pandas as pd
# 通过tuples生成MultiIndex
multi_index = pd.MultiIndex.from_tuples([('A', 'a'), ('A', 'b'), ('A', 'c'), ('B', 'd'), ('B', 'e')])
s = pd.Series([1, 2, 3, 4, 5], index=multi_index)
print(s)
输出结果:
A a 1
b 2
c 3
B d 4
e 5
dtype: int64
方法三:使用product创建MultiIndex
使用itertools.product
模块的product
函数创建MultiIndex,参数中的元素个数即为索引级别数,每个元素表示一个索引级别中的元素。
import pandas as pd
import itertools
# 通过product生成MultiIndex
multi_index = pd.MultiIndex.from_product([['A', 'B'], ['a', 'b', 'c']])
s = pd.Series([1, 2, 3, 4, 5, 6], index=multi_index)
print(s)
输出结果:
A a 1
b 2
c 3
B a 4
b 5
c 6
dtype: int64
方法四:使用from_frame创建MultiIndex
使用DataFrame的from_frame方法创建MultiIndex,该方法参数为一个DataFrame,DataFrame的每一列即为一个索引级别。
import pandas as pd
# 通过from_frame生成MultiIndex
df = pd.DataFrame({'first': ['A', 'A', 'A', 'B', 'B'], 'second': ['a', 'b', 'c', 'd', 'e']})
multi_index = pd.MultiIndex.from_frame(df)
s = pd.Series([1, 2, 3, 4, 5], index=multi_index)
print(s)
输出结果:
first second
A a 1
b 2
c 3
B d 4
e 5
dtype: int64
方法五:使用from_arrays创建MultiIndex
使用Index的from_arrays方法创建MultiIndex。
import pandas as pd
# 通过Index.from_arrays生成MultiIndex
first = ['A', 'A', 'A', 'B', 'B']
second = ['a', 'b', 'c', 'd', 'e']
index = pd.Index.from_arrays([first, second])
s = pd.Series([1, 2, 3, 4, 5], index=index)
print(s)
输出结果:
A a 1
b 2
c 3
B d 4
e 5
dtype: int64
方法六:使用from_tuples创建MultiIndex
使用Index的from_tuples方法创建MultiIndex。
import pandas as pd
# 通过Index.from_tuples生成MultiIndex
multi_index = pd.Index.from_tuples([('A', 'a'), ('A', 'b'), ('A', 'c'), ('B', 'd'), ('B', 'e')])
s = pd.Series([1, 2, 3, 4, 5], index=multi_index)
print(s)
输出结果:
A a 1
b 2
c 3
B d 4
e 5
dtype: int64
总结
通过以上6种方法,我们可以灵活地创建MultiIndex,充分利用Pandas的数据分析功能,实现更高效的数据分析。