用Python处理实验测量

2024-05-16 22:05:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要处理一系列实验的数据。每个实验在一个“csv”文件中有几个传感器测量值,例如:

experiment1.csv:

time, sensor1, sensor2, sensor3
0, 1.3, 4.7, 2.9, 6.6
1, 2.8, 7.1, 4.2, 1.1
.
.

experiment2.csv

time, sensor1, sensor3, sensor6
0, 3.8, 7.1, 2.2, 1.1
1, 1.6, 4.1, 14.1, 3.7
.
.

我需要组织数据,以便我可以很容易地比较试验之间的测量。例如,我可能想将实验1中传感器1测得的值与实验2中传感器6测得的值相减,并将差值绘制为时间的函数。你知道吗

现在我正在使用熊猫数据帧来处理数据

exp1 = pd.read_csv('experiment1.csv')
exp2 = pd.read_csv('experiment2.csv')

diff = exp1['sensor1'] - exp2['sensor3']
plot(exp1['time'],diff)

这很麻烦,因为当我想添加另一个实验时,我需要进入并手动创建一个新的数据帧。通常情况下,我可能同时处理50个试验的数据,而概述的方法不能很好地扩展。你知道吗

理想情况下,我想有一个脚本,我可以运行在一个目录与任意数量的数据文件,这将创建一个数据帧为每个文件,我可以参考实验指示符和传感器编号。你知道吗

有什么方法可以修改上面的代码,为目录中的每个文件创建一个数据帧,而不必手动添加'pd.read\U csv文件“每个案子的命令?你知道吗

谢谢。你知道吗


Tags: 文件csv数据readtimediff传感器手动
1条回答
网友
1楼 · 发布于 2024-05-16 22:05:53

您真正感兴趣的是os库,特别是listdir函数。你知道吗

但是当你在做的时候,为什么不把你所有的测量合并到一个数据帧中呢?您可以将它们添加为列或多重索引的级别,以您喜欢的方式添加。你知道吗

以下是列方法:

import os
import pandas as pd
directory_contents = os.listdir(your_directory)
experiment_files = [fn for fn in directory_contents if '.csv' in fn]
df = pd.DataFrame()

for filename in experiment_files:
    experiment_df = pd.read_csv(filename)
    experiment_df['experiment_name'] = file_name
    df = pd.concat([df,experiment_df])

相关问题 更多 >