08 pandas DataFrame - 多层Series简介、相互转换

=== 层次索引 ===

1、多层索引 index

一组成绩:[89,99,56,44,33,56]
前三个2017年的语数英成绩
后三个2018的语数英成绩

deep_Series = pd.Series([89,99,56,44,33,56],index=[
        [2017,2017,2017,2018,2018,2018],
        list('CMECME')] )
print('\n--- deep_Series ---')
print(deep_Series)

print('\n--- 2017的数学成绩 ---')
print(deep_Series[2017,'M'])

print('\n--- 所有年份的语文恩成绩 ---')
print(deep_Series[:,'C'])
--- deep_Series ---
2017  C    89
      M    99
      E    56
2018  C    44
      M    33
      E    56
dtype: int64

--- 2017的数学成绩 ---
99

--- 所有年份的语文恩成绩 ---
2017    89
2018    44
dtype: int64
2、交换索引 swaplevel
print('\n--- 内外层索引交换 ---')
deep_Series = deep_Series.swaplevel()
deep_Series = deep_Series.sort_index()
print(deep_Series)

print('\n--- 所有年份的语文恩成绩 ---')
print(deep_Series['C'])
--- 内外层索引交换 ---
C  2017    89
   2018    44
E  2017    56
   2018    56
M  2017    99
   2018    33
dtype: int64

--- 所有年份的语文恩成绩 ---
2017    89
2018    44
dtype: int64

=== 相互转换 ===

1、 转换成 DataFrame
print('\n--- deep_Series ---')
print(deep_Series)

print('\n--- 转换成 DataFrame ---')
# unstack (默认level=1)
data_frame =  deep_Series.unstack(level = 0)
data_frame
img_8d6e2e13bfb7a2913cf679986cdfad64.png
2、 DataFrame 转回2层Serices
deep_Series = data_frame.stack()
deep_Series
2017  C    89
      E    56
      M    99
2018  C    44
      E    56
      M    33
dtype: int64

=== 多层Series算数统计 ===

1、 Series 计算2017年的总分(level=0 外层)
deep_Series.sum(level=0)
2017    244
2018    133
dtype: int64
2、 Series 计算各科成绩平均分(level=1 内层)
deep_Series.mean(level=1)
C    66.5
E    56.0
M    66.0
dtype: float64

此外DataFrame中也可进行层级计算,暂不深入研究

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值