安装
pip install pandas
sudo pip3 install python-pptx -i https://pypi.tuna.tsinghua.edu.cn/simple/
保存为csv格式:
import json
import os,re
import sys
import csv
import pandas as pd
class ReportTable(object):
def __init__(self):
self.mColumn=['包名','CPU核','CPU占用率(%)','运行时间(s)','最小频率(G)','最大频率(G)','平均频率(G)']
self.mTableData=[]
@classmethod
def newRowData(self,package,core,utilization,runtime_ns,min_freq_khz,max_freq_khz,avg_freq_khz):
return {
'package_name':package,
'core_name':core,
'utilization':utilization,
'runtime_ns':runtime_ns,
'min_freq_khz':min_freq_khz,
'max_freq_khz':max_freq_khz,
'avg_freq_khz':avg_freq_khz
}
def addRow(self,row):
self.mTableData.append([row['package_name'],row['core_name'],row['utilization'],row['runtime_ns'],
row['min_freq_khz'],row['max_freq_khz'],row['avg_freq_khz']
])
def outputCsv(self,save_to_csv):
report=pd.DataFrame(columns=self.mColumn,data=self.mTableData)
report.to_csv(save_to_csv,index=False,encoding='utf_8_sig')
reportTable=ReportTable()
row=[package,TraceMetrics.getReportCoreName(core),
keepTwoDecimals(float(value['runtime_ns'])/(trace_duration_ns*TraceMetrics.getFreqMult(core_distribution,core))*100.0),
keepTwoDecimals(value['runtime_ns']/1.e9),value['min_freq_khz'],value['max_freq_khz'],value['avg_freq_khz']
]
reportTable.addRow(ReportTable.newRowData(row))
reportTable.outputCsv(outputName+'_report.csv')
保存为pptx格式
import collections.abc
from pptx import Presentation
from pptx.util import Cm,Pt,Inches
from pptx import Presentation
from pptx.chart.data import ChartData
from pptx.enum.text import PP_ALIGN
from pptx.enum.text import MSO_ANCHOR
from pptx.enum.chart import XL_CHART_TYPE
from pptx.enum.chart import XL_LEGEND_POSITION
from pptx.dml.color import RGBColor
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[5])
shapes = slide.shapes
shapes.title.text = '报告'
shapes.title.text_frame.paragraphs[0].font.size = Pt(30)
chart_data = ChartData()
chart_data.categories = ['East', 'West', 'Midwest']
chart_data.add_series('Series 1', (19.2, 21.4, 16.7))
x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)
slide.shapes.add_chart(
XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data
)
slide = prs.slides.add_slide(prs.slide_layouts[5])
shapes = slide.shapes
shapes.title.text = '报告'
shapes.title.text_frame.paragraphs[0].font.size = Pt(30)
header =['fd','fdg','fdse','gfv']
row=[['1','2','4','5'],
['2','2','4','5'],
['3','2','4','5'],
['4','2','4','5'],
['5','2','4','5'],
['6','2','4','5'],
['7','2','4','5'],
['8','2','4','5'],
['9','66','3','1']
]
table = slide.shapes.add_table(rows = len(row)+1,
cols = len(header),
left = Cm(3.5),
top = Cm(5.5),
width = Cm(20),
height = Cm(6)
).table
for i, h in enumerate(header):
cell = table.cell(0, i)
cell.text = h
cell.text_frame.paragraphs[0].font.size = Pt(16)
cell.text_frame.paragraphs[0].font.color.rgb = RGBColor(255, 255, 255)
cell.text_frame.paragraphs[0].font.name = '微软雅黑'
cell.text_frame.paragraphs[0].font.bold = True
cell.text_frame.paragraphs[0].alignment = PP_ALIGN.CENTER
cell.vertical_anchor = MSO_ANCHOR.MIDDLE
cell.fill.solid()
cell.fill.fore_color.rgb = RGBColor(49, 134, 155)
row_num=0
for i, row_d in enumerate(row):
for j,col_d in enumerate(row_d):
cell = table.cell(i+1, j)
if j==0 and i+2<len(row) and i%3==0:
cell.merge(table.cell(i+1+2, 0))
cell.text = str(col_d)
cell.text_frame.paragraphs[0].font.size = Pt(9)
cell.text_frame.paragraphs[0].font.name = '微软雅黑'
cell.text_frame.paragraphs[0].alignment = PP_ALIGN.CENTER
cell.vertical_anchor = MSO_ANCHOR.MIDDLE
cell.fill.solid()
cell.fill.fore_color.rgb = RGBColor(240, 240, 240)
prs.save('chart-01.pptx')