[python] producción de diagramas de caja

Representación de diagrama de caja

inserte la descripción de la imagen aquí
Este es un diagrama de caja hecho con python, que muestra 10 diagramas de caja en el mismo eje. Los diagramas de caja son excelentes para mostrar distribuciones discretas de datos. Además de la visualización de la imagen, Python también puede calcular los datos relevantes de cada diagrama de caja, como el valor promedio, el valor máximo, el valor mínimo, etc. de los datos de destino, por ejemplo (algunos datos correspondientes al diagrama de caja anterior):

          index1      index2      index3     
count  842.000000  842.000000  842.000000    
mean     9.284371    9.044644    8.989394   
std      0.240151    0.261572    0.267525   
min      7.880000    7.800000    7.300000   
25%      9.162500    8.900000    8.840000   
50%      9.320000    9.070000    9.020000    
75%      9.440000    9.217500    9.160000       
max      9.800000    9.760000    9.730000    

el código

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import xlrd

#保存数据,可用于之后的学习研究
def save_data(data, path):
    Note=open(path,mode='w')
    print("保存数据")
    Note.write(str(data))
    Note.close()

#读取xls文件数据
def read_excel(excel_name,sheet_name):
    """参数:
    输入:excel的名字
    输出:目标表的名字"""
    workbook = xlrd.open_workbook(excel_name)  #打开文件
    sheet = workbook.sheet_by_name(sheet_name)  #读取sheet页
    # 获取表的行列数
    rows = sheet.nrows
    cols = sheet.ncols
    all_data = []
    tempList = []
    # 读取放置在excel中的数据
    for col in range(3, 13):
        for row in range(1, rows):
            print(rows)
            tempList.append(sheet.cell(row, col).value)
        all_data.append(tempList)
        tempList = []
    return all_data

#设置盒图的图片参数
def draw_box(all_data):
    for i in range(1):
        db = np.array(all_data)  # 把数据放置到numpy中的数组中
        print(db)
        fig = plt.figure(figsize=(40, 15))  # 设置画布大小
        ax = fig.add_subplot(111)  # 图形在画布中的布局
        allg = ["index1", "index2", "index3", "index4", "index5", "index6", "index7", "index8", "index9","index10"]  # 设置横坐标
        df = pd.DataFrame(db.T, columns=allg)  # db.T表示转置
        ax.set_title("Box-and-Whisker Plots", fontsize=24)  # 以下表示设置坐标标签以及字体大小
        ax.set_xlabel('index', fontsize=22)
        ax.set_ylabel('grade', fontsize=22)
        df.boxplot(ax=ax, fontsize=24)
        plt.savefig("盒图4.jpg")  # 保存
        plt.show()
        pd.set_option('display.max_columns', None)  # 为了将数据全部展示,显示全部列
        data = df.describe()  # 计算相关指标
        print(data)
        save_data(data, "数据.txt")  # 用于存储各组数据的指标数据


if __name__ == '__main__':
    all_data = read_excel("参数1", "参数2")#读取数据,参数1是excel的名字,参数2是里面具体的表名
    draw_box(all_data)#绘制图表

Instrucciones

datos

Los datos utilizados en este código están en unidades de columnas, es decir, cada columna de datos corresponde a un diagrama de caja.
En el bucle for de la función read_excel() al leer los datos de la tabla:

for col in range(3, 13):
        for row in range(1, rows):

(El subíndice de la primera columna en la tabla de Excel comienza desde 0), puede modificarlo según sus necesidades.

cuadro

allg = ["index1", "index2", "index3", "index4", "index5", "index6", "index7", "index8", "index9","index10"]  # 设置横坐标

allg establece la abscisa, que se puede modificar de acuerdo con sus datos reales

La siguiente es mi dirección de git, bienvenidos a todos a descargar gratis, intercambiar y aprender:

https://github.com/HYHJessica/

Supongo que te gusta

Origin blog.csdn.net/CBCY_csdn/article/details/125697843
Recomendado
Clasificación