本文同步发表于小弟自架网站:微确幸资讯站
资料建立目标:
学年: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
index = pd.MultiIndex.from_tuples(tuples, names=["学年", "学期", "学制", "性别"])df = pd.DataFrame(np.random.randint(300,size=(36,1)),index=index,columns=["学生人数"])df
输出结果太长,只截图一部份:
以下为快速方式建构:
year = [108, 109, 110]semester = [1, 2]academic = ['博士班', '硕士班', '大学部']gender = ['男', '女']index = pd.MultiIndex.from_product([year, semester, academic, gender], names=['学年', '学期', '学制', '性别'])index
输出结果太长,只截图一部份:
df = pd.DataFrame(np.random.randint(300,size=(36,1)),index=index,columns=["学生人数"])df
输出结果太长,只截图一部份:
上面的方式就能快速得到所需建构的资料。
但MultiIndex的资料其实在读取及处理上不是很直觉,
可以加个程式码将MultiIndex取代掉,看起来就很像Excel的格式。
后续处理
df = df.reset_index()df
输出结果太长,只截图一部份: