我的数据如下所示,例如制表符分隔格式:
Sample Dog Cat Tarsier
A47 1 7 2
A48 3 3 4
A51 2 1 8
A53 0 0 0
A54 1 7 2
A57 0 0 10
虽然这里可能不清楚,但样本名称在第1列中,值对应于Dog、cat或Tarsier。我希望保留每个示例的90%的数据,并在PYTHON中删除其余的数据。例如,对于样本A47,我想检索如下内容:
^{pr2}$这对我来说很困难,因为每个样品都需要3条信息:样品名称、动物和数量。 有什么想法吗?提前谢谢
根据下面的注释,第二行可以包括所有数字,但不包括可能出现的所有其他数字(未显示)。这是因为,在本例中,如果没有第二个3,则只有不到90%的数据,这可能比拥有90%以上的数据更糟糕。如何做到这一点超出了我的PYTHON编程技能。在
假设您使用的是python3(它可能在Py2中也可以工作,但我不知道),只需将其视为由制表符分隔的CSV,而不是逗号
该函数将返回一个如下所示的集合
^{pr2}$从那以后,这只是一个数学问题来决定放弃哪个值。当然,您可以在for循环中计算并返回所需的值。我只想返回一组可以被其他函数使用的值,所以我就这样做了。在
我强烈建议你考虑一下。在
使用NumPy,您可以定义所谓的结构化数组(structured array),即每行由不同字段组成的数组,您可以直接命名和访问这些字段。在
假设您的数据存储在一个制表符分隔的文件
data.dat
,使用您描述的格式,您可以这样做^{} 函数从
^{pr2}$'data.txt'
读取数据,沿delimiter
拆分每一行,使用第一行获得字段名(names=True
),并猜测每个字段(data=None
)的数据类型。以你的例子,我得到从这里,我们可以选择字段的组合
或者只有几行:
对字段进行统计:
简言之,您可以按照您想要的方式过滤数据。在
如果我是对的,你删除了“狗”,因为它是<;=10%的动物总数。 让我们创建一个结构
然后,每次将读取的数据放入这个结构中,只需将每个字段设置为0<;=10%:
^{pr2}$正如您所读到的,由于使用此代码的动物数组,您可以拥有任意(但固定)数量的动物。在
相关问题 更多 >
编程相关推荐