泉州信息工程学院
软件学院
课程设计报告书
课 程 名: Python程序设计与高级应用
课程设计项目名称: 春晚节目单分析
团队成员: 无
一、项目简介
1.1 项目博客地址
https://www.cnblogs.com/jianghui1/p/12045494.html
1.2 项目完成的功能与特色
功能:读取本地的春晚节目单.xlsx数据,并对数据进行清洗,把相同类型节目分为一类进行数据分析并以图的形式表现出来。删去无用的空值,统计出现次数前5名的演员。
特色:把杂乱无章的数据清洗后,再构建不同的数学模型对数据进行分析。
1.3 项目采用的技术栈
pandas数据分析,NumPy科学计算库,seaborn和Matplotlib数据可视化,EasyGui图形用户界面。
1.4 项目借鉴源代码的地址
无
1.5 团队成员任务分配表
无
二、项目的需求分析
统计每年各类型节目的数量。分析每年各种类型节目数量的变化,并用折线图展现出变化。分析演员出现次数前5名的明星,并使用柱状图展示出其各自出现的次数。
三、项目功能架构图、主要功能流程图
项目功能架构图:
主要功能流程图:
四、系统模块说明
4.1 系统模块列表
1) 统计每年各类型节目的数量
2) 每年各种类型节目数量变化
3) 演员出现次数前5名的明星
4.2 各模块详细描述(名称,功能,运行截图,关键源代码)
1、名称:统计每年各类型节目的数量
功能:将本地的春晚节目单.xlsx数据加载到DataFrame中,再转换成以每年为关键字的字典数据。按年份分割节目列表,把同年的不同名称但类型相同的节目归为一类。最终以字典的形式统计数量并输出。
运行截图:
关键源代码:
for i in range(len(a)):
if '歌' in a[i]:
a[i] = '歌舞类(歌曲、舞蹈、歌舞)'
elif '舞' in a[i]:
a[i] = '歌舞类(歌曲、舞蹈、歌舞)'
elif '小品' in a[i]:
a[i] = '语言类(小品、相声)'
elif '相声' in a[i]:
a[i] = '语言类(小品、相声)'
elif '戏' in a[i]:
a[i] = '戏曲类'
elif '剧' in a[i]:
a[i] = '戏曲类'
else:
a[i] = '其它(包括开场、魔术、武术、杂技等)'
m = 0
for e in yeardict:#根据各年数量分割所有节目种类列表
n = yeardict[e] + m
categorylist.append(a[m:n])
m = n
2、名称:每年各种类型节目数量变化
功能:把每年不同类型的节目数量变化绘制成折线图。
运行截图:
关键源代码:
#图表显示中文
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
for e in categorylist:#取数据并存进列表里
list1 = []
for eyear in yearlist:
if e in alldict[eyear]:
list1.append(alldict[eyear][e])
for i in range(len(categorylist)):#折线图
x = yearlist
y = alllist[i]
plt.plot(x,y,label=categorylist[i])
3、名称:演员出现次数前5名的明星
功能:用柱状图显示历年出现次数前5的演员
运行截图:
关键源代码:
d = np.nan
while True:#删除空值
if d in a:
a.remove(d)
else:
break
li = sorted(dict1.items(),reverse=True,key=lambda x:x[1])#对字典降序
sns.barplot("演员","出现次数",palette="RdBu_r",label='演员出现次数Top 5',data=df)#柱状图
五、项目总结
5.1 特点
把数量多并且杂乱的数据清洗后,生成所需的各种图,可以直观的看出数据的变化。
5.2 不足之处
项目简单,只进行了数据处理与分析。
来源:https://www.cnblogs.com/jianghui1/p/12045494.html