Python 按月份和年份分组数据

Python 按月份和年份分组数据,python,Python,我有一个.json文件,其中包含很多文章,每篇文章的格式如下: { "source": "....", "title": ".......", "original_time": "ora: 20:03, 06 dec 2006", "datetime": "2006-12-06T20:03:00+00:00", "views": 398, "comments": 1, "content": "..." "id": "13", } 现在,我必须总结每个月和每年所有文章的浏览量,并绘制结果……但我

我有一个.json文件,其中包含很多文章,每篇文章的格式如下:

{
"source": "....",
"title": ".......",
"original_time": "ora: 20:03, 06 dec 2006",
"datetime": "2006-12-06T20:03:00+00:00",
"views": 398,
"comments": 1,
"content": "..."
"id": "13",
}
现在,我必须总结每个月和每年所有文章的浏览量,并绘制结果……但我不知道如何做到这一点,因为我是python新手……这就是我所做的:

import json
#from pprint import pprint
import csv
import time
import datetime

views = []
time = []
art_timpul = 0
unimedia = 0
total_articles = 0
json_data=open('all.json')
data = json.load(json_data)
#pprint(data)
json_data.close()

for i in data:
    if i["source"] == 'unimedia':
        art_unimedia += 1
        x = i["views"]
        views.append(int(x))
        y = i["original_time"]
        time.append(y)
    if i["source"] == 'timpul':
        art_timpul += 1
    total_articles += 1

myfile = open('output.csv', 'wb')
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
wr.writerow(views)

print time
#print views
print "Articles from Unimedia", art_unimedia
print "Articles from Timpul", art_timpul        
print "Total articles", total_articles

编辑:我必须按月和按年对数据进行分组,我必须总结当月和按年撰写的文章的视图数量…并将其导出到文件中

您的问题并不完全清楚,但我假设您在读取和写入文件方面没有问题,而只是在解析日期字符串和对数据进行分组方面

首先,解析日期。在这里,您可以使用dateutil.parser.parse或。在默认情况下,dateutil.parser似乎希望使用与您相同的日期格式,因此我们将使用此格式而不是strptime

接下来,分组:最简单的方法是使用几个月或几年的映射时间来映射视图。您还可以使用字典来查找不同的源,而不是您现在拥有的这两个变量。只需使用月份或年份作为字典的键,并相应地更新值。为了让生活更轻松,我们可以使用,所以我们不必检查密钥是否已经存在

在同一循环中,按月份分组的示例与年和源等类似:

import collections, dateutil.parser
views_by_month = collections.defaultdict(int)
for item in data:
    views = item["views"]
    date = dateutil.parser.parse(item["datetime"])
    views_by_month[date.month] += views
print views_by_month

到底是什么问题?从json中提取数据,解析日期字符串,对数据进行分组。。。?请更具体一点。我必须按月和按年对数据进行分组,我必须总结当月和按年撰写的文章中的观点数量……并将它们导出到一个文件中,您应该查看这些文件。这对这类事情很有好处,但学习曲线很陡。谢谢,我做了一些修改,以这样工作:2006年1月、2006年2月、2006年3月……直到2014年5月……每年的每个月: