Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据文件名中是否存在特定字符串,将~150+(.csv)文件中的数据分为两类_Python - Fatal编程技术网

Python 根据文件名中是否存在特定字符串,将~150+(.csv)文件中的数据分为两类

Python 根据文件名中是否存在特定字符串,将~150+(.csv)文件中的数据分为两类,python,Python,我正试图在Python3中建立一种自动化大量数据分析的方法。目前,大多数实际分析相当简单,基于4个输入文件绘制2条曲线,并进行一些计算。由于我将始终有至少4个文件,我目前有这样的东西从我正在查看的4个文件中读取.csv文件中的所有数据。实际上,在任何给定的时间都有大约150多个文件,我需要一种方法来快速比较所有这些文件 对于某些背景: 一,。除特定文件名外,所有文件都将位于具有相同路径的同一文件夹中。 2.有两个类别,我称之为“Control”和“NP”,每个类别有两个对应的文件:Control

我正试图在Python3中建立一种自动化大量数据分析的方法。目前,大多数实际分析相当简单,基于4个输入文件绘制2条曲线,并进行一些计算。由于我将始终有至少4个文件,我目前有这样的东西从我正在查看的4个文件中读取.csv文件中的所有数据。实际上,在任何给定的时间都有大约150多个文件,我需要一种方法来快速比较所有这些文件

对于某些背景:

一,。除特定文件名外,所有文件都将位于具有相同路径的同一文件夹中。 2.有两个类别,我称之为“Control”和“NP”,每个类别有两个对应的文件:Control-A、Control-B和NP-A和NP-B。 3.目前有大量的信息位于文件名实验室条件中,因此数据采集软件在测量期间正在现场读取,但是文件名中间的某个地方的字要么是暗的,要么是照亮的。p> 有了这些信息,我试图找到一种方法,一次导入所有文件,并根据文件名将它们分开。例如,包含ControlDark字样的所有文件都将分组在一起,包含ControlLighted字样的所有文件都将分组在一起,对于其他两种组合NPDark和NPLighted,依此类推

现在,我只有一个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)

所以我有一个每个类别的列表,但现在它是一个字符串列表。有没有一种可能使用熊猫数据帧的好方法?要为所有_文件中的每个文件f创建数据帧?我想绝对避免创建一个包含所有文件的大型结构。在每个文件中,第一列是我的x变量,第二列是我的y变量。我想确保我可以绘制任意给定f的y值和其他f的y值与x值的对比所有x值对于所有文件都是相同的

通常我们会要求提供一个MVC示例,我们可以测试代码。不过,我想我确实对你的问题有所了解

如果我正确理解了你的问题,你有传感器类型的数据,其中x是某种类型的时间轴,这在多个实验试验中重复

您对文件进行了正确的排序,但是python列表理解可能是一种更干净/更具python风格的编写方法

Dark_control=[f表示所有_文件中的f,如果控制在所有_文件中,则表示所有_文件中的f]

您还可以在glob.glob中实现模式匹配

数据框架非常适合这种类型的结构,根据您的数据结构和设置方式,您也可以使用相同的列表理解来读取数据

Dark_control=[pd.read_csvf for f in all_file if control in all_file if Dark in all_file]

上面的代码将创建一个包含所有值的数据帧数组,您可以将这些值pd.concat或pd.join放在一起,具体取决于最终数据的获取方式


不知道为什么不能将所有数据放在一个大数据框中进行分析。请考虑使用多索引将不同的实验试验分开

通常我们会要求提供一个MVC示例来测试代码。不过,我想我确实对你的问题有所了解

如果我正确理解了你的问题,你有传感器类型的数据,其中x是某种类型的时间轴,这在多个实验试验中重复

您对文件进行了正确的排序,但是python列表理解可能是一种更干净/更具python风格的编写方法

Dark_control=[f表示所有_文件中的f,如果控制在所有_文件中,则表示所有_文件中的f]

您还可以在glob.glob中实现模式匹配

数据框架非常适合这种类型的结构,根据您的数据结构和设置方式,您也可以使用相同的列表理解来读取数据

Dark_control=[pd.read_csvf for f in all_file if control in all_file if Dark in all_file]

上面的代码将 创建一个包含所有值的数据帧数组,根据最终数据的使用方式,可以将这些值pd.concat或pd.join放在一起


不知道为什么不能将所有数据放在一个大数据框中进行分析。请考虑使用多索引将不同的实验试验分开

这正是我想要的,非常感谢!这正是我想要的,非常感谢!