每组都有一个文本文件,如下所示:
Set1: Cow Goat Lion Mole
Set2: Mole Badger Snake
Set3: Goat Snake Zebra
我的目标是获得每个唯一值在集合中的分布矩阵以及每个值的总计数
S1 S2 S3 Total
Goat Y N Y ....2
Snake N Y Y ....2
一开始它可能看起来像一个excel问题,但是数据集很大,我不确定数据透视表是否可以做到这一点。我的方法是在python中,但我是新手,正在寻求有关最佳方法的建议 -将每个csv读取到dataframe(concat?) -在所有列中查找唯一值(存储在df中?) 对每个唯一值运行迭代以获得频率 -我不确定如何跟踪设置的计数并生成所需的表格输出 -tx
答案 0 :(得分:0)
导入必要的软件包
import pandas as pd
import os
import glob
设置所有.txt文件所在的路径
path = r'C:\rawdata_files' # use your path
all_files = glob.glob(os.path.join(path, "*.txt")) # advisable to use os.path.join as this makes concatenation OS independent
列表如下所示:
all_files = ['val1.txt', 'val2.txt']
使用文本文件名作为列,将条目作为行来创建df
df = pd.concat([pd.read_csv(item, names=[item[:-4]]) for item in all_files], axis=1) ##-4 is done as you would not need .txt as your column name
获取列中每个元素的总值:
df.stack().value_counts()