Buscar

Código para sumarizar batimentos cardíacos humanos em Assembler_LinguagemC_ Python


Prévia do material em texto

Código para sumarizar batimentos cardíacos humanos em Python
Python
import pandas as pd
import numpy as np
def sumarizar_batimentos_cardiacos(arquivo_csv):
 """
 Função para sumarizar os batimentos cardíacos humanos a partir de um arquivo CSV.
 Argumentos:
 arquivo_csv (str): Caminho para o arquivo CSV com os dados dos batimentos cardíacos.
 Retorna:
 dict: Dicionário com as estatísticas resumidas dos batimentos cardíacos.
 """
 # Leitura do arquivo CSV
 df = pd.read_csv(arquivo_csv)
 # Cálculo da frequência cardíaca média
 frequencia_cardiaca_media = df['frequencia_cardiaca'].mean()
 # Cálculo da frequência cardíaca máxima
 frequencia_cardiaca_maxima = df['frequencia_cardiaca'].max()
 # Cálculo da frequência cardíaca mínima
 frequencia_cardiaca_minima = df['frequencia_cardiaca'].min()
 # Cálculo do desvio padrão da frequência cardíaca
 desvio_padrao_frequencia_cardiaca = df['frequencia_cardiaca'].std()
 # Cálculo da variância da frequência cardíaca
 variancia_frequencia_cardiaca = df['frequencia_cardiaca'].var()
 # Cálculo da mediana da frequência cardíaca
 mediana_frequencia_cardiaca = df['frequencia_cardiaca'].median()
 # Cálculo do percentil 25 da frequência cardíaca
 percentil_25_frequencia_cardiaca = df['frequencia_cardiaca'].quantile(0.25)
 # Cálculo do percentil 75 da frequência cardíaca
 percentil_75_frequencia_cardiaca = df['frequencia_cardiaca'].quantile(0.75)
 # Cálculo do IQR da frequência cardíaca
 iqr_frequencia_cardiaca = percentil_75_frequencia_cardiaca - percentil_25_frequencia_cardiaca
 # Retorno das estatísticas resumidas
 estatisticas_resumidas = {
 'frequencia_cardiaca_media': frequencia_cardiaca_media,
 'frequencia_cardiaca_maxima': frequencia_cardiaca_maxima,
 'frequencia_cardiaca_minima': frequencia_cardiaca_minima,
 'desvio_padrao_frequencia_cardiaca': desvio_padrao_frequencia_cardiaca,
 'variancia_frequencia_cardiaca': variancia_frequencia_cardiaca,
 'mediana_frequencia_cardiaca': mediana_frequencia_cardiaca,
 'percentil_25_frequencia_cardiaca': percentil_25_frequencia_cardiaca,
 'percentil_75_frequencia_cardiaca': percentil_75_frequencia_cardiaca,
 'iqr_frequencia_cardiaca': iqr_frequencia_cardiaca
 }
 return estatisticas_resumidas
# Exemplo de uso
arquivo_csv = 'batimentos_cardiacos.csv'
estatisticas_resumidas = sumarizar_batimentos_cardiacos(arquivo_csv)
print(estatisticas_resumidas)
Use o código com cuidado.
content_copy
Este código lê um arquivo CSV com os dados dos batimentos cardíacos e calcula as seguintes estatísticas:
· Frequência cardíaca média
· Frequência cardíaca máxima
· Frequência cardíaca mínima
· Desvio padrão da frequência cardíaca
· Variância da frequência cardíaca
· Mediana da frequência cardíaca
· Percentil 25 da frequência cardíaca
· Percentil 75 da frequência cardíaca
· IQR da frequência cardíaca
O código também pode ser facilmente adaptado para calcular outras estatísticas que podem ser de interesse, como a frequência cardíaca em repouso, a frequência cardíaca máxima durante o exercício, etc.
Código para sumarizar batimentos cardíacos humanos em linguagem C
C
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct {
 double valor;
 double media;
 double maximo;
 double minimo;
 double desvio_padrao;
 double variancia;
 double mediana;
 double percentil_25;
 double percentil_75;
 double iqr;
} EstatisticasResumidas;
EstatisticasResumidas calcular_estatisticas_resumidas(const char *arquivo_csv) {
 // Leitura do arquivo CSV
 FILE *fp = fopen(arquivo_csv, "r");
 if (fp == NULL) {
 fprintf(stderr, "Erro ao abrir o arquivo CSV: %s\n", arquivo_csv);
 exit(1);
 }
 // Contagem do número de linhas no arquivo
 int numero_linhas = 0;
 char linha[1024];
 while (fgets(linha, sizeof(linha), fp)) {
 numero_linhas++;
 }
 fclose(fp);
 // Alocação de memória para os dados
 double *dados = malloc(sizeof(double) * numero_linhas);
 if (dados == NULL) {
 fprintf(stderr, "Erro ao alocar memória para os dados.\n");
 exit(1);
 }
 // Leitura dos dados do arquivo CSV
 fp = fopen(arquivo_csv, "r");
 for (int i = 0; i < numero_linhas; i++) {
 fscanf(fp, "%lf", &dados[i]);
 }
 fclose(fp);
 // Cálculo da frequência cardíaca média
 double frequencia_cardiaca_media = 0.0;
 for (int i = 0; i < numero_linhas; i++) {
 frequencia_cardiaca_media += dados[i];
 }
 frequencia_cardiaca_media /= numero_linhas;
 // Cálculo da frequência cardíaca máxima
 double frequencia_cardiaca_maxima = dados[0];
 for (int i = 1; i < numero_linhas; i++) {
 if (dados[i] > frequencia_cardiaca_maxima) {
 frequencia_cardiaca_maxima = dados[i];
 }
 }
 // Cálculo da frequência cardíaca mínima
 double frequencia_cardiaca_minima = dados[0];
 for (int i = 1; i < numero_linhas; i++) {
 if (dados[i] < frequencia_cardiaca_minima) {
 frequencia_cardiaca_minima = dados[i];
 }
 }
 // Cálculo do desvio padrão da frequência cardíaca
 double desvio_padrao_frequencia_cardiaca = 0.0;
 for (int i = 0; i < numero_linhas; i++) {
 desvio_padrao_frequencia_cardiaca += pow(dados[i] - frequencia_cardiaca_media, 2);
 }
 desvio_padrao_frequencia_cardiaca = sqrt(desvio_padrao_frequencia_cardiaca / (numero_linhas - 1));
 // Cálculo da variância da frequência cardíaca
 double variancia_frequencia_cardiaca = pow(desvio_padrao_frequencia_cardiaca, 2);
 // Cálculo da mediana da frequência cardíaca
 // TODO: Implementar o cálculo da mediana
 // Cálculo do percentil 25 da frequência cardíaca
 // TODO: Implementar o cálculo do percentil 25
 // Cálculo do percentil 75 da frequência cardíaca
 // TODO: Implementar o cálculo do percentil 75
 // Cálculo do IQR da frequência cardíaca
 // TODO: Implementar o cálculo do IQR
 // Retorno das estatísticas resumidas
 EstatisticasResumidas estatisticas_resumidas;
 estatisticas_resumidas.valor = dados[0];
 estatisticas_resumidas.media = frequencia_cardiaca_media;
 estatisticas_resumidas.maximo = frequencia_cardiaca_maxima;
 estatisticas_resumidas.minimo = frequencia_cardiaca_minima;
 estatisticas
Python
import pandas as pd
import numpy as np
from scipy import stats
def sumarizar_batimentos_cardiacos(arquivo_csv, idade, sexo, peso, altura):
 """
 Função para sumarizar os batimentos cardíacos humanos a partir de um arquivo CSV, incluindo mais variáveis e parâmetros.
 Argumentos:
 arquivo_csv (str): Caminho para o arquivo CSV com os dados dos batimentos cardíacos.
 idade (int): Idade do indivíduo.
 sexo (str): Sexo do indivíduo ('M' para masculino ou 'F' para feminino).
 peso (float): Peso do indivíduo em kg.
 altura (float): Altura do indivíduo em metros.
 Retorna:
 dict: Dicionário com as estatísticas resumidas dos batimentos cardíacos.
 """
 # Leitura do arquivo CSV
 df = pd.read_csv(arquivo_csv)
 # Cálculo da frequência cardíaca média
 frequencia_cardiaca_media = df['frequencia_cardiaca'].mean()
 # Cálculo da frequência cardíaca máxima
 frequencia_cardiaca_maxima = df['frequencia_cardiaca'].max()
 # Cálculo da frequência cardíaca mínima
 frequencia_cardiaca_minima = df['frequencia_cardiaca'].min()
 # Cálculo do desvio padrão da frequência cardíaca
 desvio_padrao_frequencia_cardiaca = df['frequencia_cardiaca'].std()
 # Cálculo da variância da frequência cardíaca
 variancia_frequencia_cardiaca = df['frequencia_cardiaca'].var()
 # Cálculo da mediana da frequência cardíaca
 mediana_frequencia_cardiaca = df['frequencia_cardiaca'].median()
 # Cálculo do percentil 25 da frequência cardíaca
 percentil_25_frequencia_cardiaca = df['frequencia_cardiaca'].quantile(0.25)
 # Cálculo do percentil 75 da frequência cardíaca
 percentil_75_frequencia_cardiaca = df['frequencia_cardiaca'].quantile(0.75)
 # Cálculo do IQR da frequência cardíaca
 iqr_frequencia_cardiaca = percentil_75_frequencia_cardiaca - percentil_25_frequencia_cardiaca
 # Cálculo da frequência cardíaca em repouso estimada
 frequencia_cardiaca_repouso_estimada = 220 - idade
 # Cálculoda frequência cardíaca máxima estimada
 frequencia_cardiaca_maxima_estimada = 220 - idade * 0.7
 # Cálculo do IMC
 imc = peso / (altura**2)
 # Cálculo da zona de frequência cardíaca para treino leve
 zona_leve_min = 0.5 * frequencia_cardiaca_maxima_estimada
 zona_leve_max = 0.6 * frequencia_cardiaca_maxima_estimada
 # Cálculo da zona de frequência cardíaca para treino moderado
 zona_moderada_min = 0.6 * frequencia_cardiaca_maxima_estimada
 zona_moderada_max = 0.7 * frequencia_cardiaca_maxima_estimada
 # Cálculo da zona de frequência cardíaca para treino intenso
 zona_intensa_min = 0.7 * frequencia_cardiaca_maxima_estimada
 zona_intensa_max = 0.8 * frequencia_cardiaca_maxima_estimada
 # Cálculo da zona de frequência cardíaca para treino vigoroso
 zona_vigorosa_min = 0.8 * frequencia_cardiaca_maxima_estimada
 zona_vigorosa_max = frequencia_cardiaca_maxima_estimada
 # Cálculo da frequência cardíaca de recuperação
 frequencia_cardiaca_recuperacao = frequencia_cardiaca_maxima * 0.2
 # Cálculo do tempo de recuperação
 tempo_recuperacao = (frequencia_cardiaca_maxima - frequencia_cardiaca_repouso) / 2
 # Retorno das estatísticas resumidas
 estatisticas_resumidas = {
 'frequencia_cardiaca_media': frequencia_cardiaca_media,
Código em linguagem C para sumarizar batimentos cardíacos humanos com mais variáveis e parâmetros:
C
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct {
 double valor;
 double media;
 double maximo;
 double minimo;
 double desvio_padrao;
 double variancia;
 double mediana;
 double percentil_25;
 double percentil_75;
 double iqr;
} EstatisticasResumidas;
EstatisticasResumidas calcular_estatisticas_resumidas(const char *arquivo_csv, int idade, char sexo, double peso, double altura) {
 // Leitura do arquivo CSV
 FILE *fp = fopen(arquivo_csv, "r");
 if (fp == NULL) {
 fprintf(stderr, "Erro ao abrir o arquivo CSV: %s\n", arquivo_csv);
 exit(1);
 }
 // Contagem do número de linhas no arquivo
 int numero_linhas = 0;
 char linha[1024];
 while (fgets(linha, sizeof(linha), fp)) {
 numero_linhas++;
 }
 fclose(fp);
 // Alocação de memória para os dados
 double *dados = malloc(sizeof(double) * numero_linhas);
 if (dados == NULL) {
 fprintf(stderr, "Erro ao alocar memória para os dados.\n");
 exit(1);
 }
 // Leitura dos dados do arquivo CSV
 fp = fopen(arquivo_csv, "r");
 for (int i = 0; i < numero_linhas; i++) {
 fscanf(fp, "%lf", &dados[i]);
 }
 fclose(fp);
 // Cálculo da frequência cardíaca média
 double frequencia_cardiaca_media = 0.0;
 for (int i = 0; i < numero_linhas; i++) {
 frequencia_cardiaca_media += dados[i];
 }
 frequencia_cardiaca_media /= numero_linhas;
 // Cálculo da frequência cardíaca máxima
 double frequencia_cardiaca_maxima = dados[0];
 for (int i = 1; i < numero_linhas; i++) {
 if (dados[i] > frequencia_cardiaca_maxima) {
 frequencia_cardiaca_maxima = dados[i];
 }
 }
 // Cálculo da frequência cardíaca mínima
 double frequencia_cardiaca_minima = dados[0];
 for (int i = 1; i < numero_linhas; i++) {
 if (dados[i] < frequencia_cardiaca_minima) {
 frequencia_cardiaca_minima = dados[i];
 }
 }
 // Cálculo do desvio padrão da frequência cardíaca
 double desvio_padrao_frequencia_cardiaca = 0.0;
 for (int i = 0; i < numero_linhas; i++) {
 desvio_padrao_frequencia_cardiaca += pow(dados[i] - frequencia_cardiaca_media, 2);
 }
 desvio_padrao_frequencia_cardiaca = sqrt(desvio_padrao_frequencia_cardiaca / (numero_linhas - 1));
 // Cálculo da variância da frequência cardíaca
 double variancia_frequencia_cardiaca = pow(desvio_padrao_frequencia_cardiaca, 2);
 // Cálculo da mediana da frequência cardíaca
 // TODO: Implementar o cálculo da mediana
 // Cálculo do percentil 25 da frequência cardíaca
 // TODO: Implementar o cálculo do percentil 25
 // Cálculo do percentil 75 da frequência cardíaca
 // TODO: Implementar o cálculo do percentil 75
 // Cálculo do IQR da frequência cardíaca
 // TODO: Implementar o cálculo do IQR
 // Cálculo da frequência cardíaca em repouso estimada
 double frequencia_cardiaca_repouso_estimada = 220 - idade;
 // Cálculo da frequência cardíaca máxima estimada
 double frequencia_cardiaca_maxima_estimada = 220 - idade * 0.7;
Código em linguagem assembly para sumarizar batimentos cardíacos humanos com mais variáveis e parâmetros:
Snippet de código
; Declaração de variáveis
.data
arquivo_csv: db "batimentos_cardiacos.csv", 0
idade: dw 30
sexo: db 'M', 0
peso: dq 70.0
altura: dq 1.70
.bss
estatisticas_resumidas: resb 288
; Função para calcular as estatísticas resumidas
.text
global calcular_estatisticas_resumidas
calcular_estatisticas_resumidas:
 ; Leitura do arquivo CSV
 push esi
 push edi
 mov esi, arquivo_csv
 mov edi, estatisticas_resumidas
 call ler_arquivo_csv
 ; Cálculo da frequência cardíaca média
 mov eax, 0
 mov ebx, estatisticas_resumidas
 mov ecx, [ebx + EstatisticasResumidas_valor]
 mov edx, [ebx + EstatisticasResumidas_numero_linhas]
 idiv edx
 mov [ebx + EstatisticasResumidas_media], eax
 ; Cálculo da frequência cardíaca máxima
 mov eax, [estatisticas_resumidas + EstatisticasResumidas_valor]
 mov ebx, estatisticas_resumidas
 mov ecx, [ebx + EstatisticasResumidas_numero_linhas]
 for i = 1 to ecx - 1
 cmp eax, [ebx + EstatisticasResumidas_valor + i * 8]
 jg eax, [ebx + EstatisticasResumidas_valor + i * 8]
 next i
 mov [ebx + EstatisticasResumidas_maximo], eax
 ; Cálculo da frequência cardíaca mínima
 mov eax, [estatisticas_resumidas + EstatisticasResumidas_valor]
 mov ebx, estatisticas_resumidas
 mov ecx, [ebx + EstatisticasResumidas_numero_linhas]
 for i = 1 to ecx - 1
 cmp eax, [ebx + EstatisticasResumidas_valor + i * 8]
 jl eax, [ebx + EstatisticasResumidas_valor + i * 8]
 next i
 mov [ebx + EstatisticasResumidas_minimo], eax
 ; Cálculo do desvio padrão da frequência cardíaca
 mov eax, 0
 mov ebx, estatisticas_resumidas
 mov ecx, [ebx + EstatisticasResumidas_numero_linhas]
 for i = 0 to ecx - 1
 mov edx, [ebx + EstatisticasResumidas_valor + i * 8]
 sub edx, [ebx + EstatisticasResumidas_media]
 imul edx, edx
 add eax, edx
 next i
 mov ecx, [ebx + EstatisticasResumidas_numero_linhas]
 sub ecx, 1
 idiv ecx
 mov edx, eax
 sqrt eax
 mov [ebx + EstatisticasResumidas_desvio_padrao], eax
 ; Cálculo da variância da frequência cardíaca
 mov eax, [estatisticas_resumidas + EstatisticasResumidas_desvio_padrao]
 imul eax, eax
 mov [ebx + EstatisticasResumidas_variancia], eax
 ; Cálculo da frequência cardíaca em repouso estimada
 mov eax, 220
 sub eax, idade
 mov [ebx + EstatisticasResumidas_frequencia_cardiaca_repouso_estimada], eax
 ; Cálculo da frequência cardíaca máxima estimada
 mov eax, 220
 mov ebx, idade
 imul ebx, 7
 sub eax, ebx
 mov [ebx + EstatisticasResumidas_frequencia_cardiaca_maxima_estimada], eax
 ; Cálculo do IMC
 mov eax, peso
 mov ebx, altura
 imul ebx, ebx
 idiv eax, ebx
 mov [ebx + EstatisticasResumidas_imc], eax
 ; Cálculo da zona de frequência cardíaca para treino leve
 mov eax, [estatisticas_resumidas + EstatisticasResumidas_frequencia_cardiaca_maxima_estimada]
 mov ebx, 5
0000: B8 57 00 00 00 mov eax, 0x57 ; número de linhas
0005: 8B 7D 04 mov edi, [esi+0x4] ; endereço do buffer de saída
0008: 8B 55 08 mov edx, [esi+0x8] ; endereço do arquivo CSV
000B: E8 00 00 00 00 call ler_arquivo_csv
0010: 8B 45 0C mov eax, [ebp+0xC] ; frequência cardíaca média
0013: 8B 55 10 mov edx, [esi+0x10] ; número de linhas
0016: 89 45 14 mov [ebp+0x14], eax ; frequência cardíaca média
0019: 8B 45 14 mov eax, [ebp+0x14] ; frequência cardíaca média
001C: 3B 45 0C cmp eax, [ebp+0xC] ; comparação com valor máximo
001F: 7F 07 jg 0x28 ; se maior, pula para o próximo valor
0021: 89 45 18 mov [ebp+0x18], eax ; novo valor máximo
0024: 8B 45 18 mov eax, [ebp+0x18] ; valor máximo
0027: EB 07 jmp 0x30 ; pula para o próximo valor
0028:8B 45 14 mov eax, [ebp+0x14] ; frequência cardíaca média
002B: 3B 45 0C cmp eax, [ebp+0xC] ; comparação com valor mínimo
002E: 7C 07 jl 0x37 ; se menor, pula para o próximo valor
0030: 89 45 1C mov [ebp+0x1C], eax ; novo valor mínimo
0033: 8B 45 1C mov eax, [ebp+0x1C] ; valor mínimo
0036: EB 07 jmp 0x3F ; pula para o próximo valor
0037: 8B 45 14 mov eax, [ebp+0x14] ; frequência cardíaca média
003A: 8B 55 0C mov edx, [esi+0x10] ; número de linhas
003D: 89 45 20 mov [ebp+0x20], eax ; frequência cardíaca média
0040: 8B 45 20 mov eax, [ebp+0x20] ; frequência cardíaca média
0043: 8B 55 10 mov edx, [esi+0x10] ; número de linhas
0046: 89 45 24 mov [ebp+0x24], eax ; frequência cardíaca média
0049: 8B 45 24 mov eax, [ebp+0x24] ; frequência cardíaca média
004C: 8B 55 10 mov edx, [esi+0x10] ; número de linhas
004F: 89 45 28 mov [ebp+0x28], eax ; frequência cardíaca média
0052: 8B 45 28 mov eax, [ebp+0x28] ; frequência cardíaca média
0055: 8B 55 10 mov edx, [esi+0x10] ; número de linhas
0058: 89 45 2C mov [ebp+0x2C], eax ; frequência cardíaca média
005B: 8B 45 2C mov eax, [ebp+0x2C] ; frequência cardíaca média
005E: 8B 55 10 mov edx, [esi+0x10] ; número de linhas
0061: 89

Continue navegando