我正在尝试建立一种在 Python 3 中自动执行大量数据分析的方法。目前,大部分实际分析相当简单(根据 4 个输入文件绘制 2 条曲线并进行一些计算)。因为我总是至少有 4 个文件,所以我目前有这样的东西可以从我正在查看的 4 个文件中读取 .csv 文件中的所有数据。实际上,在任何给定时间都有大约 150 多个文件,我需要一种方法来非常快速地比较所有文件。
对于一些背景:
1)。所有文件都将位于具有相同路径的同一文件夹中(特定文件名除外)。2)。有两个类别(我称它们为“Control”和“NP”),每个类别有 2 个与之对应的文件:Control-A、Control-B 和 NP-A 和 NP-B。3)。当前有大量信息位于文件名中(实验室条件等数据采集软件在测量期间实时读取),但文件名中间的某个位置包含“暗”或“照亮”。
有了这些信息,我试图找到一种方法来一次导入所有文件并根据文件名将它们分开。例如,包含单词“ControlDark”的所有文件将被组合在一起,包含“ControlIlluminated”的所有文件将被组合在一起,对于其他两种组合(“NPDark”和“NPIlluminated”),依此类推。
现在,我所拥有的只是一个 GUI,它允许我从特定路径(使用 askopenfilename())手动选择 4 个文件。我不知道有什么好方法可以同时读取数百个 .csv 文件。
现在,我一次只能容纳 4 个数据集,因为我不知道一种保存整个文件夹价值数据的方法(没有相应的 askopenfilename() 或 np.genfromtxt('path\filename.csv') )
f1 = askopenfilename()
f1_data = pd.read_csv(f1, names = ['A', 'B', 'C'])
f2 = askopenfilename()
f2_data = pd.read_csv(f2, names = ['A', 'B', 'C'])
f3 = askopenfilename()
f3_data = pd.read_csv(f3, names = ['A', 'B', 'C'])
f4 = askopenfilename()
f4_data = pd.read_csv(f4, names = ['A', 'B', 'C'])
基本上我用 askopenfilename() 命令调出一个 gui 并手动查找有问题的 4 个文件。但是,我想自动执行此操作,以便我可以从一开始就将所有约 150 多个文件转储到该文件中。
我找到了一种开始的方法,但是我在将每个文件读入它自己的数据结构时遇到了一些困难。到目前为止,我有:
import glob
import pandas as pd
import os
path = r'full\path\here'
all_files = glob.glob(os.path.join(path, "*.csv"))
#Setting up a list for each of the 4 files I need to generate each plot
DarkControl = []
IllControl = []
DarkNP = []
IllNP = []
for f in all_files:
if "Control" in f and "Dark" in f:
DarkControl.append(f)
elif "Control" in f and "Illuminated" in f:
IllControl.append(f)
elif "GoldNP" in f and "Dark" in f:
DarkNP.append(f)
elif "GoldNP" in f and "Illuminated" in f:
IllNP.append(f)
所以我有每个类别的列表,但现在它是一个字符串列表。有没有一种好方法(可能使用 Pandas 数据框?)为 all_files 中的每个文件 f 创建一个数据框?我绝对想避免为所有文件创建一个庞大的结构。在每个文件中,第一列是我的 x 变量,第二列是我的 y 变量。我想确保我可以针对 x 值绘制任何给定 f 的 y 值和其他一些 f 的 y 值(所有文件的所有 x 值都相同)
白衣非少年
相关分类