import pandas as pd
dataset = pd.read_csv('heart_failure_clinical_records_dataset.csv')
dataset
df = dataset[['age','sex','diabetes','smoking','high_blood_pressure','serum_creatinine']].copy()
df
# Cabecera
df.head()
# Dimensiones
df.shape
# Nombres de las columnas (variables)
df.columns.values
# Resumen de los estadísticos básicos
df.describe()
# Tipo de datos en cada columna
df.dtypes
# Es posible seleccionar una característica/variable de los pacientes
df['age']
# Se puede acceder a una fila (información de un paciente) mediante el atributo iloc
df.iloc[0]
# También se puede extraer un conjunto de filas (información de varios pacientes)
df.iloc[0:5]
# Se puede acceder a un conjunto de filas (información de varios pacientes) y columnas específicas (características/variables)
df.iloc[0:3,0:3]
# Se realiza un subconjunto con los pacientes fumadores
df[df['smoking']==1]
# Se realiza un subconjunto con los pacientes mayores a 50 años
df[df['age']>50]
Edición de pacientes
Agregar paciente
# Se crea una variable ID para cada paciente (supongamos que es el documento de identidad)
paciente_id = ['CC' + str(itn) for itn in range(df.shape[0])]
df_id = pd.concat([pd.DataFrame({'paciente_id':paciente_id}), df], axis=1)
df_id
# Vamos a agregar un nuevo paciente
paciente_id = str(input("Ingrese el documento de identidad: "))
age = float(input("Ingrese la edad del paciente: "))
sex = int(input("Ingrese el género del paciente (M = 1; F = 0): "))
diabetes = int(input("Ingrese si el paciente tiene diabetes (Si = 1; No = 0): "))
smoking = int(input("Ingrese si el paciente es fumador (Si = 1; No = 0): "))
high_blood_pressure = int(input("Ingrese si el paciente tiene hipertensión (Si = 1; No = 0): "))
serum_creatinine = float(input("Ingrese el nivel de creatinina sérica (mg/dL): "))
dicc_paciente = {'paciente_id':paciente_id, 'age': age, 'sex':sex, 'diabetes':diabetes, 'smoking':smoking, 'high_blood_pressure': high_blood_pressure, 'serum_creatinine':serum_creatinine}
dicc_paciente
paciente_nuevo = pd.DataFrame.from_dict([dicc_paciente])
new_df = pd.concat([df_id, paciente_nuevo], axis=0).reset_index(drop=True)
new_df.tail()
# Se crea una función para agregar un nuevo paciente
def agregaPaciente(df_id):
paciente_id = str(input("Ingrese el documento de identidad: "))
age = float(input("Ingrese la edad del paciente: "))
sex = int(input("Ingrese el género del paciente (M = 1; F = 0): "))
diabetes = int(input("Ingrese si el paciente tiene diabetes (Si = 1; No = 0): "))
smoking = int(input("Ingrese si el paciente es fumador (Si = 1; No = 0): "))
high_blood_pressure = int(input("Ingrese si el paciente tiene hipertensión (Si = 1; No = 0): "))
serum_creatinine = float(input("Ingrese el nivel de creatinina sérica (mg/dL): "))
dicc_paciente = {'paciente_id':paciente_id, 'age': age, 'sex':sex, 'diabetes':diabetes, 'smoking':smoking, 'high_blood_pressure': high_blood_pressure, 'serum_creatinine':serum_creatinine}
paciente_nuevo = pd.DataFrame.from_dict([dicc_paciente])
new_df = pd.concat([df_id, paciente_nuevo], axis=0).reset_index(drop=True)
return new_df
df_agregado = agregaPaciente(new_df)
df_agregado.tail()
Actualizar datos
Para realizar un ejercicio de modificación de datos, vamos a suponer ahora que todos los pacientes mayores a 70 años son fumadores y tienen diabetes e hipertensión
for paciente in range(df_agregado.shape[0]):
if df_agregado['age'][paciente] > 70:
df_agregado.loc[paciente, ['diabetes','smoking','high_blood_pressure']] = 1
df_agregado
Eliminar paciente
# Vamos a eliminar un paciente según el documento de identidad
df_eliminado = df_agregado.drop(df_agregado[df_agregado['paciente_id'] == 'CC0'].index)
df_eliminado