全国高等院校计算机基础教育研究会计算机基础教育教学研究项目2022年立项项目名单.pdf

1. 读pdf中的数据到二维列表

去除多余的换行符

  1. import pdfplumber
  2. def read_pdf(filename):
  3. """接收文件名为参数,读pdf文件每而上的表格中的数据,返回二维列表"""
  4. context_ls = []
  5. with pdfplumber.open(filename) as pdf:
  6. for i in range(len(pdf.pages)): # 数字为pdf页数
  7. context_ls=context_ls+pdf.pages[i].extract_tables()[0][1:] # 读第i页上的表格
  8. for item in context_ls:
  9. item[1] = item[1].replace('\n', '') # 去除项目名中的换行符
  10. item[3] = item[3].replace('\n', '') # 去除学校名中的换行符
  11. item[-1] = item[-1].replace('\n', '') # 去除支持单位名中的换行符
  12. print(len(context_ls))
  13. return context_ls

2. 获批项目信息写入到csv文件中

  1. def write_csv(filename, context_ls):
  2. """接收写文件名和二维列表为参数,将二维列表中的数据写入到csv文件中"""
  3. with open(filename, 'w', encoding='utf-8') as csv:
  4. for line in context_ls:
  5. csv.write(','.join(line)+'\n')

3. 读csv数据到二维列表

  1. def read_csv(file):
  2. """接收csv格式文件名,读取其中数据到二维列表,返回二维列表"""
  3. with open(file, 'r', encoding='utf-8') as afcec:
  4. project_ls = [x.strip().split(',') for x in afcec]
  5. return project_ls

4. 返回全部资助单位

  1. def sponsor_comp(project_ls):
  2. """接收二维列表为参数,返回所有资助单位名,返回值为升序排序的列表类型"""
  3. sponsors = set([x[5] for x in project_ls if len(x) == 6 and x[5]])
  4. # print(sorted(sponsors))
  5. return sorted(sponsors)
  1. ['中国水利水电出版社', '中国铁道出版社', '人民邮电出版社', '北京久其软件股份有限公司', '北京师范大学出版社', '北京杰创永恒科技有限公司', '北京邮电大学出版社', '南京中创书局有限公司', '新华三技术有限公司', '机械工业出版社华章分社', '杭州安恒信息技术股份有限公司', '杭州朗迅科技有限公司', '杭州瑞亚教育科技有限公司', '深圳讯方公司', '清华大学出版社', '电子工业出版社', '西安电子科技大学出版社', '高等教育出版社']

5. 返回各单位资助项目数量

  1. def sponsor_count(project_ls,sponsors):
  2. """接收二维列表为参数,统计每个资助单位资助项目数量 """
  3. count_comp = {}
  4. for comp in sponsors:
  5. count_comp[comp] = sum(project_ls, []).count(comp)
  6. # print(sorted(count_comp.items(), key=lambda x: x[1], reverse=True))
  7. return sorted(count_comp.items(), key=lambda x: x[1], reverse=True)
  1. [('中国铁道出版社', 55), ('西安电子科技大学出版社', 22), ('清华大学出版社', 17), ('南京中创书局有限公司', 12), ('电子工业出版社', 12), ('中国水利水电出版社', 11), ('北京久其软件股份有限公司', 10), ('人民邮电出版社', 9), ('高等教育出版社', 9), ('杭州安恒信息技术股份有限公司', 4), ('北京邮电大学出版社', 3), ('新华三技术有限公司', 3), ('北京杰创永恒科技有限公司', 2), ('机械工业出版社华章分社', 2), ('深圳讯方公司', 2), ('北京师范大学出版社', 1), ('杭州朗迅科技有限公司', 1), ('杭州瑞亚教育科技有限公司', 1)]

6. 返回受资助学校名集合

  1. def get_uni_name(project_ls):
  2. """接收二维列表为参数,返回所有立项学校名,返回值为列表类型"""
  3. universities = set([x[3] for x in project_ls])
  4. print(len(universities)) # 277
  5. return universities
  1. {'信阳师范学院', '广东科贸职业学院', '浙江育英职业技术学院', '鞍山师范学院', '内蒙古医科大学', '仙桃职业学院', '哈尔滨工程大学', '渤海船舶职业学院', '无锡科技职业学院', '山西农业大学', '仲恺农业工程学院', '苏州市职业大学', '武汉纺织大学', '贵州电子信息职业技术学院', '哈尔滨医科大学', '四川现代职业学院', '台州科技职业学院', '天津大学', '辽宁医药职业学院', '石家庄学院', '西北师范大学', '河北地质大学华信学院', '江苏信息职业技术学院', '成都东软学院', '南京审计大学金审学院', '东南大学成贤学院', '北京语言大学', '北京联合大学', '内蒙古大学', '大连民族大学', '黑龙江职业学院', '吉林交通职业技术学院', '长沙航空职业技术学院', '东华大学', '广东工业大学', '山东农业大学', '吉林化工学院', '温州商学院', '浙江工商大学', '复旦大学', '浙江机电职业技术学院', '辽宁理工学院', '兰州交通大学', '暨南大学', '山东交通职业学院', '广州体育职业技术学院', '哈尔滨石油学院', '北京交通大学', '西安工程大学', '天津仁爱学院', '哈尔滨师范大学', '九江职业技术学院', '江苏护理职业学院', '江苏建筑职业技术学院', '大连海洋大学', '上海对外经贸大学', '成都工业学院', '辽宁大学', '新余学院', '大连理工大学', '五邑大学', '保定理工学院', '湖南工业职业技术学院', '北京林业大学信息', '辽宁财贸学院', '吉林外国语大学', '苏州信息职业技术学院', '刘婧莉', '齐鲁工业大学', '同济大学', '烟台大学', '武汉商贸职业学院', '吉林医药学院', '浙江中医药大学', '河源职业技术学院', '集宁师范学院', '浙江音乐学院', '上海交通大学', '长春人文学院', '辽宁装备制造职业技术学院', '江西科技学院', '郑州电力职业技术学院', '徐州工程学院', '首都师范大学', '沈阳大学', '四川科技职业学院', '兰州职业技术学院', '郑州轻工业大学', '云南农业大学', '山东交通职业', '广东交通职业技术学院', '广州华立科技职业学院', '河南农业大学', '广东建设职业技术学院', '辽宁轻工职业学院', '沈阳工程学院', '广东机电职业技术学院', '山东交通学院', '黑龙江科技大学', '南京理工大学紫金学院', '南京审计大学', '首都医科大学', '三峡大学', '西华大学', '天津天狮学院', '广州工商学院', '广州华商学院', '广州商学院', '河南工业职业技术学院', '广西大学', '华东政法大学', '山西传媒学院', '佛山科学技术学院', '江苏安全技术职业学院', '南京传媒学院教务处', '云南财经大学', '湖南科技学院', '吉林大学', '长江工程职业技术学院', '苏州高博软件技术职业学院', '沈阳师范大学', '盐城工业职业技术学院', '上海杉达学院', '青岛工学院', '湖北城市建设职业技术学院', '河南质量工程职业学院', '哈尔滨学院', '云南国土资源职业学院', '云南民族大学', '重庆邮电大学移通学院', '东莞城市学院', '华北电力大学(保定)', '成都理工大学', '南开大学', '上海健康医学院', '台州学院', '江苏农林职业技术学院', '湖南医药学院', '无锡职业技术学院', '南京信息职业技术学院', '浙江理工大学', '莱芜职业技术学院', '太原师范学院', '上海电子信息职业技术学院', '北京科技大学天津学院', '南京航空航天大学金城学院', '广安职业技术学院', '呼伦贝尔学院', '河南理工大学', '天津医科大学', '武汉传媒学院', '景德镇陶瓷大学', '大理大学', '中南大学', '广州番禺职业技术学院', '郑州电力职业技术学校', '清华大学', '四川电影电视学院', '华北电力大学', '中国人民警察大学', '广东水利电力职业技术学院', '安徽医科大学', '南昌航空大学', '广东江门中医药职业学院', '大连交通大学', '青海大学', '上海电力大学', '西南财经大学天府学院', '淮南师范学院', '红河学院', '广东理工职业学院', '广州科技贸易职业学院', '广东轻工职业技术学院', '湖南大学', '苏州经贸职业技术学院', '常州信息职业技术学院', '电子科技大学成都学院', '浙江邮电职业技术学院', '常熟理工学院', '太原学院', '浙江科技学院', '黑龙江外国语学院', '湖北中医药大学', '南京工业职业技术大学', '西南医科大学', '中国地质大学(北京)', '北华航天工业学院', '北京服装学院', '浙江东方职业技术学院', '沈阳医学院', '河南财经政法大学', '上海商学院', '广东司法警官职业学院', '广东科学技术职业学院', '天津职业大学', '泸州职业技术学院', '中国农业大学', '荆州职业技术学院', '徐州工业职业技术学院', '河北工业大学', '北京大学医学部', '大连海事大学', '厦门海洋职业技术学院', '昆明冶金高等专科学校', '湖北工业大学', '上海农林职业技术学院', '南京工业大学', '浙江安防职业技术学院', '大庆师范学院', '滇西科技师范学院', '武汉城市学院', '长春职业技术学院', '常州工学院', '西南科技大学', '华北理工大学轻工学院', '华东师范大学', '北京工商大学', '东北大学', '苏州科技大学', '黄冈科技职业学院', '塔里木大学', '大连东软信息学院', '上海立信会计金融学院', '江苏海事职业技术学院', '沈阳药科大学', '重庆科技学院', '江苏经贸职业技术学院', '成都信息工程大学', '天津商业大学宝德学院', '潍坊职业学院', '湖南理工学院', '广东东软学院', '四川信息职业技术学院', '苏州大学应用技术学院', '昆明理工大学', '天津职业技术师范大学', '周口师范学院', '郑州商学院', '武汉软件工程职业学院', '河南中医药大学', '福州外语外贸学院', '云南交通职业技术学院', '甘肃农业大学', '江西中医药大学', '吉林电子信息职业技术学院', '天津电子信息职业技术学院', '北京航空航天大学', '昆明学院', '南通理工学院', '沈阳师范大学软件学院', '嘉兴学院', '西安交通大学', '湖北工业职业技术学院', '湖南文理学院', '北京邮电大学', '上海大学', '四川师范大学', '武汉外语外事职业学院', '蚌埠学院', '新疆大学', '乐山师范学院', '齐鲁师范学院', '连云港师范高等专科学校', '金陵科技学院', '聊城职业技术学院', '南京城市职业学院(南京市广播电视大学)', '东莞职业技术学院', '南京传媒学院', '广东工程职业技术学院', '上海开放大学奉贤分校', '北方工业大学', '江苏师范大学', '广东医科大学', '常州机电职业技术学院', '淄博职业学院', '南京师范大学泰州学院', '重庆财经学院'}

7. 学校关键词词频

  1. def uni_name(universities):
  2. """接收学校列表,返回各类学校获资助数量"""
  3. universities_str = ''.join(universities).replace('学院','').replace('大学','').replace('高等','').replace('专科学校','')
  4. name_ls =jieba.lcut(universities_str)
  5. word_dic = {}
  6. for x in name_ls:
  7. word_dic[x] = word_dic.get(x,0)+1
  8. print(sorted(word_dic.items(),key=lambda x:x[1],reverse=True))
  9. return word_dic
  1. [('职业', 86), ('技术', 57), ('师范', 20), ('科技', 16), ('广东', 14), ('工业', 12), ('理工', 11), ('上海', 11), ('浙江', 10), ('交通', 10), ('南京', 10), ('天津', 9), ('北京', 9), ('江苏', 8), ('工程', 8), ('医科', 7), ('农业', 7), ('广州', 7), ('信息', 7), ('辽宁', 6), ('武汉', 6), ('沈阳', 6), ('湖南', 6), ('吉林', 6), ('哈尔滨', 5), ('云南', 5), ('苏州', 5), ('大连', 5), ('成都', 5), ('中医药', 5), ('四川', 5), ('河南', 5), ('山东', 4), ('郑州', 4), ('财经', 4), ('传媒', 4), ('湖北', 4), ('城市', 4), ('电子信息', 4), ('东软', 3), ('重庆', 3), ('医药', 3), ('昆明', 3), ('中国', 3), ('轻工', 3), ('电力', 3), ('机电', 3), ('黑龙江', 3), ('西南', 3), ('常州', 3), ('工商', 3), ('徐州', 2), ('台州', 2), ('民族', 2), ('华北电力', 2), ('保定', 2), ('首都', 2), ('海洋', 2), ('航空航天', 2), ('航空', 2), ('河北', 2), ('太原', 2), ('无锡', 2), ('经贸', 2), ('山西', 2), ('长春', 2), ('兰州', 2), ('审计', 2), ('建设', 2), ('邮电', 2), ('江西', 2), ('地质', 2), ('农林', 2), ('外国语', 2), ('内蒙古', 2), ('齐鲁', 2), ('东莞', 2), ('科学技术', 2), ('水利电力', 1), ('淄博', 1), ('西华', 1), ('温州', 1), ('黄冈', 1), ('轻工业', 1), ('装备', 1), ('制造', 1), ('天狮', 1), ('九江', 1), ('东华', 1), ('华商', 1), ('育英', 1), ('三峡', 1), ('嘉兴', 1), ('厦门', 1), ('人民警察', 1), ('海事职业', 1), ('建筑', 1), ('集宁', 1), ('南昌', 1), ('西北', 1), ('石家庄', 1), ('华北', 1), ('五邑', 1), ('荆州', 1), ('仁爱', 1), ('番禺', 1), ('暨南', 1), ('护理职业', 1), ('东北', 1), ('对外经贸', 1), ('南京理工', 1), ('紫金', 1), ('东方', 1), ('烟台', 1), ('软件工程', 1), ('安全', 1), ('江门', 1), ('广安', 1), ('南通', 1), ('中南', 1), ('杉达', 1), ('西安交通', 1), ('商业', 1), ('宝德', 1), ('应用', 1), ('人文', 1), ('金审', 1), ('技术学校', 1), ('林业', 1), ('鞍山', 1), ('医学部', 1), ('移通', 1), ('塔里木河', 1), ('甘肃', 1), ('大庆', 1), ('南京市', 1), ('广播电视', 1), ('信阳', 1), ('新疆', 1), ('贵州', 1), ('北华', 1), ('航天工业', 1), ('东南', 1), ('成贤', 1), ('长沙', 1), ('渤海', 1), ('船舶', 1), ('清华', 1), ('华信', 1), ('药科', 1), ('青岛', 1), ('电影', 1), ('电视', 1), ('华东师范', 1), ('红河', 1), ('司法', 1), ('警官', 1), ('泰州', 1), ('科贸', 1), ('连云港', 1), ('南开', 1), ('体育', 1), ('石油', 1), ('仲恺', 1), ('复旦', 1), ('北方工业', 1), ('联合', 1), ('淮南', 1), ('呼伦贝尔', 1), ('周口', 1), ('健康', 1), ('商贸', 1), ('泸州', 1), ('质量', 1), ('贸易', 1), ('长江', 1), ('西安', 1), ('大理', 1), ('同济', 1), ('景德镇', 1), ('陶瓷', 1), ('现代', 1), ('外语', 1), ('外事', 1), ('教务处', 1), ('盐城', 1), ('乐山', 1), ('立信', 1), ('会计', 1), ('金融', 1), ('北京服装', 1), ('财贸', 1), ('常熟', 1), ('仙桃', 1), ('北京邮电', 1), ('海事', 1), ('安徽', 1), ('滇西', 1), ('安防', 1), ('文理', 1), ('政法', 1), ('广西', 1), ('高博', 1), ('软件技术', 1), ('金城', 1), ('开放', 1), ('奉贤', 1), ('分校', 1), ('纺织', 1), ('新余', 1), ('苏州市', 1), ('天府', 1), ('国土资源', 1), ('语言', 1), ('音乐', 1), ('福州', 1), ('外语外贸', 1), ('莱芜', 1), ('金陵', 1), ('华东政法', 1), ('佛山', 1), ('电子科技', 1), ('潍坊', 1), ('华立', 1), ('聊城', 1), ('信息工程', 1), ('软件', 1), ('河源', 1), ('冶金', 1), ('青海', 1), ('大连理工', 1), ('蚌埠', 1), ('化工', 1)]

8. 项目关键词词频

def project_name(project_ls):
    """接收二维列表,返回项目名词频"""
    project_str = ''.join(x[1] for x in project_ls)
    project_ls =jieba.lcut(project_str)
    word_dic = {}
    for x in project_ls:
        if len(x) > 1:
            word_dic[x] = word_dic.get(x,0)+1
    print(sorted(word_dic.items(),key=lambda x:x[1],reverse=True))
    return word_dic
[('课程', 381), ('研究', 361), ('实践', 238), ('基于', 185), ('建设', 167), ('计算机', 164), ('教学', 134), ('思政', 121), ('基础', 118), ('高职', 114), ('专业', 110), ('应用', 105), ('程序设计', 78), ('混合式', 70), ('上线', 67), ('背景', 67), ('教学模式', 66), ('面向', 65), ('融合', 63), ('技术', 62), ('探索', 61), ('人才培养', 61), ('开发', 58), ('教学改革', 54), ('改革', 48), ('模式', 47), ('教育', 44), ('工科', 44), ('大学', 42), ('为例', 42), ('教材', 41), ('院校', 39), ('创新', 39), ('数据', 38), ('思维', 37), ('设计', 33), ('资源', 32), ('信息技术', 31), ('人工智能', 31), ('通识', 29), ('Python', 29), ('培养', 28), ('计算', 27), ('一体化', 27), ('OBE', 26), ('课程体系', 26), ('平台', 26), ('构建', 25), ('项目', 24), ('理念', 24), ('能力', 23), ('案例', 22), ('数据库', 22), ('体系', 22), ('高校', 22), ('教学研究', 21), ('课赛证', 21), ('深度', 20), ('应用型', 20), ('融入', 20), ('方案', 20), ('视域', 19), ('教学资源', 19), ('混合', 18), ('实训', 18), ('理论', 18), ('新形态', 17), ('导向', 17), ('评价', 17), ('学习', 16), ('课堂', 16), ('专业课程', 15), ('育人', 15), ('时代', 15), ('路径', 14), ('智能', 14), ('职业', 14), ('本科', 13), ('实验', 13), ('素养', 13), ('原理', 13), ('学生', 13), ('联网', 13), ('文科', 12), ('基础教育', 12), ('需求', 12), ('互联网', 12), ('SPOC', 12), ('信息', 11), ('综合', 11), ('在线', 11), ('证书', 11), ('C语言', 11), ('语言', 11), ('数据结构', 11), ('产教', 11), ('融通', 11), ('--', 10), ('金课', 10), ('分析', 10), ('工程', 9), ('课程标准', 9), ('元素', 9), ('计算机网络', 9), ('网络', 9), ('医科', 8), ('大学生', 8), ('数字', 8), ('驱动', 8), ('视角', 8), ('Java', 8), ('翻转', 8), ('软件技术', 8), ('探究', 8), ('虚拟', 8), ('疫情', 8), ('教学方法', 8), ('下相', 8), ('训练', 7), ('地方', 7), ('立体化', 7), ('新一代', 7), ('制度', 7), ('数据分析', 7), ('目标', 7), ('成效', 7), ('数字化', 6), ('认证', 6), ('技能', 6), ('信息化', 6), ('竞赛', 6), ('MOOC', 6), ('医学', 6), ('智慧', 6), ('校企', 6), ('编程', 6), ('工作', 6), ('数学', 6), ('媒体', 6), ('计算机专业', 6), ('创业', 5), ('嵌入式', 5), ('学科', 5), ('交叉', 5), ('实施', 5), ('资源库', 5), ('四新', 5), ('管理', 5), ('适应', 5), ('软件测试', 5), ('操作系统', 5), ('算法', 5), ('三全', 5), ('导论', 5), ('电子', 5), ('教学内容', 5), ('协同', 5), ('仿真', 5), ('一体', 5), ('科技', 4), ('移动', 4), ('新型', 4), ('现代', 4), ('一流', 4), ('实现', 4), ('医学院校', 4), ('实战', 4), ('解决方案', 4), ('信息安全', 4), ('人才', 4), ('标准', 4), ('岗位', 4), ('特色', 4), ('活页', 4), ('虚拟现实', 4), ('网页', 4), ('BOPPPS', 4), ('Web', 4), ('引领', 4), ('双线', 4), ('混融', 4), ('问题', 4), ('知识', 4), ('系统', 4), ('提升', 4), ('赋能', 4), ('挖掘', 4), ('方法', 4), ('开放', 4), ('服务', 4), ('合作', 4), ('机器', 3), ('艺术', 3), ('概论', 3), ('代码', 3), ('萃取', 3), ('立德', 3), ('下面', 3), ('信息系统', 3), ('专创', 3), ('可视化', 3), ('配置', 3), ('计算技术', 3), ('线上', 3), ('艺术类', 3), ('JAVA', 3), ('例线', 3), ('python', 3), ('三教', 3), ('探讨', 3), ('工单', 3), ('教程', 3), ('计划', 3), ('本科专业', 3), ('电工', 3), ('初探', 3), ('理工类', 3), ('电商', 3), ('以赛', 3), ('促学', 3), ('多元', 3), ('载体', 3), ('依托', 3), ('AI', 3), ('学院', 3), ('中心', 3), ('离散数学', 3), ('中医药', 3), ('物流', 3), ('特征', 3), ('教学策略', 3), ('方案设计', 3), ('策略', 3), ('提高', 3), ('胜任', 3), ('重构', 3), ('电子商务', 3), ('采集', 2), ('IT', 2), ('项目管理', 2), ('信息时代', 2), ('生成', 2), ('软件开发', 2), ('行业', 2), ('医学类', 2), ('2.0', 2), ('系列', 2), ('计算机技术', 2), ('多维', 2), ('开发新', 2), ('纸质', 2), ('下大', 2), ('Spark', 2), ('共建', 2), ('优质', 2), ('制作', 2), ('内容', 2), ('大赛', 2), ('面向社会', 2), ('模块化', 2), ('办公自动化', 2), ('农业', 2), ('保护', 2), ('智能科学', 2), ('信息检索', 2), ('工业', 2), ('交通', 2), ('领域', 2), ('商务', 2), ('临床', 2), ('通信', 2), ('工作室', 2), ('网络安全', 2), ('对抗', 2), ('国产化', 2), ('基础课', 2), ('Arduino', 2), ('申报', 2), ('过程', 2), ('课证', 2), ('HTML5', 2), ('文科类', 2), ('文化', 2), ('高级', 2), ('财经类', 2), ('整体', 2), ('JavaScript', 2), ('公共', 2), ('卓越', 2), ('工程师', 2), ('核心', 2), ('Linux', 2), ('图形学', 2), ('区块', 2), ('课赛', 2), ('证创', 2), ('计算机辅助', 2), ('真实', 2), ('学前教育', 2), ('课堂教学', 2), ('直播', 2), ('复合型', 2), ('以大', 2), ('计算机教育', 2), ('创新能力', 2), ('视觉', 2), ('任务', 2), ('落地', 2), ('科学', 2), ('计算机硬件', 2), ('PBL', 2), ('多方位', 2), ('进阶', 2), ('教研室', 2), ('农科', 2), ('推进', 2), ('典型', 2), ('线下', 2), ('前端开发', 2), ('5G', 2), ('广州', 2), ('经管类', 2), ('商科', 2), ('乡村', 2), ('振兴', 2), ('会计专业', 2), ('支撑', 2), ('专业课', 2), ('Android', 2), ('组成', 2), ('艺术设计', 2), ('场景', 2), ('环境', 2), ('学会', 2), ('教学质量', 2), ('联动', 2), ('机制', 2), ('软件工程', 2), ('程序开发', 2), ('体验式', 2), ('课程设计', 2), ('运维', 2), ('衔接', 2), ('建模', 2), ('层次', 2), ('高等院校', 2), ('教学效果', 2), ('精神', 2), ('民办高校', 2), ('五位一体', 2), ('模拟', 2), ('教学方式', 2), ('劳动', 2), ('群实训', 2), ('新形势下', 2), ('促进', 2), ('师范', 2), ('三维', 2), ('CDIO', 2), ('商贸', 2), ('基地', 2), ('互联', 2), ('节点', 2), ('实验教学', 2), ('结合', 2), ('数字图像处理', 2), ('谷歌', 1), ('开源', 1), ('跨端', 1), ('原生', 1), ('培育', 1), ('企业级', 1), ('升级', 1), ('无线', 1), ('传感', 1), ('边疆', 1), ('TOC', 1), ('信号处理', 1), ('MATLAB', 1), ('FPGA', 1), ('SQLServer', 1), ('医工', 1), ('学时', 1), ('压缩', 1), ('讲堂', 1), ('会计', 1), ('数据库系统', 1), ('摄影', 1), ('引论', 1), ('数据处理', 1), ('共享', 1), ('音体美', 1), ('多媒体', 1), ('课件', 1), ('局域网', 1), ('组件', 1), ('相衔接', 1), ('终端', 1), ('维护', 1), ('医学专业', 1), ('研发', 1), ('两性', 1), ('一度', 1), ('设置', 1), ('要素', 1), ('环节', 1), ('等级', 1), ('要求', 1), ('风险', 1), ('评估', 1), ('加固', 1), ('本科生', 1), ('渐进式', 1), ('一目', 1), ('三层', 1), ('五合', 1), ('四化', 1), ('数媒', 1), ('创新性', 1), ('高等数学', 1), ('财经', 1), ('国家', 1), ('排放', 1), ('理工科', 1), ('网络应用', 1), ('逻辑', 1), ('契入', 1), ('中小型', 1), ('SQLServer2019', 1), ('MLX90640', 1), ('接触式', 1), ('红外', 1), ('热像仪', 1), ('硬件', 1), ('工作岗位', 1), ('纲要', 1), ('导引', 1), ('途径', 1), ('数据库安全', 1), ('企业', 1), ('交换', 1), ('路由', 1), ('组网', 1), ('红蓝', 1), ('攻防', 1), ('案例库', 1), ('达梦', 1), ('国产软件', 1), ('配套', 1), ('产品', 1), ('爬虫', 1), ('javascript', 1), ('前端', 1), ('框架', 1), ('CSS3', 1), ('少年班', 1), ('识别', 1), ('地域', 1), ('社会', 1), ('office', 1), ('制图', 1), ('识图', 1), ('迁移', 1), ('手册', 1), ('校园', 1), ('网络设备', 1), ('服务器', 1), ('做评', 1), ('工商管理', 1), ('微积分', 1), ('集成电路', 1), ('专科', 1), ('师范生', 1), ('多元化', 1), ('理工', 1), ('汇编语言', 1), ('x86', 1), ('MIPS', 1), ('架构', 1), ('金融', 1), ('选课', 1), ('研究性', 1), ('课内', 1), ('课外', 1), ('金融类', 1), ('设计师', 1), ('及线', 1), ('WPS', 1), ('办公', 1), ('VR', 1), ('船舶', 1), ('建造', 1), ('教学系统', 1), ('新课标', 1), ('转型', 1), ('网络营销', 1), ('电网', 1), ('以虚助实', 1), ('格局', 1), ('教改', 1), ('网络工程', 1), ('成绩', 1), ('预警系统', 1), ('下新', 1), ('体育', 1), ('践行', 1), ('WEB', 1), ('影视', 1), ('合成', 1), ('考评', 1), ('系统管理', 1), ('推动', 1), ('计算机系统', 1), ('结构', 1), ('求解', 1), ('教学法', 1), ('图谱', 1), ('拓展', 1), ('立体', 1), ('防控', 1), ('常态', 1), ('一流大学', 1), ('音乐', 1), ('5W1H', 1), ('桌面', 1), ('超星', 1), ('CAD', 1), ('OLISE', 1), ('模型', 1), ('下微', 1), ('型线', 1), ('接口技术', 1), ('螺旋', 1), ('派云', 1), ('珠江三角洲', 1), ('跨学科', 1), ('对接', 1), ('革命', 1), ('英语翻译', 1), ('活动课', 1), ('医学生', 1), ('订单式', 1), ('分类', 1), ('群为', 1), ('例以', 1), ('华立', 1), ('扩招', 1), ('贸易', 1), ('改革方案', 1), ('师范院校', 1), ('河南省', 1), ('群为例', 1), ('递进', 1), ('信息工程', 1), ('系统结构', 1), ('涉农', 1), ('农学', 1), ('同伴', 1), ('互助', 1), ('中华', 1), ('优秀', 1), ('传统', 1), ('探析', 1), ('课微课', 1), ('下以', 1), ('人文', 1), ('多媒体技术', 1), ('双高', 1), ('新闻', 1), ('促教', 1), ('四史', 1), ('工学', 1), ('产品设计', 1), ('标注', 1), ('可编程', 1), ('控制器', 1), ('数字电路', 1), ('参与度', 1), ('以思政', 1), ('课岗赛', 1), ('四位一体', 1), ('思政赋', 1), ('学情', 1), ('计算机相关', 1), ('DevOps', 1), ('JavaEE', 1), ('游戏', 1), ('小学生', 1), ('三段', 1), ('六步', 1), ('基站', 1), ('O2O', 1), ('农村', 1), ('发展', 1), ('课以', 1), ('境外', 1), ('资讯科技', 1), ('邮轮', 1), ('运营', 1), ('理实', 1), ('电气', 1), ('自动化', 1), ('研究课题', 1), ('思政下', 1), ('思政为', 1), ('通识类', 1), ('数据通', 1), ('专本', 1), ('分段', 1), ('联合', 1), ('职教', 1), ('高水平', 1), ('区域', 1), ('教师', 1), ('获奖', 1), ('管理模式', 1), ('运用', 1), ('比赛', 1), ('职业院校', 1), ('西部', 1), ('PHP', 1), ('动态', 1), ('关于', 1), ('变权', 1), ('分析法', 1), ('微课', 1), ('时代背景', 1), ('实效性', 1), ('产业', 1), ('向导', 1), ('六维', 1), ('孔繁森', 1), ('故事', 1), ('分镜', 1), ('及思政', 1), ('做学', 1), ('合一', 1), ('叠加', 1), ('效应', 1), ('互动式', 1), ('KAPIV', 1), ('全程', 1), ('审计', 1), ('成果', 1), ('诊改', 1), ('产品开发', 1), ('微思政', 1), ('有效', 1), ('医疗', 1), ('优化', 1), ('科教', 1), ('影响', 1), ('一主', 1), ('四维', 1), ('信息科学', 1), ('基础理论', 1), ('面向对象', 1), ('农林', 1), ('电子电路', 1), ('工程技术', 1), ('兴趣', 1), ('特长生', 1), ('个性化', 1), ('控制技术', 1), ('上海', 1), ('重塑', 1), ('4C', 1), ('ID', 1), ('自动识别', 1), ('训练项目', 1), ('开展', 1), ('适合', 1), ('成长型', 1), ('发生', 1), ('学习效果', 1), ('计算机科学', 1), ('伦理', 1), ('复杂', 1), ('下工', 1), ('单式', 1), ('革新', 1), ('学类', 1), ('数据通信', 1), ('四川', 1), ('新大陆', 1), ('方向', 1), ('静态', 1), ('动漫', 1), ('新疆', 1), ('南部', 1), ('民汉', 1), ('合班', 1), ('授课', 1), ('贯通', 1), ('辅助', 1), ('关键技术', 1), ('数据挖掘', 1), ('机器人', 1), ('应用软件', 1), ('流通', 1), ('图形图像', 1), ('处理', 1), ('考试', 1), ('德学', 1), ('能技', 1), ('共育', 1), ('物云大智', 1), ('移链', 1), ('中澳', 1), ('办学', 1), ('毕业生', 1), ('就业', 1), ('C#', 1), ('教室', 1), ('交互', 1), ('高效', 1), ('区校', 1), ('人力资源', 1), ('软件体系结构', 1), ('传媒', 1), ('三维动画', 1), ('软件应用', 1), ('学分', 1), ('类通识', 1), ('有效性', 1), ('社团活动', 1), ('openEuler', 1), ('中小学', 1), ('教育资源', 1), ('三对标', 1), ('形势', 1), ('区别', 1), ('以物', 1), ('网络系统', 1), ('华为', 1), ('数通', 1), ('形成', 1), ('例岗', 1), ('时政', 1), ('思考', 1), ('底线', 1), ('契合', 1), ('双向', 1), ('参与', 1), ('三环', 1), ('互动', 1), ('五效', 1), ('六三', 1), ('两翼', 1), ('步骤', 1), ('评测', 1), ('赛课', 1), ('绵阳', 1), ('开放式', 1), ('情境', 1), ('自主', 1), ('相结合', 1), ('增强', 1), ('现实', 1), ('电子信息', 1), ('选修', 1), ('云班课', 1), ('校本', 1), ('数据中心', 1), ('文献', 1), ('利用', 1), ('全国', 1), ('研究会', 1), ('课题', 1), ('岗证', 1), ('互通', 1), ('建构', 1), ('试题库', 1), ('以大创', 1), ('思维能力', 1), ('五维', 1), ('学徒制', 1), ('工匠', 1), ('服务型', 1), ('城市', 1), ('轨道交通', 1), ('客运', 1), ('英语', 1), ('启发', 1), ('CorelDRAW', 1), ('双语', 1), ('多维度', 1), ('并行计算', 1), ('开发技术', 1), ('公安院校', 1), ('公安', 1), ('警务', 1), ('搜集', 1), ('以新', 1), ('精细化', 1), ('开放型', 1), ('学评', 1), ('教大', 1), ('三位一体', 1)]

9. 项目名词云

def draw(word, image):
    """接收词的权值字典和背景图片文件对象为参数,绘制背景为白色的带背景图片的词云,设置字体最大值为240,不显示坐标轴,绘制的词云保存为文件。"""
    graph = np.array(image)  # 图片转数组
    wc = WordCloud(font_path='msyh.ttc',  # 中文字体,未指定中文字体时词云的汉字显示为方框,可修改字体名
                   background_color='White',  # 设置背景颜色
                   # background_color=None,   # 设置透明背景
                   # mode='RGBA',
                   mask=graph,  # 设置背景图片
                   max_font_size=240,  # 设置字体最大值
                   scale=1.5)  # 按照比例进行放大画布,如设置为1.5,则长和宽都是原来画布的1.5倍。
    wc.generate_from_frequencies(word)
    plt.imshow(wc)  # 负责对图像进行处理,并显示其格式,但是不能显示。
    plt.axis("off")  # 不显示坐标轴
    wc.to_file('dream.png')  # 词云保存为图片
    plt.show()  # 显示图像

image.png

10. 学校关键词词云

image.png

完整代码

import pdfplumber
import jieba
import jieba.analyse
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from wordcloud import WordCloud


def read_pdf(filename):
    """接收文件名为参数,读pdf文件每而上的表格中的数据,返回二维列表"""
    project_ls = []
    with pdfplumber.open(filename) as pdf:
        for i in range(len(pdf.pages)):  # 数字为pdf页数
            project_ls=project_ls+pdf.pages[i].extract_tables()[0][1:]  # 读第i页上的表格
    for item in project_ls:
        item[1] = item[1].replace('\n', '')  # 去除项目名中的换行符
        item[3] = item[3].replace('\n', '')  # 去除学校名中的换行符
        item[-1] = item[-1].replace('\n', '')  # 去除支持单位名中的换行符
    # print(len(project_ls))
    return project_ls

# 写csv文件
def write_csv(filename, project_ls):
    """接收写文件名和二维列表为参数,将二维列表中的数据写入到csv文件中"""
    with open(filename, 'w', encoding='utf-8') as csv:
        for line in project_ls:
            csv.write(','.join(line)+'\n')


def read_csv(file):
    """接收csv格式文件名,读取其中数据到二维列表,返回二维列表"""
    with open(file, 'r', encoding='utf-8') as afcec:
        project_ls = [x.strip().split(',') for x in afcec]
    return project_ls


def get_uni_name(project_ls):
    """接收二维列表为参数,返回所有立项学校名,返回值为列表类型"""
    universities = set([x[3] for x in project_ls])
    print(len(universities))
    return universities


def uni_name(universities):
    """接收学校列表,返回学校名词频"""
    universities_str = ''.join(universities).replace('学院','').replace('大学','').replace('高等','').replace('专科学校','')
    name_ls =jieba.lcut(universities_str)
    word_dic = {}
    for x in name_ls:
        if len(x) > 1:
            word_dic[x] = word_dic.get(x,0)+1
    print(sorted(word_dic.items(),key=lambda x:x[1],reverse=True))
    return word_dic


def project_name(project_ls):
    """接收二维列表,返回项目名词频"""
    project_str = ''.join(x[1] for x in project_ls)
    project_ls =jieba.lcut(project_str)
    word_dic = {}
    for x in project_ls:
        if len(x) > 1:
            word_dic[x] = word_dic.get(x,0)+1
    print(sorted(word_dic.items(),key=lambda x:x[1],reverse=True))
    return word_dic


def draw(word, image):
    """接收词的权值字典和背景图片文件对象为参数,绘制背景为白色的带背景图片的词云,设置字体最大值为240,不显示坐标轴,绘制的词云保存为文件。"""
    graph = np.array(image)  # 图片转数组
    wc = WordCloud(font_path='msyh.ttc',  # 中文字体,未指定中文字体时词云的汉字显示为方框,可修改字体名
                   background_color='White',  # 设置背景颜色
                   # background_color=None,   # 设置透明背景
                   # mode='RGBA',
                   mask=graph,  # 设置背景图片
                   max_font_size=240,  # 设置字体最大值
                   scale=1.5)  # 按照比例进行放大画布,如设置为1.5,则长和宽都是原来画布的1.5倍。
    wc.generate_from_frequencies(word)
    plt.imshow(wc)  # 负责对图像进行处理,并显示其格式,但是不能显示。
    plt.axis("off")  # 不显示坐标轴
    wc.to_file('dream.png')  # 词云保存为图片
    plt.show()  # 显示图像


def sponsor_comp(project_ls):
    """接收二维列表为参数,返回所有资助单位名,返回值为升序排序的列表类型"""
    sponsors = set([x[5] for x in project_ls if len(x) == 6 and x[5]])
    # print(sorted(sponsors))
    return sorted(sponsors)

def sponsor_count(project_ls,sponsors):
    """接收二维列表为参数,统计每个资助单位资助项目数量 """
    count_comp = {}
    for comp in sponsors:
        count_comp[comp] = sum(project_ls, []).count(comp)
    # print(sorted(count_comp.items(), key=lambda x: x[1], reverse=True))
    return sorted(count_comp.items(), key=lambda x: x[1], reverse=True)


def no_repeat_uni_name(universities):
    """接收学校名的列表,返回去掉重复学校名的集合"""
    return set(universities)


def category_of_uni(universities, category):
    """接收去掉重复学校名的集合和学校分类关键字的字符串为参数
    查询包含该关键字的学校,返回校名的列表
    """
    cat_uni_name = []
    for uni_name in universities:
        if category in uni_name:
            cat_uni_name.append(uni_name)
    return cat_uni_name


if __name__ == '__main__':
    # file_ls = '../data/pdf/全国高等院校计算机基础教育研究会计算机基础教育教学研究项目2022年立项项目名单.pdf'
    filename = '2022年研究会立项.csv'
    # projects_lst = read_pdf(file_ls)
    # write_csv(filename, table_to_ls)
    projects_lst = read_csv(filename)
    # print(projects_lst)  # 输出pdf中表格中的数据列表
    sponsors_lst = sponsor_comp(projects_lst)
    sponsor_count(projects_lst, sponsors_lst)
    university = get_uni_name(projects_lst)
    print(university)
    word = uni_name(university)
    words = project_name(projects_lst)
    images = Image.open('ball.jpg')  # 打开背景图片,创建文件对象
    # draw(words, images)  # 调用函数绘制词云
    draw(word, images)
    # uni_no_repeat = no_repeat_uni_name(university)
    # print(f'立项总数为{len(table_to_ls)}')
    # print(f'获得立项的学校数为{len(uni_no_repeat)}')
    # key_of_name = input()     # 输入查询高校类别关键字
    # category_uni_name = category_of_uni(uni_no_repeat, key_of_name)
    # print(f'{key_of_name}类学校获得立项的学校为:')
    # for u_name in category_uni_name:
    #     print(u_name)