Python学习笔记: Pandas MultiIndex 快速建立资料

本文同步发表于小弟自架网站:微确幸资讯站

资料建立目标:

学年:108, 109, 110
学期:1, 2
学制:"博士班", "硕士班", "大学部"
性别:"女", "男"

以上的栏位建构后,呈现「学生人数」。
资料笔数总共为len("学年")*len("学期")*len("学制")*len("性别"),计算后为36笔。

以下为一般冗长方式建构:

import pandas as pdimport numpy as nparrays = [    ["108", "108", "108", "108", "108", "108", "108", "108", "108", "108", "108", "108",     "109", "109", "109", "109", "109", "109", "109", "109", "109", "109", "109", "109",     "110", "110", "110", "110", "110", "110", "110", "110", "110", "110", "110", "110"],    ["1", "1", "1", "1", "1", "1", "2", "2", "2", "2", "2", "2",     "1", "1", "1", "1", "1", "1", "2", "2", "2", "2", "2", "2",     "1", "1", "1", "1", "1", "1", "2", "2", "2", "2", "2", "2",],    ["博士班", "博士班", "硕士班", "硕士班", "大学部", "大学部", "博士班", "博士班", "硕士班", "硕士班", "大学部", "大学部",     "博士班", "博士班", "硕士班", "硕士班", "大学部", "大学部", "博士班", "博士班", "硕士班", "硕士班", "大学部", "大学部",     "博士班", "博士班", "硕士班", "硕士班", "大学部", "大学部", "博士班", "博士班", "硕士班", "硕士班", "大学部", "大学部"],    ["女", "男", "女", "男", "女", "男", "女", "男", "女", "男", "女", "男",      "女", "男", "女", "男", "女", "男", "女", "男", "女", "男", "女", "男",      "女", "男", "女", "男", "女", "男", "女", "男", "女", "男", "女", "男"],]tuples = list(zip(*arrays))tuples

http://img2.58codes.com/2024/201223351D8CWhTjMG.jpg

index = pd.MultiIndex.from_tuples(tuples, names=["学年", "学期", "学制", "性别"])df = pd.DataFrame(np.random.randint(300,size=(36,1)),index=index,columns=["学生人数"])df

输出结果太长,只截图一部份:
http://img2.58codes.com/2024/20122335aC1BQ4lRSy.jpg

以下为快速方式建构:

year = [108, 109, 110]semester = [1, 2]academic = ['博士班', '硕士班', '大学部']gender = ['男', '女']index = pd.MultiIndex.from_product([year, semester, academic, gender],                           names=['学年', '学期', '学制', '性别'])index

输出结果太长,只截图一部份:
http://img2.58codes.com/2024/20122335ZUJt05bvWi.jpg

df = pd.DataFrame(np.random.randint(300,size=(36,1)),index=index,columns=["学生人数"])df

输出结果太长,只截图一部份:
http://img2.58codes.com/2024/20122335Lkx3ojazzW.jpg

上面的方式就能快速得到所需建构的资料。

但MultiIndex的资料其实在读取及处理上不是很直觉,
可以加个程式码将MultiIndex取代掉,看起来就很像Excel的格式。

后续处理

df = df.reset_index()df

输出结果太长,只截图一部份:
http://img2.58codes.com/2024/201223354UDgeCN6Ut.jpg


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章