对不同组中的数据进行排序并计算开始时间和时间。在熊猫结束

时间:2017-06-16 08:39:36

标签: python csv pandas

我对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方法来整理事件。但即使我这样做,我也不确定我是否可以获得开始时间&从那里结束时间?

如果有人知道如何整理事件并计算开始时间&结束时间,请告诉我。赞赏了很多!!

1 个答案:

答案 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}