Courses Analysis Tutorial Using MicroSoft Power BI

Courses Analysis Tutorial Using MicroSoft Power BI

准备工作

数据准备

针对自己本科阶段所有学习科目,应当导出或制作对应每个科目的属性以及成绩,将其汇总程 Excel 表格。具体的属性可以见以下打印的 PDF 文件,Excel 表格无法直接展示,附在随后。

西电校友

对于各位西电计科学子,博文也提供了可以直接导出个人所有必修以及限选科目成绩的jupyter notebook(因包含个人信息,完成科目成绩可以私下联系我),详见下文具体步骤。
主要计算每门课程的平均分、最高分、最低分以及排名,可以将其替换为自己的ID,以及置换自己对应的专业限选课,然后计算即可。对于其他排名,诸如学年排名、推免综合排名等部分,这个因人而异,需要自行添加。

Jupyter Notebook Codes

  • Load Datasets
1
2
3
4
5
6
7
8
9
10
11
12
import pandas as pd
import numpy as np

BaseCourses = pd.read_excel("Courses.xlsx", sheet_name="6Semester")
print(BaseCourses.head())

MyCourses = pd.read_excel("Courses.xlsx", sheet_name="Courses")
MyCourses.set_index(MyCourses.columns[0], inplace=True)
print(MyCourses.head())

EmbeddedCourses = pd.read_excel("Courses.xlsx", sheet_name="Embedded")
print(EmbeddedCourses.head())
  • Calculate Scores
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# calculate the average, min, max score
MyCourses['单科排名'] = MyCourses['单科排名'].astype(str)
for col in BaseCourses.columns[3:]:
MyCourses.loc[col, '平均分'] = round(BaseCourses[col].mean(), 2)
MyCourses.loc[col, '最低分'] = BaseCourses[col].min()
MyCourses.loc[col, '最高分'] = BaseCourses[col].max()

ranking = BaseCourses[col].rank(method='min', ascending=False).astype(int)
rank_rate_percentage = (ranking.iloc[0] / len(BaseCourses))
MyCourses.loc[col, '单科排名'] = f"{ranking[0]}/{len(BaseCourses)}={rank_rate_percentage* 100:.2f}%"
MyCourses.loc[col, '百分比'] = round(1 - rank_rate_percentage, 2)

# 专业限选课
EmbeddedColumns = ['嵌入式程序设计', '嵌入式应用综合设计', 'SOC微体系结构设计', '数字信号处理', '自主可控嵌入式系统']
for col in EmbeddedColumns:
MyCourses.loc[col, '平均分'] = round(EmbeddedCourses[col].mean(), 2)
MyCourses.loc[col, '最低分'] = EmbeddedCourses[col].min()
MyCourses.loc[col, '最高分'] = EmbeddedCourses[col].max()

ranking = EmbeddedCourses[col].rank(method='min', ascending=False).astype(int)
rank_rate_percentage = (ranking.iloc[0] / len(EmbeddedCourses))
MyCourses.loc[col, '单科排名'] = f"{ranking[0]}/{len(EmbeddedCourses)}={rank_rate_percentage * 100:.2f}%"
MyCourses.loc[col, '百分比'] = round(1 - rank_rate_percentage, 2)
  • Save to Excel
1
2
3
4
5
6
7
8
MyCourses.reset_index(drop=False, inplace=True)
print(MyCourses.head())

try:
with pd.ExcelWriter("MyCourses.xlsx", mode='a') as writer:
MyCourses.to_excel(writer, sheet_name="MyCourses", index=False)
except Exception as e:
MyCourses.to_excel("MyCourses.xlsx", sheet_name="MyCourses", index=False)

Power BI Desktop 安装

Microsoft Power BI 官网提供了多种安装方式,但是比较推荐的安装方式还是 Power BI Desktop,详情可见下载页面
Power BI Desktop Installation

数据导入

导入Excel数据表以及导入属性列

可视化图块

一个可视化图块的举例 Power BI 可以对数据做汇总分析,然后重构成新的统计量,对应每一个可视化图块,都可以对选中的数据自动绘制图表。最终的报表可以由多个可视化图块组成,共同展示相应的统计信息。而且基于同一份数据,不同图块能够相互关联,交互地展示同一份子数据。

具体的模块配置比较简单,对照着示例基本很快可以完成一份报表的绘制,因此具体用法就不在此阐述了。

发布到博客网站

重点想要分享的还是怎样把我们做好的报表整个地发布到博客网站上,可以展示给其他人阅览。

注册 Power BI 服务账号

企业账号以及部分地区可以免费享有 Power BI 服务,尤其是公布到微软服务器上。但是在国内的话,不会提供相应的服务,具体需要购买相应的方案。
比较简单高效的方法是,获取一个国外或企业账号,进行注册。这里可以通过淘宝渠道购买一个,基本8元左右。
另外有的采用 Azure 账户的方式,但似乎已经失效,具体可以参考知乎文章最新版-PowerBI账户注册(无需企业邮箱!!!)

发布到 Power BI 服务

本机发布到微软 Power BI 服务 本机上制作好的报表需要先发布到 Power BI,如上图所示。然后需要在 Power BI 服务上对应保存本机报表的工作区中,将报表生成网页嵌入代码,具体操作如下: 生成网页嵌入代码 获取HTML代码 最后将生成的HTML代码放置在博客网页中就可以了。

效果展示

放置一个做好的报表的网页链接,具体效果可以见下文。

资源汇总

Reference

Chenlai Qian, bachelor in Xidian University and master in Southeast University.

https://levitate-qian.github.io/about/

Courses Analysis Tutorial Using MicroSoft Power BI

https://lzhms.github.io/blog/CoursesAnalysis/

Author

Zhihao Li

Posted on

2024-10-30

Updated on

2025-04-03

Licensed under


Comments