Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Ordenar y trazar datos desdeMATLABPython

Este ejemplo muestra cómo clasificar los datos sobre los pacientes en listas de fumadores y no fumadores en y trazar las lecturas de la presión arterial para los pacientes con.Python®MATLAB®

Inicie el motor y lea los datos sobre un conjunto de pacientes en una tabla. proporciona un archivo delimitado por comas de muestra, que contiene información sobre 100 pacientes diferentes.MATLABMATLABpatients.dat

import matlab.engine eng = matlab.engine.start_matlab() eng.eval("T = readtable('patients.dat');",nargout=0) 

La función Lee los datos en una tabla.MATLABreadtable El motor no admite el tipo de datos de tabla.MATLAB Sin embargo, con la función puede convertir la tabla a una estructura escalar, que es un tipo de datos que el motor admite.MATLABtable2struct

eng.eval("S = table2struct(T,'ToScalar',true);",nargout=0) eng.eval("disp(S)",nargout=0) 
                    LastName: {100x1 cell}                       Gender: {100x1 cell}                          Age: [100x1 double]                     Location: {100x1 cell}                       Height: [100x1 double]                       Weight: [100x1 double]                       Smoker: [100x1 double]                     Systolic: [100x1 double]                    Diastolic: [100x1 double]     SelfAssessedHealthStatus: {100x1 cell} 

Puede pasar del espacio de trabajo a la sesión.SMATLABPython El motor se convierte en un diccionario,.SPythonD

D = eng.workspace["S"] 

tiene campos que contienen matrices.S El motor convierte matrices de celdas en variables y matrices numéricas en matrices.PythonlistMATLAB Por lo tanto, es de tipo de datos y es de tipo de datos.D["LastName"]listD["Age"]matlab.double

Ordene las lecturas de la presión arterial en listas de fumadores y no fumadores. En, la columna indicaba un fumador con lógica 1 (true), y un no fumador con un 0 lógico (falso).patients.datSmoker Convertir a una matriz para ordenar.D["Smoker"]matlab.logical

smoker = matlab.logical(D["Smoker"])

Convierta las lecturas e indicadores de la presión arterial en matrices de 1 por 100 para clasificar.DiastolicSmokerMATLAB

pressure = D["Diastolic"] pressure.reshape((1,100)) pressure = pressure[0] smoker.reshape((1,100)) smoker = smoker[0] 

Ordene la matriz en listas de lecturas de presión arterial para fumadores y no fumadores. las comprensiones de lista proporcionan un método compacto para iterar secuencias.pressurePython Con la función, puede iterar en varias secuencias en un solo bucle.Pythonzipfor

sp = [p for (p,s) in zip(pressure,smoker) if s is True] nsp = [p for (p,s) in zip(pressure,smoker) if s is False] 

Mostrar la longitud de, las lecturas de la presión arterial para los fumadores en un.splist

print(len(sp)) 
34 

Muestre la longitud de las lecturas de los no fumadores.nsplist

print(len(nsp)) 
66 

Calcule las lecturas de presión arterial media para fumadores y no fumadores. Convertir y a matrices antes de pasarlas a la función.spnspMATLABMATLABmean

sp = matlab.double(sp) nsp = matlab.double(nsp) print(eng.mean(sp)) 
89.9117647059 

Muestre la presión arterial media para los no fumadores.

print(eng.mean(nsp)) 
79.3787878788 

Trazar lecturas de la presión arterial para los fumadores y no fumadores. Para definir dos ejes para el trazado, llame a la función.xMATLABlinspace Puede trazar los 34 fumadores y 66 no fumadores en el mismo diagrama de dispersión.

sdx = eng.linspace(1.0,34.0,34) nsdx = eng.linspace(1.0,34.0,66) 

Mostrar los límites de los ejes con la función.box

eng.figure(nargout=0) eng.hold("on",nargout=0) eng.box("on",nargout=0) 

Debe llamar a la, y funciones con, porque estas funciones no devuelven argumentos de salida.figureholdboxnargout=0

Trazar las lecturas de la presión arterial para los fumadores y no fumadores, y etiquetar la parcela. Para muchas funciones, el motor puede devolver un manejador a un objeto gráfico.MATLABMATLAB Puede almacenar un identificador para un objeto en una variable, pero no puede manipular las propiedades del objeto.MATLABPythonPython Puede pasar objetos como argumentos de entrada a otras funciones.MATLABMATLAB

eng.scatter(sdx,sp,10,'blue') 
<matlab.object object at 0x22d1510> 

En el resto de este ejemplo, asigne el argumento de salida de las funciones como un marcador de posición.MATLABh

h = eng.scatter(nsdx,nsp,10,'red') h = eng.xlabel("Patient (Anonymized)") h = eng.ylabel("Diastolic Blood Pressure (mm Hg)") h = eng.title("Blood Pressure Readings for All Patients") h = eng.legend("Smokers","Nonsmokers") 

Dibuje líneas que muestren las lecturas medias de la presión arterial para fumadores y no fumadores.

x = matlab.double([0,35]) y = matlab.double([89.9,89.9]) h = eng.line(x,y,"Color","blue") h = eng.text(21.0,88.5,"89.9 (Smoker avg.)","Color","blue") y = matlab.double([79.4,79.4]) h = eng.line(x,y,"Color","red") h = eng.text(5.0,81.0,"79.4 (Nonsmoker avg.)","Color","red") 

Consulte también

|