Python 脚本解析grafana之csv文件直接得出平均数、中位数和占比

import pandas as pd
import math
#使用说明
#1.终端安装python3和pandas库
#2.将下载的csv文件命名为grafana_data_export.csv并放在此py同目录下 终端执行'python3 script.py'


df = pd.read_csv('./grafana_data_export.csv', skiprows=[0])  # 忽略第一行
rows = df.shape[0]
while rows > 0:
    a = df.values[rows-1]
    a = a[0].split(';')                     # 按分号分割字符串为数组
    lenth = len(a)
    df.values[rows-1] = a[lenth-1]          # 用分割字符数组的最后一个代替原df对应行的值
    rows -= 1
df.columns = ['A']                          # 起列名A
a = df['A']
rows = df.shape[0]

while rows > 0:                               # 字符转数字 为空的转为0
    rows -= 1
    if df.values[rows-1] != "null":
        df.values[rows-1] = float(df.values[rows-1])
    else:
        df.values[rows-1] = 0

df = df[df.A > 0]
arr = df['A']
arr = arr.values
arr = arr.tolist()

# 平均耗时
print('平均毫秒:%s' % round(np.mean(arr), 2))

# 中位数
print('中位数:%s' % round(np.median(arr), 2))

# 1s内占比
rows = df.shape[0]                  # 多少行
greater_df = df[df.A >= 1000]       # 取出大于1的
greater_rows = greater_df.shape[0]  # 行数
percents = round(1 - (greater_rows/rows), 4)
print('1s内占比:%s%%' % str(percents*100))

# 方差
print('方差:%s' % np.var(arr))
# 标准差
print('标准差:%s' % round(np.std(arr), 2))
# 极差
print('极差:%s' % np.ptp(arr))
# 变异系数
print('变异系数:%s%%' % round((np.std(arr)/np.mean(arr))*100, 4))

你可能感兴趣的:(Python 脚本解析grafana之csv文件直接得出平均数、中位数和占比)