《Python程序设计实验教程——以医药数据处理为例》第七章综合应用题

摘要:本文旨在帮助中国药科大学的学生学习必修课《Python与医药大数据处理》,在实验操作题方面给予代码参考。
欢迎各界人士共同讨论Python相关话题,并给予宝贵建议。

目录

PY70301:将药学生核心素养的统计结果保存为文本文件

PY70302:生成一个随机整数矩阵,并将其保存为文本文件和CSV文件

PY70303:读写CSV文件


PY70301:将药学生核心素养的统计结果保存为文本文件

要求:统计文本文件“学生培养.txt”中出现次数最多的10个用于展示药学生的核心素养的词语,将统计结果保存至文件“PY70301.txt”中

药学生核心素养:

创新                    12
实践                    11
药学                     9
创业                     9
能力                     7
德智体美              4
全面                     3
创新能力              3
探索                     3
研究                     3

import jieba
fo=open('PY70301.txt','w')
txt=open('学生培养.txt','r',encoding='utf-8').read()
excludes={"教育","学生","建设","计划","体系","培养","人才培养","提升","加强",\
          "卓越","模式","合作","发展","学习","国际化","提高","行业","特色",\
          "研究生","海外","联合","改革","综合","课程体系","完善","教学","实施",\
          "构建","育人","服务","项目","实习","推进","交流","加快","考核","优化",\
          "通识","对接"}
words=jieba.lcut(txt)
counts={}
for word in words:
    if len(word)==1:
        continue
    else:
        counts[word]=counts.get(word,0)+1
for word in excludes:
    del(counts[word])
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
fo.write("药学生核心素养:\n")
for i in range(10):
    word,count=items[i]
    fo.write("{:<15}\t{:>5}\n".format(word,count))
fo.close()

PY70302:生成一个随机整数矩阵,并将其保存为文本文件和CSV文件

要求:生成一个10*10的矩阵(元素为1~100的随机整数)并将其保存为文本文件“rm.txt”,用空格分隔列向量,用换行符分隔行向量;

#由于随机数种子不同,生成的数字矩阵一般不同

71 74 24 65 88 18 98 83 42 15
15 72 34 69 33 26 57 100 95 22
98 79 16 83 47 54 67 1 27 43
8 66 28 29 27 30 99 95 31 31
88 9 37 67 88 71 38 98 86 99
96 77 92 36 18 53 49 59 49 15
55 66 55 93 23 27 27 69 20 96
61 54 27 69 39 33 71 6 20 26
45 21 35 92 65 28 94 7 76 99
66 65 11 40 96 9 62 18 43 14

然后编写程序,将该文本文件另存为CSV格式文件“rm.csv”

71,74,24,65,88,18,98,83,42,15
15,72,34,69,33,26,57,100,95,22
98,79,16,83,47,54,67,1,27,43
8,66,28,29,27,30,99,95,31,31
88,9,37,67,88,71,38,98,86,99
96,77,92,36,18,53,49,59,49,15
55,66,55,93,23,27,27,69,20,96
61,54,27,69,39,33,71,6,20,26
45,21,35,92,65,28,94,7,76,99
66,65,11,40,96,9,62,18,43,14

from random import randint
ft=open("rm.txt","w+")
fc=open("rm.csv","w")
for i in range(10):
    ls=[str(randint(1,100)) for x in range(10)]
    ft.write(" ".join(ls)+"\n")
ft.seek(0)
txt=ft.read()
fc.write(txt.replace(" ",","))
ft.close()
fc.close()

PY70303:读写CSV文件

要求:将CSV文件“drug2020.csv”中的药品销售二维数据读入列表,然后计算其中的数值数据,将销售数量值修改为销售百分比,最后将结果写入文件“drug2020out.csv”

drug2020.csv:

商品名称,销售数量
苯磺酸氨氯地平片(安内真),1578
开博通,1332
酒石酸美托洛尔片(倍他乐克),946
苯磺酸氨氯地平片(络活喜) ,671
硝苯地平片(心痛定),621

drug2020out.csv

商品名称,销售数量占比
苯磺酸氨氯地平片(安内真),30.65%
开博通,25.87%
酒石酸美托洛尔片(倍他乐克),18.38%
苯磺酸氨氯地平片(络活喜) ,13.03%
硝苯地平片(心痛定),12.06%

fr=open("drug2020.csv","r")
fw=open("drug2020out.csv","w")
txt=fr.read()
ls=txt.strip("\n").split("\n")
del(ls[0])
ls1=[x.split(",") for x in ls]
cnt=0
for i in ls1:
    cnt+=int(i[1])
fw.write("商品名称,销售数量占比\n")
for j in ls1:
    fw.write("{},{:.2%}\n".format(j[0],int(j[1])/cnt))
fr.close()
fw.close()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜半夏.1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值