我在 StackOverflow 上的第一篇文章,虽然我已经读了几年书了!
我正在使用 Python 清理和分析 IV 曲线的 CSV 数据转储。
我的基本问题是数据记录器给我的格式:每隔几分钟,在一个时间点上,它需要大约 100 次电压 (v)、电流 (i) 和功率 (p) 测量值,并将它们转储到一个CSV 文件。下一个测量值被附加到此。所以,我们得到的数据结构是:
Date1;0.2;0.1;0.02
Date1;0.3;0.1;0.03
Date1;0.4;0.1;0.04
Date2;0.2;0.1;0.02
Date2;0.3;0.1;0.03
Date2;0.4;0.1;0.04
Date3; etc...
此数据存储在文件 Data.csv 中
我写了一个名为 IVCurve 的类:
class IVCurve:
def __init__(self, datetime):
self.datetime = datetime
v = []
i = []
p = []
我想创建这些类实例的列表:
count = -1
thelist = []
prev_time = 0
import csv
with open('Data.csv', 'rb') as IVdump:
IVdata = csv.reader(IVdump, delimiter=';')
for datetime, v, i, p in IVdata:
# if we're onto a new date
if prev_time != datetime:
# note the new record
prev_time=datetime
#go to the next position in thelist[]
count +=1
#create a new curve
thelist.append(IVCurve(datetime))
# in any case, put the values of v, and i into this thelist[count]
thelist[count].v.append(float(v))
thelist[count].i.append(float(i))
thelist[count].p.append(float(v)*float(i))
我遇到的问题是 v 和 i 的所有值都放置在 thelist[] 的每个实例中,即,我得到了 IVCurve 实例的列表,每个实例都有不同的日期时间,但每个实例都有相同的一组v、i 和 p(该集合代表所有日期组合的整个数据集)。
我不明白我在这里做错了什么。在我看来,每次 count 增加(每次我们找到一个新日期),thelist[count] 应该是一个新的、唯一的记录。
示例数据(我已与此代码一起使用)我已粘贴在这里: http: //pastebin.com/Dw4dd7tu
所以问题是:如何分离这些值?
非常感谢你的帮助!