码无止境(3)——处理excel数据并用pygal和pylot作图(适合萌新)

  • 写在前面:我是一名大二在读的学生,专业是财务管理,与代码没有一点关系的,oh。但非常喜欢编程,目前正在努力学习,希望大家多多支持,嘿嘿
  • 问题描述:有一张excel表,如下图:1
    我们的任务是根据这张表,统计不同学院开设的不同课程的门数,并将其图表可视化。这个任务的难点是对于同一门课程,同一个学院会因为设置不同的老师教授以及不同的上课时间,因此需要去重操作。
  • 解决方案:对于大佬来说,这个任务用numpy和pandas应该能很快并且很简洁地完成。对于萌新以及我自身来说,我考虑的是利用openxyl库提取数据,pylot库和pygal库作图。具体的代码方案如下,注释相当清楚,便于萌新学习。这里使用了之前学习到的字典的setdefault方法,去重采用了集合的特性:
import openpyxl
import matplotlib.pyplot as plt
import pygal

wb = openpyxl.load_workbook('kebiao1.xlsx')
sheet = wb['kebiao']

# 得出每个学院开设的课程,未去重
d = {}
for i in range(1, sheet.max_row+1):
    d[sheet.cell(row=i, column=7).value] = d.get(
        sheet.cell(row=i, column=7).value, 0)+1
# print(d)

# 进一步统计每个学院不同的课程总数
l = []
# 得到开课学院,未去重
for i in range(2, sheet.max_row+1):
    l.append(sheet.cell(row=i, column=7).value)
# print(l)

# 利用集合特性去重相同的学院
list_xueyuan = list(set(l))
# print(list_xueyuan)

dict_chushi = {}
for i in list_xueyuan:
    for j in range(2, sheet.max_row+1):
        if sheet.cell(row=j, column=7).value == i:
            dict_chushi.setdefault(i, []).append(
                sheet.cell(row=j, column=5).value)

# 课程去重处理
dict_quchong = {}
for i in dict_chushi.items():
    list_quchong = list(set(i[1]))
    for j in list_quchong:
        dict_quchong.setdefault(i[0], []).append(j)
# print(dict_quchong)

dict_tuxiang = {}
for i in dict_quchong.items():
    dict_tuxiang[i[0]] = len(i[1])

# 创建图表的方法一
hist = pygal.Bar()  # 创建一个条形图的实例

hist.title = '表'  # 图标标题
hist.x_labels = dict_tuxiang.keys()  # 自变量的取值
hist.x_title = '课程'
hist.y_title = '计数'

hist.add('不明所以', dict_tuxiang.values())  # 因变量的取值
# hist.render_to_file('图.svg') 以svg格式储存图表

# 创建图表的方法二
plt.plot(dict_tuxiang.keys(), dict_tuxiang.values(),
         linewidth=5)  # linewidth决定了plot()绘制线条的粗细

plt.title('未知', fontsize=24)  # 图表命名
plt.xlabel('学院', fontsize=6)  # 横坐标命名
plt.ylabel('数量', fontsize=14)  # 纵坐标命名
plt.tick_params(axis='both', labelsize=6)  # 设置刻度标记的大小

plt.show()

处理达到的结果如图:2
这是使用pygal做出的简单条形图。另一个的pylot做出的图此处不再展示。

  • 写在最后:请多多点赞评论呀,萌新一起进步,o( ̄▽ ̄)ブ。另外,这个excel表格各高校的官网应该都有,是全校的课表,可以去自己所在的学校官网下载。或者在评论区留下邮箱,我发你们。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值