【发布时间】:2016-11-30 19:11:28
【问题描述】:
我目前正在处理一项数据处理任务。
我有两个 python 脚本,每个脚本实现一个单独的功能,但它们对相同的数据进行操作,我认为它们可以组合成一个工作流程,但我想不出最合乎逻辑的方式来实现这一点。
数据文件是here,它是 JSON,但它有两个不同的组件。
第一部分如下所示:
{
"links": {
"self": "http://localhost:2510/api/v2/jobs?skills=data%20science"
},
"data": [
{
"id": 121,
"type": "job",
"attributes": {
"title": "Data Scientist",
"date": "2014-01-22T15:25:00.000Z",
"description": "Data scientists are in increasingly high demand amongst tech companies in London. Generally a combination of business acumen and technical skills are sought. Big data experience ..."
},
"relationships": {
"location": {
"links": {
"self": "http://localhost:2510/api/v2/jobs/121/location"
},
"data": {
"type": "location",
"id": 3
}
},
"country": {
"links": {
"self": "http://localhost:2510/api/v2/jobs/121/country"
},
"data": {
"type": "country",
"id": 1
}
},
这是由第一个 python 脚本处理的,这里:
import json
from collections import defaultdict
from pprint import pprint
with open('data-science.txt') as data_file:
data = json.load(data_file)
locations = defaultdict(int)
for item in data['data']:
location = item['relationships']['location']['data']['id']
locations[location] += 1
pprint(locations)
呈现这种形式的数据:
1: 6,
2: 20,
3: 2673,
4: 126,
5: 459,
6: 346,
8: 11,
9: 68,
10: 82,
这些是位置"id"s 和分配给该位置的记录数。
JSON 对象的另一部分如下所示:
"included": [
{
"id": 3,
"type": "location",
"attributes": {
"name": "Victoria",
"coord": [
51.503378,
-0.139134
]
}
},
并由这个python文件处理:
import json
from collections import defaultdict
from pprint import pprint
with open('data-science.txt') as data_file:
data = json.load(data_file)
locations = defaultdict(int)
for record in data['included']:
id = record.get('id', None)
name = record.get('attributes', {}).get('name', None)
coord = record.get('attributes', {}).get('coord', None)
print(id, name, coord)
它以这种格式输出数据:
3 Victoria [51.503378, -0.139134]
1 United Kingdom None
71 data science None
32 None None
3 Victoria [51.503378, -0.139134]
1 United Kingdom None
1 data mining None
22 data analysis None
33 sdlc None
38 artificial intelligence None
39 machine learning None
40 software development None
71 data science None
93 devops None
63 None None
52 Cubitt Town [51.505199, -0.018848]
我真正想要的是最终输出看起来像这样:
3, Victoria, [51.503378, -0.139134], 2673
2673 引用第一个脚本中的作业计数。
如果它没有任何坐标,例如[51.503378, -0.139134]我可以扔了。
我确信将这些脚本组合在一起并获得输出是可能的,但我不是一个全面的思考者,我不知道如何去做。
所有真实的项目文件live here。
【问题讨论】: