用python读取json

今天接到一个需求,如下表
用python读取json_第1张图片
需求是导出的excel只要这两列,对video_name去重然后取它们取平均值。

观察数据结构,boxes里面是一个json,所以会涉及到json的读取

分析任务:
0.先把excel后缀改成csv。(不改的话中文乱码)
1.先用python读取csv

file = pd.read_csv(path)

2.取video_name和boxes这两列数据

all_data = file[['video_name', 'boxes']]  # 读取多列用中括号

3.取boxes中的json数据。(用到json库)
4.取json中的数据替换到boxes中的json

for i in range(len(all_data['boxes'])):
    score_data = json.loads(all_data['boxes'][i])  # 多个json照读,最后几个json就几个长度这样子
    figure = 0
    for j in range(len(score_data)):
        figure += score_data[j]['score']
    figure /= len(score_data)
    all_data['boxes'][i] = figure

5.对video_name整列做去重取平均

result = all_data.groupby(['video_name']).mean()

全部代码如下:

pandas 数据处理

import pandas as pd
import json
path = r'D:\project\code\xxx.csv'
file = pd.read_csv(path)
all_data = file[['video_name', 'boxes']]  # 读取多列用中括号
for i in range(len(all_data['boxes'])):
    # 多个json照读,最后几个json就几个长度这样子
    score_data = json.loads(all_data['boxes'][i])  
    figure = 0
    for j in range(len(score_data)):
        figure += score_data[j]['score']
    figure /= len(score_data)
    all_data['boxes'][i] = figure
result = all_data.groupby(['video_name']).mean()
savepath = r'D:\project\code\save.csv'
result.to_csv(savepath, encoding='utf-8-sig')

你可能感兴趣的:(工作内容,python,json,开发语言)