我需要一些帮助从CSV文件中创建一些列表:
现在,我导入了一个文件并创建了两个列表。我的代码如下:
列表week包含取自row[0]的所有周的日期。
列表weight = []包含来自row[1]的所有权重。
到目前为止,你在这里看到的代码:
import csv
import datetime
import matplotlib.pyplot as plt
from pprint import pprint
#Open Data/File
data1 = open('wloss.csv', 'r')
reader1 = csv.reader(data1, delimiter=',')
week = []
weight = []
dateTime = []
week_year_2011 = []
week_year_2012 = []
week_year_2013 = []
weight_year_2011 = []
weight_year_2012 = []
weight_year_2013 = []
for row in reader1:
if row[0] != 'week':
week.append(row[0][:-13])
if row[1] != 'weight loss':
weight.append(row[1])
for item in week:
dateTime.append(datetime.datetime.strptime(item, '%Y-%m-%d'))我拿到的周列表也是从2004年到2014年
如下所示(您只能看到2005年的数据):
datetime.datetime(2005, 4, 10, 0, 0),
datetime.datetime(2005, 4, 17, 0, 0),
datetime.datetime(2005, 4, 24, 0, 0),
datetime.datetime(2005, 5, 1, 0, 0),
datetime.datetime(2005, 5, 8, 0, 0),
datetime.datetime(2005, 5, 15, 0, 0),
datetime.datetime(2005, 5, 22, 0, 0),我知道2011年的第一个日期和最后一个日期是:
datetime.datetime(2011, 1, 2, 0, 0),
datetime.datetime(2011, 12, 25, 0, 0),我如何将2011、2012和2013年的datetime数据放入3个新列表中,就像我在下面定义的那样:
week_year_2011 = []
week_year_2012 = []
week_year_2013 = []应该做一个for语句还是什么??
另外,我如何从2011、2012、2013中获得正确的权重,并将它们放入其他3个类似的列表中:
weight_year_2011 = []
weight_year_2012 = []
weight_year_2013 = []我必须用2011,2012和2013年的数据制作3个图(在1个图中)。希望有人能帮助如何制作这些新的列表,并在其中放入正确的数据。
发布于 2014-03-03 20:32:24
我会使用字典按日期对数据进行分组。
您似乎有一个CSV文件,其标题位于第一行。以下是一个更简单的版本,它按日期将数据拆分到单独的列表中:
import csv
import datetime
by_year = {}
with open('wloss.csv', 'rb') as data1:
reader = csv.reader(data1)
next(reader, None) # skip first row with headers
for week, weight_loss in reader:
date = datetime.datetime.strptime(week, '%Y-%m-%d').date()
by_year.setdefault(date.year, []).append((week, weight_loss))这将构建一个以年份为关键字的字典,每个值都有一个(date, weight_loss)元组列表。
https://stackoverflow.com/questions/22146809
复制相似问题