top of page
DelAlmeida

Caso Practico PySparK:

Actualizado: 1 may

Comenzando con Apache Spark: Fundamentos y Aplicaciones


📋Como Data Scientist, constantemente me enfrento al desafío de procesar y analizar grandes conjuntos de datos. Tradicionalmente, utilizaba Python  en mi trabajo local, pero rápidamente me di cuenta de que estos métodos tienen sus limitaciones, especialmente cuando se trata de datos extremadamente voluminosos.


📋Aquí es donde Apache Spark se ha convertido en una herramienta indispensable para mi trabajo.


📋Spark es un sistema de procesamiento distribuido que me permite ejecutar análisis de datos y algoritmos de machine learning sobre petabytes de información, una tarea imposible en un dispositivo local.


📋Este marco no solo es más rápido que opciones anteriores como Hadoop, sino que también es ampliamente utilizado por gigantes tecnológicos como IBM y Amazon. Estas empresas valoran Spark por su capacidad para realizar tareas intensivas de datos de forma rápida y eficiente.


📋Dominar Spark no solo ha enriquecido mi conjunto de habilidades técnicas, sino que también me ha preparado para abordar desafíos de datos a gran escala, diferenciándome en el campo de la ciencia de datos.



Fundamentos de PySpark: Integrando Python con Spark


PySpark es mi puente hacia Apache Spark, permitiéndome utilizar comandos en Python, mi lenguaje de elección, para trabajar sobre conjuntos de datos distribuidos. Gracias a PySpark, puedo aplicar mis conocimientos de Python de manera efectiva en entornos de big data, gestionando y analizando datos de manera más eficiente que nunca.


Por Qué PySpark es Esencial para los Científicos de Datos


En un mundo donde los datos se generan por terabytes, conocer herramientas como PySpark es crucial. Me permite manipular grandes volúmenes de datos distribuidos, una demanda común en la mayoría de las organizaciones orientadas a datos. PySpark se destaca por su sencillez y capacidad de integración con Python, facilitando una curva de aprendizaje suave para aquellos familiarizados con dicho lenguaje.

 

Además, PySpark maneja datos en tiempo real, ofreciendo una ventaja significativa sobre sistemas que solo procesan datos en lotes. Esta capacidad es esencial en proyectos que requieren actualizaciones continuas de datos y decisiones rápidas basadas en información en tiempo real.

 

En resumen, Apache Spark y PySpark han transformado la manera en que abordo los problemas de datos, proporcionándome la velocidad y la escala necesarias para competir en el ámbito del análisis avanzado de datos y el machine learning.


Caso Practico:


Utilizaré el conjunto de datos de Titanic para todos los análisis de este tutorial.


 

 


Paso 1: Crear una SparkSession

 

Paso 2: Crear el DataFrame

 

 

 

 

PassengerId

Survived

Pclass

Name

Sex

Age

SibSp

Parch

Ticket

Fare

Cabin

Embarked

1

0

3

Braund, Mr. Owen ...

male

22.0

1

0

A/5 21171

7.25

null

S

2

1

1

Cumings, Mrs. Joh...

female

38.0

1

0

PC 17599

71.2833

C85

C

3

1

3

Heikkinen, Miss. ...

female

26.0

0

0

STON/O2. 3101282

7.925

null

S

4

1

1

Futrelle, Mrs. Ja...

female

35.0

1

0

113803

53.1

C123

S

5

0

3

Allen, Mr. Willia...

male

35.0

0

0

373450

8.05

null

S

6

0

3

Moran, Mr. James

male

null

0

0

330877

8.4583

null

Q

7

0

1

McCarthy, Mr. Tim...

male

54.0

0

0

17463

51.8625

E46

S

8

0

3

Palsson, Master. ...

male

2.0

3

1

349909

21.075

null

S

9

1

3

Johnson, Mrs. Osc...

female

27.0

0

2

347742

11.1333

null

S

10

1

2

Nasser, Mrs. Nich...

female

14.0

1

0

237736

30.0708

null

C

11

1

3

Sandstrom, Miss. ...

female

4.0

1

1

PP 9549

16.7

G6

S

 

  

 

Paso 3: Análisis exploratorio de datos

 

 

root

 |-- PassengerId: integer (nullable = true)

 |-- Survived: integer (nullable = true)

 |-- Pclass: integer (nullable = true)

 |-- Name: string (nullable = true)

 |-- Sex: string (nullable = true)

 |-- Age: double (nullable = true)

 |-- SibSp: integer (nullable = true)

 |-- Parch: integer (nullable = true)

 |-- Ticket: string (nullable = true)

 |-- Fare: double (nullable = true)

 |-- Cabin: string (nullable = true)

 |-- Embarked: string (nullable = true)

 

 

 

 891






PassengerId|Survived|Pclass|Name|Sex|Age|SibSp|Parch|Ticket|Fare|Cabin|Embarked|

|          0|       0|     0|   0|  0|177|    0|    0|     0|   0|  687|       2| 

 

 


 Age|count|

+----+-----+

|null|  177|

|24.0|   30|

|22.0|   27|

|18.0|   26|

|28.0|   25|

|30.0|   25|

|19.0|   25|

|21.0|   24

 

 

 

  Cabin|count|

+-----------+-----+

|       null|  687|

|    B96 B98|    4|

|         G6|    4|

|C23 C25 C27|    4|

|       E101|    3|

|    C22 C26|    3|

|          D|    3|

|        F33|    3|

|         F2|    3|

|        E33|    2|

|       C123|    2|

|        C83|    2

 

--------+-----+

|Embarked|count|

+--------+-----+

|       S|  644|

|       C|  168|

|       Q|   77|

|    null|    2



Primera Pregunta:


¿Cuál es la proporción de sobrevivientes en relación al total de pasajeros a bordo del Titanic?

perc_sobreviventes = titanic.where(F.col('Survived') == 1).count() / titanic.count()
print(f"El porcentaje de sobrevivientes es: {perc_sobrevivientes:.2%}")

 

El porcentaje de sobrevivientes es: 38.38%



Segunda Pregunta:


¿Cuál es la edad media de los pasajeros que no sobrevivieron?

titanic.where(F.col('Survived') == 0).describe('Age')
summary

Age

count

424

mean

30.62617924528302

stddev

14.172109877138494

min

1.0

max

74.0

 

O podemos calcular:

media_edad = titanic.where(F.col('Survived') == 0).agg(F.mean('Age'))
print(f" La edad media de los pasajeros que no sobrevivieron es de {int(media_idade.first()[0])} años")

 

La edad media de los pasajeros que no sobrevivieron es de 30 anos




Tercera Pregunta:


¿Cuántos pasajeros de tercera clase sobrevivieron al naufragio?

sobrevivientes_tercera_clase = titanic.where(F.col('Survived') == 1).where(F.col('Pclass') == 3).count()
 
print(f"En tercera clase sobrevivieron {sobreviventes_terceira_classe} pasajeros")

En tercera clase sobrevivieron 119 pasajeros



Cuarta Pregunta:


¿Cuál es el porcentaje de mujeres sobrevivientes en relación al total de mujeres a bordo del Titanic?

mujeres = titanic.where(F.col('Sex') == 'female')
perc_mujeres_sobrevivientes = mujeres.where(F.col('Survived') == 1).count() / mujeres.count()

print(f"Sobrevivieron { perc_mujeres_sobrevivientes:.1%} de las mujeres a bordo")

 

Sobrevivieron 74.2% de las mujeres a bordo

Quinta Pregunta:


¿Cuál fue el precio medio del pasaje de los pasajeros que sobrevivieron al naufragio?

 

tarifa_media_sobrevivientes = titanic.where(F.col('Survived') == 1).agg(F.mean('Fare'))
 
print(f"El precio medio pagado por los sobrevivientes fue de ${tarifa_media_sobrevivientes.first()[0]:.2f}")

 

El precio medio pagado por los sobrevivientes fue de $48.40

Sexta Pregunta:


¿Cuál es la cantidad de pasajeros que embarcaron en el Titanic?

total = titanic.count()
print(f"En total embarcaron {total} pasajeros en el Titanic")

En total embarcaron 891 pasajeros en el Titanic


Séptima Pregunta:


¿Cuál es la proporción de pasajeros del sexo masculino en relación al total de pasajeros?

hombres = titanic.where(F.col('Sex') == 'male')
perc_hombres = hombres.count() / titanic.count()
print(f"Del total de pasajeros, el {perc_hombres:.0%} eran del sexo masculino")

 

Del total de pasajeros 65% eran del sexo masculino



Octava pregunta:


¿Cuál es la proporción de pasajeros de tercera clase que sobrevivieron?

tercera_clase = titanic.where(F.col('Pclass') == 3)
perc_sobrevivientes = tercera_clase.where(F.col('Survived') == 1).count() / tercera_clase.count()
 
print(f"De los pasajeros de tercera clase, el {perc_sobrevivientes:.0%} de ellos sobrevivieron")

 

De los pasajeros de tercera clase 24% de ellos sobrevivieron.

46 visualizaciones0 comentarios

コメント


bottom of page