python对.csv文件的简单计数处理

问题引入:

1.每种伏邪,对应方剂所出现的次数(部分数据如下)
在这里插入图片描述
2.每种伏邪,对应中草药出现的次数
在这里插入图片描述

代码及实现(问题1)

话不多说直接代码,数据文件github浏览
(初学菜鸟一个,轻喷)
问题一:

import numpy as np
from collections import Counter
data=np.loadtxt(open('D:\sta.csv'),delimiter=',',skiprows = 1, encoding='utf8',dtype=str) #读取数据
n=int(input("输入伏邪代码,“风\寒\湿\热\瘀\毒”分别为“0/1/3/5/6/7” :")) #n为不同伏邪对应的序列
a=0                              #记录行数
count=0                          #记录满足条件的数量
fangji=[] 						 #用于储存满足条件的数据
for tof in data[:,n]:            #判断是否满足某种伏邪,如果满足则将该行数据加入fangji[]
     if tof=='1':
        fangji.append(data[a,8]) #8为方剂所在的.csv序列
        a=a+1					 #行数加一
        count=count+1
     else:
            a=a+1				#无论满不满足条件,均对行数加一
print("符合条件的数据有:%d"%count)
Result=Counter(fangji)
print("结果为",Result)

运行后结果如下:
在这里插入图片描述
输入的伏邪代码为0.
在这里插入图片描述

知识提炼(问题1):

  • 对于a的运用,当对首列的0,1进行判断时,是对第一列的迭代判断,不是行数,所以设立a方便记录行数,以便直接对行末尾的方剂进行读取,记录.
  • Counter(List):用于统计某个元素在List中出现的次数
  • skiprows = 1,读取文件时跳过第一行

.csv文件部分数据传至github

代码及实现(问题2)

import numpy as np
data=np.loadtxt(open('D:\drugs.csv'),delimiter=',', encoding='utf8',dtype=str) #读取数据
#print(data)打印数据
a=0                     #记录行数
count=0                 #记录满足条件的数量
zy=[]                   #List储存满足条件的数据
dict={}                 #字典储存最终统计结果
index=data[0,:][6:]     #储存第一行中药名称,作为字典的seq
counter=[]              #储存中药数量,不是Counter()方法!!!!
result=dict.fromkeys(index) #将index中的数据作为字典的key,且value默认为NONE
#判断是否满足某种伏邪,如果满足则提取数据存入zy[]
n=int(input("输入伏邪代码,“风\寒\湿\热\瘀\毒”分别为“0/1/2/3/4/5” :"))
for tof in data[:,n]:   #[:,n]表示所选的伏邪列数
    if tof=='1':
         zy.append(data[a,:][6:]) #[a,:]表示第a行数据,[6:]表示第a行数据从第七列开始的数据,将其存入zy[]
         a=a+1
    else:
         a=a+1
#统计每种药材的数量
sum=0							  #用于药材计数
j=0
for i in range(len(result)):      #len(result)为药材名称数量
    sum=0
    for j in zy:
        if j[i] =='1':			#zy[]中的第j个数据行中第i个药材名称
            sum=sum+1
    counter.append(sum)			#存入counter[]
num=0							
for key  in  result:            #将counter中的数据作为value,赋值给result{}中的key,满足一一对应关系
    result[key]=counter[num]
    num=num+1
print(result)

结果如下:
在这里插入图片描述
代码输入为0:
在这里插入图片描述

知识提炼(问题2):

  • len(dict):计算字典元素个数,即键的总数。
  • fromkeys() 方法语法:dict.fromkeys(seq[, value]) seq – 字典键值列表。value – 可选参数, 设置键序列(seq)对应的值,默认为 None。
    注意:若是直接将List赋值给某个字典,结果中list的值和dic中的键不是一一对应关系!

数据文件及源代码地址,注意路径

数据地址

注意

本博客数据文件版权归河南中医药大学信息技术学院及河南中医药大学第一附属医院所有,未经允许禁止用于非学习用途.

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值