热线电话:13121318867

登录
首页大数据时代 数据分析师教程《Python数据分析极简入门》第2节 8-2 Pandas 数据重塑 - 数据堆叠
数据分析师教程《Python数据分析极简入门》第2节 8-2 Pandas 数据重塑 - 数据堆叠
2024-11-27
收藏

《Python数据分析极简入门》

第2节 8-2 Pandas 数据重塑 - 数据堆叠

数据堆叠

df = pd.DataFrame({'专业': np.repeat(['数学与应用数学''计算机''统计学','物理学'], 6),
                   '班级': ['1班','2班','3班']*8,
                   '科目': ['高数''线代'] * 12,
                   '平均分': [random.randint(60,100for i in range(24)],
                   '及格人数': [random.randint(30,50for i in range(24)]})

df2 = pd.pivot_table(df, index=['专业','科目'],  values=['及格人数','平均分'],
               aggfunc={'及格人数':np.sum,"平均分":np.mean})
df2
及格人数 平均分
专业 科目
数学与应用数学 线代 107 76.000000
高数 107 65.000000
物理学 线代 111 82.333333
高数 115 78.666667
统计学 线代 107 71.000000
高数 122 74.000000
计算机 线代 122 78.333333
高数 137 74.000000
stacked = df2.stack()

压缩”后的DataFrameSeries(具有MultiIndex作为索引), stack() 的逆操作是unstack(),默认情况下取消最后压缩的那个级别:

堆叠stack(),顾名思义就是把透视结果堆到一起。接下来我们把透视后堆叠的数据一步步展开unstack()

stacked.unstack()
及格人数 平均分
专业 科目
数学与应用数学 线代 107.0 76.000000
高数 107.0 65.000000
物理学 线代 111.0 82.333333
高数 115.0 78.666667
统计学 线代 107.0 71.000000
高数 122.0 74.000000
计算机 线代 122.0 78.333333
高数 137.0 74.000000
stacked.unstack(level=1)
科目 线代 高数
专业
数学与应用数学 及格人数 107.000000 107.000000
平均分 76.000000 65.000000
物理学 及格人数 111.000000 115.000000
平均分 82.333333 78.666667
统计学 及格人数 107.000000 122.000000
平均分 71.000000 74.000000
计算机 及格人数 122.000000 137.000000
平均分 78.333333 74.000000
stacked.unstack(level=0)
专业 数学与应用数学 物理学 统计学 计算机
科目
线代 及格人数 107.0 111.000000 107.0 122.000000
平均分 76.0 82.333333 71.0 78.333333
高数 及格人数 107.0 115.000000 122.0 137.000000
平均分 65.0 78.666667 74.0 74.000000
最新资讯
更多
客服在线
立即咨询