我对cpu power进行了性能测试,并获得了一组csv格式的数据。根据数据,有5个不同的事件,我想整理每个事件并计算开始时间&每个人的结束时间。我尝试在Python中使用Pandas进行数据分析,但是,我仍然不知道如何做到这一点。以下是我到目前为止编写的非常基本的代码。
import pandas as pd
from pandas import DataFrame
import os, sys
df = pd.read_csv('new.csv')
col_Time = df[df.columns[0]]
col_Data = df[df.columns[1]]
## example_time = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
## example_data_in_watts=[11.2, 10.3, 10.1, 21.2, 20.3, 22.1, 12.3, 10.7,
## 11.2, 23.6, 24.3, 25.1, 10.2, 11.3, 10.5]
## As above, each element in example_data_in_watts corresponds to element in
## example_time. From this data, there're 2 events happened when the watts
## are ~21w and ~24w. My desired output will be to calculate the start & end
## time for 21w & 24w, which are 3(sec) and 3(sec).
如上所示,我只分配了两个变量来表示2个不同的列:一个用于测试时间(单位:秒),另一个用于测试数据(单位:瓦特)。我能想到的一种方法是使用k-means方法来整理事件。但即使我这样做,我也不确定我是否可以获得开始时间&从那里结束时间?
如果有人知道如何整理事件并计算开始时间&结束时间,请告诉我。赞赏了很多!!
答案 0 :(得分:0)
从您的示例来看,这似乎是最简单的解决方案:
watts=[10,10,10,21,21,21,10,10,10,23,23,23,10,10,10]
result = {k : watts[:i+1].count(k) for i, k, in enumerate(watts) if k != 10}
修改强>
如果您有浮动数据,并根据您的示例,您可以执行以下操作:
watts=[10.2, 10.3, 10.1, 21.2, 21.3, 21.1, 10.3, 10.7, 10.2, 23.6, 23.3, 23.1, 10.2, 10.3, 10.5]
watts = map(int,watts)
result = {k : watts[:i+1].count(k) for i, k, in enumerate(watts) if k != 10}
编辑编辑
考虑到变化 2.5 ,我认为这可以解决问题:
watts=[11.2, 10.3, 10.1, 21.2, 20.3, 22.1, 12.3, 10.7, 11.2, 23.6, 24.3, 25.1, 10.2, 11.3, 10.5]
watts = map(lambda x: x + x % 5, map(lambda x: x - x % 2.5, map(int, watts)))
result = {k : watts[:i+1].count(k) for i, k, in enumerate(watts) if k != 10}