今天接到一个需求,如下表
需求是导出的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')