Cómo HACER un Análisis de Datos en Python con Jupyter Notebook 🐍

Поділитися
Вставка
  • Опубліковано 11 лис 2024

КОМЕНТАРІ • 123

  • @ignaciospada6262
    @ignaciospada6262 2 роки тому +11

    Muy buena info. Es excelente para que los que estamos aprendiendo tengamos un panorama de como se encara un proyecto de análisis de datos y nos ayuda a visualizar cómo es que podemos integrar todas las herramientas aprendidas.

  • @JUDOGAR
    @JUDOGAR 2 роки тому +1

    Excelente! Felicitaciones y gracias Rafa por compartir tus conocimientos con tanta generosidad....

  • @raulceleita
    @raulceleita Рік тому

    Excelente presentación. he utilizado la información de github y he aprendido ...gracias 📊

  • @clavelquintana5538
    @clavelquintana5538 Рік тому

    Hola Rafa, me encantan tus videos y estoy aprendiendo mucho.Gracias.

  • @emmanuelpena2653
    @emmanuelpena2653 3 роки тому +1

    Desde hace pocos meses me he involucrado en la ciencia de datos y aunque he aprendido mucho tenia bastantes dudas sobre como aplicar tanto código a un análisis real y con este video tengo ahora un mejor panorama, gracias por compartir tu conocimiento, espero puedas seguir subiendo análisis prácticos como este.

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  3 роки тому +1

      Excelente! me contenta que te esté siendo útil. Espero también poder seguir subiendo videos como este!

  • @fabriciocruzlopez7545
    @fabriciocruzlopez7545 3 роки тому +3

    Excelente video, justamente lo que estaba buscando!!! Llevo siguiendo desde el curso de Python & R; siempre tus cursos son exactos & nos son de gran ayuda! Muchas gracias!

  • @ricardopena377
    @ricardopena377 3 роки тому

    Rafael como siempre tu explicación, sencilla y practica, ya me inscribi al curso en octubre.

  • @joselopez1710
    @joselopez1710 3 роки тому

    gracias Rafa por compartir tus conocimientos, con cada video tuyo subo un peldaño mas en el mundo de la ciencia de datos.

  • @RafaGonzalezGouveia
    @RafaGonzalezGouveia  3 роки тому +7

    00:00 Introducción
    00:48 Origen de los datos
    04:04 Repo en GitHub
    04:37 Curso Portafolio
    06:18 Carga de datos
    07:54 Exploración de datos y variable target
    12:00 Procesamiento y creación de variables
    17:25 Modelos y ajuste
    18:30 Evaluación con matriz de confusión
    23:36 Predicción y subida a kaggle
    25:30 Concluiones y próximos pasos
    El código puedes verlo en este repositorio de GitHub
    github.com/gonzalezgouveia/proyecto-titanic
    🚀 Ya abrió la inscripción para el curso de portafolio, hasta el viernes 9 de junio de 2023. Puedes inscribirte aquí 👇👇 escuela.gonzalezgouveia.com/courses/portafolio-data-science

    • @erickd23
      @erickd23 3 роки тому

      Solo por el título le di el like, el vídeo que muchos necesitábamos y no lo sabíamos, gracias Rafa 🇲🇽🤟🏼😈

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  3 роки тому

      @@erickd23 gracias Erick!

  • @danielpintos6486
    @danielpintos6486 2 роки тому

    Muchísimas gracias por compartir tus conocimientos. ¡Qué tengas muchos éxitos en tu vida!

  • @nicolasmcontreras
    @nicolasmcontreras 2 роки тому

    📊 me encantó Rafa. Gracias por el video!

  • @estefi0505
    @estefi0505 21 день тому

    📊 desde arg!

  • @Psoel
    @Psoel 3 роки тому

    Muchas Gracias Rafa! Siempre en sinotnía con tu audiencia. Se valora mucho. Gracias de verdad hermano, eres mi referente

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  3 роки тому

      gracias Wertom! gracias a ti también fue parte de las sugerencias que vi en el post de comunidad de la semana pasada :D

  • @evaristegalois9832
    @evaristegalois9832 3 роки тому

    Excelente video, saludos desde Ecuador. Muchas gracias por el aporte.

  • @PoteRomo
    @PoteRomo 2 роки тому

    Rafa, has caído del cielo!!! Me he tomado mínimo 8 meses para entender algunas conceptos básicos, pero llegaste tu y en 2 días me has ayudado a despejar tantas dudas. GRACIAS!!!

  • @antoniodelcastillogarzon7056
    @antoniodelcastillogarzon7056 3 роки тому +1

    Buenas Rafa!
    Me encantó este video, lo hice entero y tengo que reconocerte que realmente aprendí muchísimo. Espero que el resto sean así! 📊

  • @mogollonwilmer
    @mogollonwilmer 2 роки тому

    Excelente vídeo, muy completo y sin egoísmo de compartir, que Dios te lo multiplique

  • @Caldep2
    @Caldep2 2 роки тому

    Excelentes todos tus aportes Rafa 😁👍 felicidades 🎊

  • @LUISAFERNANDACARBful
    @LUISAFERNANDACARBful Рік тому

    Me encanta tu curso. Este vídeo me perdí en evaluación. Creo que me toca profundizar. Gracias

  • @frank1985c
    @frank1985c 2 роки тому

    📊 Excelente video. Consolida todo lo aprendido.

  • @oscarmelchorgalan3092
    @oscarmelchorgalan3092 Рік тому

    Excelente curso, muchas gracias.

  • @nicoalbarracin4837
    @nicoalbarracin4837 3 роки тому

    Mil gracias!!! Saludos desde Argentina

  • @carlosastorgaar
    @carlosastorgaar 2 роки тому

    ¡Muy bueno! Muchas gracias.

  • @thefarfarout
    @thefarfarout 3 роки тому

    Gracias por este video!

  • @johannesperez9548
    @johannesperez9548 3 роки тому

    Excelente video Rafa! Lo recomiendo 100% aquellos que deseen inciar el aprendizaje sobre la construcción de modelos de ML utilizando python :)

  • @ronnymora5176
    @ronnymora5176 3 роки тому

    Wow muy buen contenido, para revisarlo más a fondo y empezar a practicar. Muchas gracias 👏🏻👏🏻👏🏻

  • @javi_v7.0
    @javi_v7.0 2 роки тому

    Gran video, ¡gracias Rafa!

  • @GeeKBio
    @GeeKBio Рік тому

    Muy buena explicación!!!

  • @joaquinivanperezalvarez3045

    buen video📊

  • @samuelivannoya267
    @samuelivannoya267 3 роки тому

    Rafaaaaaaaaaaaaaa!! Sos un capo!!!

  • @Oscarpineros
    @Oscarpineros 11 місяців тому +6

    Buen material Rafa, lastimosamente al día de hoy plot_confusion_matrix está deprecated, y hasta ahí llegue.....sale error al crear la matriz de confusión...seria muy bueno que lo actualizaras, por lo menos el notebook en el github. Saludos.

    • @omarorejuela469
      @omarorejuela469 7 місяців тому

      Puedes reemplazarlo por ConfusionMatrixDisplay.from_estimator

    • @adrianhervel
      @adrianhervel 7 місяців тому

      Yo avance un poco más actualizando -plot_confusion_matrix- por -ConfusionMatrixDisplay- pero ahora tengo problemas con la declaración de 'cmap'

    • @jinetesombra
      @jinetesombra 6 місяців тому

      @@adrianhervel from sklearn.metrics import plot_confusion_matrix
      from
      def conf_mat_acc(modelo):
      disp = plot_confusion_matrix(modelo, X_train, Y_train,
      cmap=plt.cm.Blues, values_format="d")
      true_pred = disp.confusion_matrix[0,0]+disp.confusion_matrix[1,1]
      total_data = np.sum(disp.confusion_matrix)
      accuracy = true_pred/total_data
      print('accuracy: ', np.round(accuracy, 2))
      plt.show()

    • @jinetesombra
      @jinetesombra 6 місяців тому

      conf_mat_acc(logreg,X_train, Y_train) y conf_mat_acc(decision_tree, X_train,Y_train)

    • @pbordonytb
      @pbordonytb 6 місяців тому

      @@adrianhervel yo lo hice funcionar de esta forma:
      from sklearn.metrics import confusion_matrix
      from sklearn.metrics import ConfusionMatrixDisplay
      def conf_mat_acc(modelo, X, y):
      cm = confusion_matrix(y, modelo.predict(X))
      disp = ConfusionMatrixDisplay(confusion_matrix=cm)
      disp.plot(cmap=plt.cm.Blues)

      true_pred = cm[0, 0] + cm[1, 1]
      total_data = np.sum(cm)
      accuracy = true_pred / total_data
      print('accuracy: ', np.round(accuracy, 2))
      print ('cant ok:', true_pred, ' de ', total_data)
      plt.show()
      # Llamar a la función con el modelo y los datos de entrenamiento
      conf_mat_acc(logreg, X_train, Y_train)

  • @rcetto
    @rcetto 3 роки тому

    📊Muy buen video, me ha encantado

  • @mauriciosmith284
    @mauriciosmith284 Рік тому

    Perfecto y gracias por la información, todo muy claro. Una pregunta, al momento de descargar el archivo no me lo deja en el formato que solicita kggle, me descarga el archivo separado por comas, ¿como dejarlo con un formato de tablas? Gracias¡

  • @jaimeolvera6457
    @jaimeolvera6457 Рік тому +1

    Buen día Rafa. Tienes el jupyter notebook actualizado?

  • @softeng2023
    @softeng2023 2 роки тому

    Muy bueno!! Por favor, más videos así!

  • @diegosebastianblan80
    @diegosebastianblan80 2 роки тому

    Excelente video!

  • @eLyioRCH21
    @eLyioRCH21 3 роки тому

    Muy buen vídeo! Se hace muy ameno y resulta de gran utilidad para los novatos en este ámbito. Podrías hacer más vídeos de este estilo? Muchas gracias

  • @LuisLopez-sc1qc
    @LuisLopez-sc1qc Рік тому

    Videos así vale l pena ver casos más reales cuando eres analista de datos tiempos gastado muy bien videos con casos que te pueden dejar como ANALISTA valen estos vídeos ojalá hagas más vídeos así o más difíciles y tienes razón no es necesarios abwr todos los códigos pero en l camino vas a prendido más genial tu vídeo oajla hagas videos de casos así pero más difíciles

  • @nazarenopecondon9114
    @nazarenopecondon9114 Рік тому

    Hola Rafa! Muchas gracias por tu excelente contenido! Me gustaria que hagas un video especifico de algun metodo para elegir correctamente las columnas de un csv para utilizar en los modelos de ML, osea como elegir las columnas que esten mas correlacionadas a la variable target.
    Desde ya muchas gracias y saludos desde Argentina!

  • @Reyesba28
    @Reyesba28 2 роки тому

    Excelente video 👌✌

  • @pablojose8656
    @pablojose8656 3 роки тому

    Muy bueno!!!

  • @jdpinod
    @jdpinod 2 роки тому

    Excelente y concisa explicación.
    Quisiera saber cómo graficar con seaborn el método de agrupación que describes en el minuto 10:28, o si este solo es compatible con los parámetros de matplotlib.

  • @Metal-BIM
    @Metal-BIM 3 роки тому

    Muy buen video, que buen contenido

  • @BajoZeroAarock
    @BajoZeroAarock Рік тому

    📊

  • @daviddevita
    @daviddevita 3 роки тому +1

    Hola, Rafa. Gracias por el video. Crees que sería bueno un video recorriendo las herramientas no relacionadas a software? Es decir, matemáticas, estadísticas, etc. Gracias

  • @antoniovalderrama7080
    @antoniovalderrama7080 3 роки тому

    👏 👏 👏 🙏 Rafa 👍

  • @juancarlosfeijobalmaceda3053
    @juancarlosfeijobalmaceda3053 5 місяців тому

    Agradecerte por el tiempo que nos brindas en compartir tu conocimiento, por favor puedes explicar por que colocas de esta manera ```train[['Survived', 'Sex','Age','Pclass']]``` o ```train[train['Age'].isna()]``` en vez de colocar train(['Survived', 'Sex','Age','Pclass']) o train(train['Age'].isna())

  • @friveramon
    @friveramon Рік тому

    rafa, brindas asesoria para un tema en especifico?

  • @cristiancifuentes5975
    @cristiancifuentes5975 3 роки тому

    Buenas noches Rafa, cómo estás? Estoy teniendo problemas en el cargue de datos con el tema de la ruta de train y test me genera algunos errores. Saludos.

  • @davidsanchez6310
    @davidsanchez6310 3 роки тому

    Excelente

  • @ferhf824
    @ferhf824 3 роки тому

    buenas, existe algun video de como recategorizar variables, por ejemplo de csv tengo una variable con 10 CATEGORIAS (abcdefgh... )pero quiero que solo sean 5 ya que reagrupare A CON B, B CON C, D CON ETC. mi otro duda es que de una base de datos ne bruto tal ves de una entidad publica de mi pais con millones de datos como haria para crear la varaible de entrenamiento y la de test o que caracteristicas deben complir? o simplemente se divide en 2 partes?

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  3 роки тому

      Hola Gustavo, sí. Lo primero que preguntas se puede hacer con un mapeo en python en este video puedes ver cómo se hace ua-cam.com/video/1jEuJ7WX16E/v-deo.html
      para lo segundo, se puede usar una función del paquete sklear que se llama train_test_split, la separación se hace de forma aleatoria y existen diferentes estrategias para dividir estás dos partes, a mi en particular me gusta usar 80% train 20% test. Pero dependiendo de la aplicación hay quien puede usar 75% train 25% test o incluso 50 y 50. te dejo otro articulo donde explica cómo se puede hacer esta separación
      exponentis.es/como-dividir-un-conjunto-de-entrenamiento-en-dos-partes-train-test-split
      Espero te ayude saludos

  • @Aleph1869
    @Aleph1869 Рік тому

    Tengo un problema con el include de las variables categóricas, me sale un error de tipo

  • @martybadin6127
    @martybadin6127 Рік тому

    Hola, buenas noches. Escribí una línea de las que pusiste en el código: train['Sex'] = train['Sex'].map({'female': 1, 'male': 0}).astype(int), y me saltó este error: IntCastingNaNError: Cannot convert non-finite values (NA or inf) to integer, ¿alguien sabe qué puedo hacer para solucionarlo?

  • @luisalonsocopetecopete3255
    @luisalonsocopetecopete3255 3 роки тому

    Buen video Rafa ✌🏾. Dejó como observación que me aparece el video con calidad de 360p, no se si sea en mi celular o quizá UA-cam no lo procesó bien cuando lo cargaste

  • @sebastienlozano742
    @sebastienlozano742 3 роки тому

    📊

  • @luisalbertoquintero7846
    @luisalbertoquintero7846 2 роки тому

    Hola Rafael, en 1er. lugar muchas felicitaciones, tienes un don de enseñanza muy bueno, ya he recomendado tus cursos a varios colegas, pues el tema de Ciencia de Datos (CD) y topicos parecidos estan a la orden del dia. Segui al pelo tu curso pero, por alguna razón no encuentro la explicación en el ejercicio 2 con el test, en la celda que contiene las instruciones "print(test.info() y)
    test[features].head(3), solo me muestra tres columnas (Age, Pclass y flagsolo) y en tu ejercicio se ven 4 (Sex,(Age, Pclass y flagsolo) si tu o alguno de los aqui presente sabe que hacer lo agradeceria.
    Arriele que son pasteles.

  • @rafaeltovar8329
    @rafaeltovar8329 3 роки тому

    Rafa como estas , una consulta , como normalizo los datos de una columnas en especifico , llevandolas de minuscula a mayuscula .

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  3 роки тому

      Hola Rafael, sí. Las variables de texto en python tienen un método o función que se llama .lower() es posible que esto te pueda ayudar. Te dejo un enlace j2logo.com/python/convertir-a-mayusculas-y-minusculas-en-python/

  • @alvaroprietoblazquez9040
    @alvaroprietoblazquez9040 3 роки тому

    📊 ¿Se pueden hacer modelos de datos que devuelvan valores, y no resultados true/false? por ejemplo un modelo similar al del ejemplo, pero que devuelva la edad. Gracias por la explicación, conciso y claro

  • @melissasanabria7921
    @melissasanabria7921 2 роки тому

    Hola :( no me han cargado los datos nisiquiera. Cree la carpeta , copie mi archivo de excel en formato cvs (delimitado por comas), pero nada Ayuda

  • @felipegugli9710
    @felipegugli9710 3 роки тому

    Maestro

  • @josealfonzoinestrozarodrig9734

    disculpe no hace mencion de como descargar los datos de kaggel verdad

  • @martintavera3662
    @martintavera3662 Рік тому

    Rafa, me suscribi, pero no veo el costo, para el desarrollo del proyecto mensual, espero tu mje. gracias

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  Рік тому

      Hola Martín. Justo la semana que viene vamos a abrir las inscripciones para el proyecto mensual. Saldrá por está página, pero a partir del 1ero de febrero
      escuela.gonzalezgouveia.com/courses/portafolio-data-science
      cualquier cosa me avisas o me envías un correo a rafael@gonzalezgouevia.com
      Saludos :)

  • @0DaviL
    @0DaviL 2 роки тому

    Saludos Rafa, disculpa la pregunta, ¿de cuánto es el costo del curso?

  • @danielfernandezr.2258
    @danielfernandezr.2258 3 роки тому

    Hola, saludos desde Santiago de Chile.. consulta: kaggle solo te entrega el %, no te entrega el dataset completo con el target?. cómo saber en qué pasajeros el modelo no funcionó?

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  3 роки тому +1

      Hola Daniel, es buena pregunta. Como dices, kaggle solo te entrega el % de acierto. Esto porque su objetivo es que puedas "deducirlos" con un mejor modelo. Si te dijera cuales no funcionaron sería más fácil cambiar esos para tener una puntuación más alta. Hasta donde sé no hay manera de saber los pasajeros para los cuales el modelo predijo mal en el test set

    • @danielfernandezr.2258
      @danielfernandezr.2258 3 роки тому

      @@RafaGonzalezGouveia ok, gracias x responder, a ir probando entonces con mejoras del modelo con la data del train, hasta no llegar al overfitting. A sucesivas entregas a kaggle para el feedback.

  • @laeior
    @laeior Рік тому

    Gracias, me han servido mucho tus videos, hasta ahora estoy curioseando con estos temas, sin embargo al realizar el mapeo que muestras en el minuto 15:15 con la instrucción train['Sex'] = train['Sex'].map({'female': 1,'male': 0}).astype(int) me saca el siguiente error: IntCastingNaNError: Cannot convert non-finite values (NA or inf) to integer, Si tu o alguien mas sabe el por que le agradecería

    • @anghelahuaman4258
      @anghelahuaman4258 Рік тому +1

      Buenas a mi no me corrio tampoco y use esta función que hace lo mismo sex = train['Sex'].replace(['female','male'],[0,1])

    • @laeior
      @laeior Рік тому

      @@anghelahuaman4258 gracias!!

    • @nazarenopecondon9114
      @nazarenopecondon9114 Рік тому +1

      Hola leonardo, quizas te da error porque lo ejecutaste mas de una vez, es decir:
      Cuando ejecutas por primera vez ese codigo, ya pasa la columna Sex a tipo numerico, si lo volves a ejecutar te va a dar errror porque estas queriendo pasarla a numerico cuando ya esta en numerico.
      Tenes que tener cuidado y ejecutar esa linea de codigo 1 sola vez

  • @marialozano7332
    @marialozano7332 Рік тому

    Hola en la linea 36 me aparece un error

  • @pierobustamante6312
    @pierobustamante6312 Рік тому

    A mi no me sale el gráfico de la matriz de confusión, no me funciona el plot_confusion_matrix

    • @natziely
      @natziely Рік тому

      Pudo corregir el error?

  • @latlov
    @latlov 3 роки тому

    22:39 Al momento de hacer el preprocesamiento de los datos de entrenamiento, para la conversión o mapeo de la variable "Sex" me sale el siguiente error:
    ValueError: Cannot convert non-finite values (NA or inf) to integer
    He verificado esa columna y todos tienen "female" o "male"
    ¿Alguien sabe cómo resolverlo?

    • @luisalbertoquintero7846
      @luisalbertoquintero7846 2 роки тому

      Por que ya esta convertido.... sigue con la instuccion siguiente o vuelve desde el inicio a ejecutar cada celda de nuevo.

    • @nazarenopecondon9114
      @nazarenopecondon9114 Рік тому

      Hola, quizas te da error porque lo ejecutaste mas de una vez, es decir:
      Cuando ejecutas por primera vez ese codigo, ya pasa la columna Sex a tipo numerico, si lo volves a ejecutar te va a dar errror porque estas queriendo pasarla a numerico cuando ya esta en numerico.
      Tenes que tener cuidado y ejecutar esa linea de codigo 1 sola vez

  • @jrobledo25
    @jrobledo25 3 роки тому

    Una consulta el Curso de Portafolio es gratuito? 📊

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  3 роки тому

      Hola Jorge, no es gratuito, puedes revisar los detalles aquí escuela.gonzalezgouveia.com/courses/portafolio-data-science

  • @juandavidzamorachavez9987
    @juandavidzamorachavez9987 3 роки тому

    Hay algo que este joven no haga bien?

  • @latlov
    @latlov 3 роки тому

    22:23 Lo extraño es que me salen conteos distintos en el test set:
    RangeIndex: 418 entries, 0 to 417
    Data columns (total 11 columns):
    # Column Non-Null Count Dtype
    --- ------ -------------- -----
    0 PassengerId 418 non-null int64
    1 Pclass 418 non-null int64
    2 Name 418 non-null object
    3 Sex 418 non-null int64
    4 Age 418 non-null float64
    5 SibSp 418 non-null int64
    6 Parch 418 non-null int64
    7 Ticket 418 non-null object
    8 Fare 417 non-null float64
    9 Cabin 91 non-null object
    10 Embarked 418 non-null object
    dtypes: float64(2), int64(5), object(4)
    memory usage: 36.0+ KB

  • @EvelynOrtiz-uq7ne
    @EvelynOrtiz-uq7ne 3 роки тому

    📊 obtener datos de una web de datos públicos

  • @maudelaossa
    @maudelaossa Рік тому

    Titanic, Titanic hey no te sabes otra

  • @yeshuaeselmashiaj6037
    @yeshuaeselmashiaj6037 3 роки тому +1

    Porque ya no usas R?? ahora incluso se puede usar Tensorflow desde R con reticulate y corre sobre Python sin tener que tocar Python, el programa descarga una versión pequeña de conda y funciona bien.

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  3 роки тому

      Hola Fernando, es verdad que hace tiempo no subo video de R. En parte porque estaba con Python y en parte porque estaba dedicando tiempo a conceptos de ciencia de datos, espero pronto hacer un vídeo en R :D

    • @yeshuaeselmashiaj6037
      @yeshuaeselmashiaj6037 3 роки тому

      @@RafaGonzalezGouveia te confieso q fue por uno de tus videos q me empecé a interesar en ciencia de datos y en especial codificar en R. Pero hoy veo q hoy muchos se están cambiando a Python. Según tu experiencia, ¿que es lo q no se puede hacer en R y si y solo si en Python? O se trata sólo de una moda por la facilidad q representa para quienes vienen de IT a hacer ciencia de datos y este les resulta más fácil q R?

  • @miguelmundiales2752
    @miguelmundiales2752 2 роки тому

    es obvio es anormal aprenderse todos los comandos de todos los lenguajes de programacion ,saludos

  • @miguelmundiales2752
    @miguelmundiales2752 2 роки тому

    abstenganse personas que no se dedican al area de informatica,,y son administradores de empresas y demas que ya me cruze a muchos ,,por favor cada quien en lo suyo ,dejen vivir

  • @LauraBalleste-lj5bx
    @LauraBalleste-lj5bx Рік тому

    📊

  • @estebanpalmahernandez7414
    @estebanpalmahernandez7414 3 роки тому

    📊

  • @joseluisescalante7687
    @joseluisescalante7687 3 роки тому

    📊

  • @lelisc3774
    @lelisc3774 3 роки тому

    📊

  • @marioperezt
    @marioperezt 2 роки тому

    📊

  • @octavioperezmaqueo25
    @octavioperezmaqueo25 Рік тому

    📊

  • @angelpalomo275
    @angelpalomo275 Рік тому

    📊