Tinder允许您导出数据(https://account.gotinder.com/data),最终导出data.json
文件。
如何将该嵌套的json转换为可加载到电子表格中的CSV文件?
该文件如下所示:
$ cat data.json |jq .Usage
{
"app_opens": {
"2018-06-03": 3,
"2018-06-04": 10,
"2018-06-05": 2,
...
用途:
messages_sent
matches
messages_received
swipes_passes
swipes_likes
app_opens
具有有趣数据的完整json如下所示:
{
"Usage": {
"app_opens": {
"2018-06-03": 3,
"2018-06-04": 10,
"2018-06-05": 2
},
"messages_sent": {
"2018-06-03": 7,
"2018-06-04": 9,
"2018-06-05": 0
},
"matches": {
"2018-06-03": 3,
"2018-06-04": 1,
"2018-06-05": 7
},
"messages_received": {
"2018-06-03": 30,
"2018-06-04": 1,
"2018-06-05": 20
},
"swipes_passes": {
"2018-06-03": 56,
"2018-06-04": 1,
"2018-06-05": 8
},
"swipes_likes": {
"2018-06-03": 30,
"2018-06-04": 4,
"2018-06-05": 4
}
}
}
输出应如下所示:
date,messages_sent,matches,messages_received,swipes_passes,swipes_likes,app_opens
2018-06-03,0,2,0,4,10,2
2018-06-04,2,2,1,1,18,6
2018-06-05,35,7,32,1,47,3
此Python代码将完成此工作:
from __future__ import print_function
import json
import itertools
# load json into an object
with open('data.json') as f:
d = json.load(f)
usage = d['Usage']
# get all listed dates
dates = sorted(set(itertools.chain.from_iterable([[day for day in usage[t]] for t in usage])))
# pivot data into one row per date with multiple columns
print(','.join(['date']+[t for t in usage]))
for day in dates:
print(','.join([day] + [str(usage[t][day]) for t in usage]))
这会将json文件中的使用情况数据转换为如下所示的csv:
date,messages_sent,matches,messages_received,swipes_passes,swipes_likes,app_opens
2018-06-03,0,2,0,4,10,2
2018-06-04,2,2,1,1,18,6
2018-06-05,35,7,32,1,47,3
2018-06-06,16,1,9,4,32,2
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句