从CSV文件中读取并制作图表

时间:2014-03-02 15:59:47

标签: python python-2.7 csv

我有一点问题,希望有人可以帮助我。我在python中不是最好的。

我有一个" CSV"我必须操纵的文件。我希望你有3个问题可以提供帮助。

1:打印前两行

第一个我认为我已经完成了,我打印了前两行。

import csv
from pprint import pprint

data = open('iphonevsandroid.csv')

pprint (data.readlines(2))
f.close()

我得到的数据是这样的:

['week,iphone,android\n',
 '2004-01-04 - 2004-01-10,0,0\n',
 '2004-01-11 - 2004-01-17,0,0\n',
 '2004-01-18 - 2004-01-24,0,0\n',
 '2004-01-25 - 2004-01-31,0,0\n',
 '2004-02-01 - 2004-02-07,0,0\n',
 '2004-02-08 - 2004-02-14,0,0\n',
 '2004-02-15 - 2004-02-21,0,0\n',
 '2004-02-22 - 2004-02-28,0,0\n',
 '2004-02-29 - 2004-03-06,0,0\n',
 '2004-03-07 - 2004-03-13,0,0\n',
 '2004-03-14 - 2004-03-20,0,0\n',

2:解析第一个字段以将其转换为单个日期对象(提示:使用datetime.strptime)。您可以选择这两个日期中的任何一个。

import csv
import datatime

data = open('iphonevsandroid.csv')

reader1 = csv.reader1(data)

for row in reader1:
    print row[0]

这将打印我们需要的第一行,但如何获得1个日期?我必须稍后绘制它。

1 个答案:

答案 0 :(得分:0)

我会使用string.split方法。

在您的情况下,您可以按' - '

进行拆分

所以如果:

row = ['week,iphone,android\n',
'2004-01-04 - 2004-01-10,0,0\n',
'2004-01-11 - 2004-01-17,0,0\n',
'2004-01-18 - 2004-01-24,0,0\n',
'2004-01-25 - 2004-01-31,0,0\n',
'2004-02-01 - 2004-02-07,0,0\n',
'2004-02-08 - 2004-02-14,0,0\n',
'2004-02-15 - 2004-02-21,0,0\n',
'2004-02-22 - 2004-02-28,0,0\n',
'2004-02-29 - 2004-03-06,0,0\n',
'2004-03-07 - 2004-03-13,0,0\n',
'2004-03-14 - 2004-03-20,0,0\n']

我们可以将第一次值视为:

first_date_row = row[1]
    Output: '2004-01-04 - 2004-01-10,0,0\n'

您会看到第一个日期与第二个日期分隔为“ - ”。

这样:

first_date = first_date_row.split(' - ')[0]
Output: '2004-01-04'

我们如何获得第二次约会?那么我们可以执行与第一个日期相似的过程,但是在第二个日期之后将第一个逗号作为分隔符。

因此:

second_date = first_date_row.split(' - ')[1].split(',')[0]
Output: '2004-01-10'

请注意,这些日期只是Python的文本,您需要将它们转换为日期对象。你可以在这种情况下使用:

first_date_formated = datetime.strptime(first_date, '%Y-%m-%d')
second_date_formated = datetime.strptime(second_date, '%Y-%m-%d')
相关问题