No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Series y DataFrames en Pandas

11/24
Recursos

Ya entendiste los conceptos básicos de Numpy, ahora hay que entender como funciona la librería de Pandas, esta nos ayuda a hacer una mejor exploración y análisis de los datos.

Pandas

Pandas es una librería de Python especializada en el manejo y análisis de estructuras de datos. El nombre viene de “Panel data”.

• Velocidad
• Poco código
• Múltiples formatos de archivos
• Alineación inteligente

Pandas Series

Es muy parecido a un array de una dimensión (o vector) de NumPy.

• Arreglo unidimensional indexado
• Búsqueda por índice
• Slicing
• Operaciones aritméticas
• Distintos tipos de datos

Pandas DataFrame

Muy parecido a las estructuras matriciales trabajadas con NumPy.

• Estructura principal
• Arreglo de dos dimensiones
• Búsqueda por índice (columnas o filas)
• Slicing
• Operaciones aritméticas
• Distintos tipos de datos
• Tamaño variable

Series

Es un arreglo unidimensional indexado

import pandas as pd

Definiendo una lista con índices específicos

psg_players = pd.Series(['Navas','Mbappe','Neymar','Messi'], index=[1,7,10,30])

psg_players 
---> 1      Navas
     7     Mbappe
     10    Neymar
     30     Messi
     dtype: object         

Búsqueda por índices

dict = {1: 'Navas', 7: 'Mbappe', 10: 'Neymar', 30:'Messi'}
pd.Series(dict)
---> 1 Navas
7 Mbappe
10 Neymar
30 Messi
dtype: object

psg_players[7]
----> 'Mbappe'

Búsqueda mediante Slicing

psg_players[0:3]
-----> 0     Navas
       1    Mbappe
       2    Neymar
    dtype: object

Pandas

Similar a la estructura matricial

dict = {'Jugador':['Navas','Mbappe','Neymar','Messi'],
 'Altura':[183.0, 170.0, 170.0, 163.0],
  'Goles':[2, 200, 150, 500]}
df_players = pd.DataFrame(dict, index=[1,7,10,30])
--->   Jugador Altura Goles
        1 Navas    183    2
        7 Mbappe   170    200
        10 Neymar   170    150
        30 Messi    163    500

Búsqueda por índices. Columnas

df_players.columns
---> Index(['Jugador', 'Altura', 'Goles'], dtype='object')

Búsqueda por índice.

df_players.index
------> RangeIndex(start=0, stop=4, step=1)

Reto

Descarga este DataFrame de Granada FC

  • Crea tus propios DataFrames, con los índices que quieras y comparte tus resultados.

Contribución creada por: Edward Giraldo.

Aportes 152

Preguntas 9

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

La clase estuve muy bien. Solo tengo un comentario. Al minuto 11:25 se vuelve a repetir una parte del vídeo.

Me parece que no habría que usar “dict” como nombre de variable ya que es una palabra reservada del lenguaje.

PANDAS

Manipulación y análisis de datos. El nombre viene de “Panel data”.
• Velocidad
• Poco código
• Múltiples formatos de archivos
• Alineación inteligente

Pandas Series

Es muy parecido a un array de una dimensión (o vector) de NumPy.
• Arreglo unidimensional indexado
• Búsqueda por índice
• Slicing
• Operaciones aritméticas
• Distintos tipos de datos

Pandas DataFrame

Muy parecido a las estructuras matriciales trabajadas con NumPy.
• Estructura principal
• Arreglo de dos dimensiones
• Búsqueda por índice (columnas o filas)
• Slicing
• Operaciones aritméticas
• Distintos tipos de datos
• Tamaño variable

Messu=Messi + Siiuuuuuuuu

También se pueden construir DataFrames con listas que contengan diccionarios:

(enlace del notion donde recopilo aportes de la clase)

Series y Dataframes

PANDAS

Pandas es una librería de Python especializada en el manejo y análisis de estructuras de datos. Se caracterisa por su:

• Velocidad

• Poco código

• Múltiples formatos de archivos

• Alineación inteligente

Crear una serie

  • Serie con index personalizado
psdg_players = pd.Series(
['Navas','Mbappe','Neymar','Messi'],
index=[1,7,10,30]
)
psdg_players
  • Serie con index default
psdg_players = pd.Series(['Navas','Mbappe','Neymar','Messi'])
psdg_players
  • Serie con diccionario JSON
dictionary = {1: 'Navas', 7:'Mbappe', 10:'Neymar', 30:'Messi'}
pd.Series(dictionary)

Slicing

# Funciona igual que Numpy
psdg_players[0:3]

Dataframe Matricial

dictionary = {'jugador':['Navas','Mbappe','Neymar','Messi'],
'altura':[183.0, 170.0, 170.0, 165.0],
'goles':[2, 200, 200, 200]
}
  • Dataframe con index personalizado
pd.DataFrame(dictionary, index=[1,7,10,30])
  • Dataframe con index default
pd.DataFrame(dictionary)

Visualizar Ejes DataFrame

df_Players = pd.DataFrame(dictionary)
df_Players
  • Visualziar Data por Columnas
df_Players.columns
  • Visualizar Data por Indices
    • Indice default

      df_Players.index
      
    • Indice Personalizado

      df_Players = pd.DataFrame(dictionary, index=[1,7,10,30])
      df_Players.index
      

Reto

  • Aplicar lo aprendido en clases con el JSON dado
dataframe_reto = {
'Jugador':['Luis Suárez','Jorge Molina', 'Antonio Puertas', 'Germán Sánchez', 'Luis Milla', 'Luís Manuel Arantes Maximiano'],
'Posición':['Delantero', 'Delantero', 'Centrocampista', 'Defensa', 'Centrocampista', 'Portero'],
'Número':[9, 23, 10, 6, 5, 1],
'Altura':[185.0, 187.0, 185.0, 187.0, 175.0, 190.0],
'Goles':[7, 7, 5, 2, 2, 0]
}
#Compruebo que el largo del JSON este bien en todos los arrays
for i in dataframe_reto:
	print(len(dataframe_reto[i]))
granadaCF_players = pd.DataFrame(dataframe_reto, index=dataframe_reto['Número'])
granadaCF_players

Así les quedaría en el notion

Esta parte del curso es toda con datasets.
Les dejo uno que me pareció divertido y me fue muy útil para practicar las clases de este módulo.
Es un dataset de pokemon–>link. Está super bien construido, con muchas columnas de distintos tipos y toda la info perfectamente cargada.

Algo curioso que noté es que al momento de llamar a pd.Series es necesario que la “S” de Series esté en mayúscula. De lo contrario no lo reconoce.

Comparto mi aporte, aunque no es del granada fc

<code> formula1 = pd.DataFrame(
    {
        'Nombre':['Charles Leclerc','Carlos Sainz','Lewis Hamilton','George Russell', 'Max Verstapen','Sergio Perez','Lando Norris', 'Daniel Ricciardo'],
        'Equipo':['Ferrari','Ferrari','Mercedes','Mercedes','RedBull','RedBull','Mclaren','Mclaren'],
        'Pais':['Monaco','España','Reino Unido','Reino Unido','Paises Bajos','Mexico','Reino Unido', 'Australia'],
        'Edad':['24','27','37','24','24','32','22','32'],
        'Numero':['16','55','44','63','1','11','4','3'],
        'Podios':['16','8','183','2','53','12','3','32'],
        'Victorias':['4','0','103','0','21','2','0','8']
    }
)
formula1  

Exploración de un pandas DataFrame

En la clase conocimos la estructura central de pandas, el DataFrame, que permite almacenar datos tabulares: cada fila es una observación y cada columna una propiedad. Aquí voy a enlistar los tres métodos que considero más útiles para familizarte con un nuevo DataFrame con el que estés comenzando a trabajar.
.

Método .head()

Éste método permite ver, por defecto, las cinco primeras filas de un DataFrame. Por supuesto, puedes pasar como argumento el número de filas que deseas ver.
.

.

Método .info()

Este método te muestra los nombres de las columnas del DataFrame, la cantidad de valores nulos en cada una y el data type que contienen.
.

.

Método .describe()

Devuelve un DataFrame con estadísticos básicos para cada columna de tu DataFrame original. Es epecialmente útil para columnas que contienen datos numéricos.
.

Mi dataframe y mis apuntes aqui

Aqui les comparto mi DataFrame, lo organice para mostrar jugadores con respecto a los datos.

Hola, yo quise hacer un data frame con los jugadores de la selección colombia del mundial 2014 especialmente el partido Colombia vs Uruguay.

<
jugadores_Col_2014 = {
    'Nombre':['David Ospina','Cristian Zapata','Mario Yepes','Pablo Armero',
              'Juan Zuñiga','Carlos Sanchez','Abel Aguilar','James Rodriguez',
              'Juan Guillermo Cuadrado','Teofilo Gutierrez','Jackson Martinez'],
    'Posición':['AR','DF','DF','DF','DF','MC','MC','MC','MC','DL','DL'],
    'Dorsal' : [1,2,3,7,18,6,8,10,11,9,21],
    'Club Actual':['Al-Nassar FC','San Lorenzo de Almagro','Retirado',
                   'Retirado','Retirado','Santa Fe','Retirado','AL-Rayyan SC',
                   'Juventus','Deportivo Cali','Retirado'],
}

jugadores_COL_vs_URU_2014 = pd.DataFrame(jugadores_Col_2014)
jugadores_COL_vs_URU_2014
> 

Pandas 🐼

Pandas es una librería de Python especializada en el manejo y análisis de estructuras de datos

Pandas → Analitica, manipulacion y procesamiento de datos
[Panel Data]

Import pandas as pd

Series y DataFrames
1ero
✅ Parecido a arrays 1 Dimendios
2do ✅ Array pero de forma matricial
[ Col → Indice ; Fil → clave ] es como un diccionario

☑️ Velocidad
☑️ Poco código
☑️ Múltiples formatos de archivos
☑️ Alineación inteligente

Series

  • Es un arreglo unidimensional indexado
import pandas as pd

#definiendo una lista con indices especificos
psg_players = pd.Series(['Navas','Mbappe','Neymar','Messi'],
              index=[1,7,10,30])
psg_players ----> 1      Navas
									7     Mbappe
									10    Neymar
									30     Messi
									dtype: object
  • Permite hacer busqueda por indices
psg_players[2]
-----> 'Neymar'
  • Busqueda mediante Slicing
psg_players[0:3]
-----> 0     Navas
			 1    Mbappe
       2    Neymar
			 dtype: object

Pandas

  • Similar a la estrucutra matricial. Arreglo de dos dimensiones
dict = {'Jugador':['Navas','Mbappe','Neymar','Messi'],
 'Altura':[183.0, 170.0, 170.0, 163.0],
  'Goles':[2, 200, 150, 500]}
df_players = pd.DataFrame(dict)
----->   Jugador Altura Goles
			 0 Navas    183    2
			 1 Mbappe   170    200
			 2 Neymar   170    150
			 3 Messi    163    500
  • Busqueda por indices. Columnas
df_players.columns
------> Index(['Jugador', 'Altura', 'Goles'], dtype='object')

  • Busqueda por indice.
df_players.index
------> RangeIndex(start=0, stop=4, step=1)

Aquí mi reto:
.

Hay distintas formas de crear un data frame, alguno de ellos.

  1. Desde un diccionario de listas (metodo visto en clase).

  2. Desde una matriz estructurada o de registros.

  3. Desde una lista de diccionarios.

  4. Desde una lista de series.
    Fuente https://pandas.pydata.org/docs/user_guide/dsintro.html
    DATOS:
    ‘Jugador’:[‘Luis Suárez’,‘Jorge Molina’, ‘Antonio Puertas’, ‘Germán Sánchez’, ‘Luis Milla’, ‘Luís Manuel Arantes Maximiano’]
    ‘Posición’:[‘Delantero’, ‘Delantero’, ‘Centrocampista’, ‘Defensa’, ‘Centrocampista’, ‘Portero’]
    ‘Número’:[9, 23, 10, 6, 5, 1]
    ‘Altura’:[185.0, 187.0, 185.0, 187.0, 175.0, 190.0]
    ‘Goles’:[7, 7, 5, 2, 2, 0]

  5. Desde un diccionario de listas (metodo visto en clase)

import pandas as pd
dictDeListas = {'Jugador':['Luis Suárez','Jorge Molina', 'Antonio Puertas', 'Germán Sánchez', 'Luis Milla', 'Luís Manuel Arantes Maximiano'],
 'Posicion':['Delantero', 'Delantero', 'Centrocampista', 'Defensa', 'Centrocampista', 'Portero'],
 'Altura':[185.0, 187.0, 185.0, 187.0, 175.0, 190.0],
 'Goles':[7, 7, 5, 2, 2, 0]
 }  
df_dictDeListas = pd.DataFrame(dict_granadafc,index=[9, 23, 10, 6, 5, 1])
df_dictDeListas
  1. Desde una matriz estructurada NUMPY
    Defino la estructura y los elemento de la matriz NUMPY
import numpy as np
npMatiz6x4 = np.zeros((6,), dtype=[("Jugador", "a30"), ("Posicion", "a15"), ("Altura", "f4"), ("Goles", "i4")])
npMatiz6x4[:] = [("Luis Suarez","Delantero",185.0,7),("Jorge Molina","Delantero",187.0,7),("Antonio Puertas","Centrocampista",185.0,5),("German Sanchez","Defensa",187.0,2),("Luis Milla","Centrocampista",175.0,2),("Luis Manuel Arantes Maximiano","Portero",190.0,0)]
npMatiz6x4

array([(b’Luis Suarez’, b’Delantero’, 185., 7),
(b’Jorge Molina’, b’Delantero’, 187., 7),
(b’Antonio Puertas’, b’Centrocampista’, 185., 5),
(b’German Sanchez’, b’Defensa’, 187., 2),
(b’Luis Milla’, b’Centrocampista’, 175., 2),
(b’Luis Manuel Arantes Maximiano’, b’Portero’, 190., 0)],
dtype=[(‘Jugador’, ‘S30’), (‘Posicion’, ‘S15’), (‘Altura’, ‘<f4’), (‘Goles’, ‘<i4’)])

df_npMatiz6x4 = pd.DataFrame(npMatiz6x4,index=[9, 23, 10, 6, 5, 1])
#np_Matiz6x4
  1. Desde una lista de diccionarios
listadic = [{"Jugador":"Luis Suárez","Posicion":"Delantero","Altura":185,"Goles":7},
          {"Jugador":"Jorge Molina","Posicion":"Delantero","Altura":187,"Goles":7},
          {"Jugador":"Antonio Puertas","Posicion":"Centrocampista","Altura":185,"Goles":5},
          {"Jugador":"Germán Sánchez","Posicion":"Defensa","Altura":187,"Goles":2},
          {"Jugador":"Luis Milla","Posicion":"Centrocampista","Altura":175,"Goles":2},
          {"Jugador":"Luís Manuel Arantes Maximiano","Posicion":"Portero","Altura":190,"Goles":0}]

listadic

[{‘Altura’: 185,
‘Goles’: 7,
‘Jugador’: ‘Luis Suárez’,
‘Posicion’: ‘Delantero’},
{‘Altura’: 187,
‘Goles’: 7,
‘Jugador’: ‘Jorge Molina’,
‘Posicion’: ‘Delantero’},
{‘Altura’: 185,
‘Goles’: 5,
‘Jugador’: ‘Antonio Puertas’,
‘Posicion’: ‘Centrocampista’},
{‘Altura’: 187,
‘Goles’: 2,
‘Jugador’: ‘Germán Sánchez’,
‘Posicion’: ‘Defensa’},
{‘Altura’: 175,
‘Goles’: 2,
‘Jugador’: ‘Luis Milla’,
‘Posicion’: ‘Centrocampista’},
{‘Altura’: 190,
‘Goles’: 0,
‘Jugador’: ‘Luís Manuel Arantes Maximiano’,
‘Posicion’: ‘Portero’}]

df_listadic = pd.DataFrame(listadic,index=[9, 23, 10, 6, 5, 1])
#df_listadic
  1. Desde una lista de series
listaSeries = {
      "Jugador" : pd.Series(["Luis Suárez","Jorge Molina","Antonio Puertas","Germán Sánchez","Luis Milla","Luís Manuel Arantes Maximiano"],index=[9, 23, 10, 6, 5, 1]),
      "Posicion": pd.Series(["Delantero","Delantero","Centrocampista","Defensa","Centrocampista","Portero"],index=[9, 23, 10, 6, 5, 1]),
      "Altura"  : pd.Series([185,187,185,187,175,190],index=[9, 23, 10, 6, 5, 1]),
      "Goles"   : pd.Series([7,7,5,2,2,0],index=[9, 23, 10, 6, 5, 1])
}
listaSeries

{‘Altura’: 9 185
23 187
10 185
6 187
5 175
1 190
dtype: int64, ‘Goles’: 9 7
23 7
10 5
6 2
5 2
1 0
dtype: int64, ‘Jugador’: 9 Luis Suárez
23 Jorge Molina
10 Antonio Puertas
6 Germán Sánchez
5 Luis Milla
1 Luís Manuel Arantes Maximiano
dtype: object, ‘Posicion’: 9 Delantero
23 Delantero
10 Centrocampista
6 Defensa
5 Centrocampista
1 Portero
dtype: object}

df_listaSeries = pd.DataFrame(listaSeries)
#df_listaSeries

Como pequeño aporte le añadí unos gráficos:

El código que emplee fue:

import matplotlib.pyplot as plt
import seaborn as sns 
# Graficando
plt.figure(figsize=(12, 6))

# Gráfico de barras para los goles
plt.subplot(1, 2, 1)
sns.barplot(x='Jugador', y='Goles', data=gt_Players, palette='viridis', legend=False)
plt.title('Goles de los Jugadores')
plt.xlabel('Jugador')
plt.ylabel('Goles')
plt.xticks(rotation=45)  # Rotar las etiquetas de los jugadores para mejor legibilidad

# Gráfico de barras para la altura
plt.subplot(1, 2, 2)
barplot = sns.barplot(x='Jugador', y='Altura', data=gt_Players, palette='viridis', legend=False)
plt.title('Altura de los Jugadores')
plt.xlabel('Jugador')
plt.ylabel('Altura (cm)')
plt.xticks(rotation=45)  # Rotar las etiquetas de los jugadores para mejor legibilidad

# Añadir etiquetas de datos dentro de cada barra
for p in barplot.patches:
    barplot.annotate(format(p.get_height(), '.1f'), 
                     (p.get_x() + p.get_width() / 2., p.get_height()), 
                     ha = 'center', va = 'center', 
                     xytext = (0, -10), 
                     textcoords = 'offset points')

plt.tight_layout()
plt.show()
A continuación mi aporte. Pd1: No es mi aporte futbolero pero quería practicar con datos random de la F1 y que me acabo de inventar XD. Pd2: Fans a muerte de la F1, no se enojen solo son datos random para mi práctica ![](https://static.platzi.com/media/user_upload/image-e2f8b322-d070-457c-a2ca-0366144dee22.jpg)![](https://static.platzi.com/media/user_upload/image-20b446d4-9180-4a87-92a7-0b20f9ea59f1.jpg)

Pandas
Es la librerpia de Python que nos permite trabajar con DataFrames basada en NumPy; maneja dos tipos de datos

  • Series: Arreglo unidimensional indexado: my_serie = pd.Series(data), admite el parámetro index que nos premite nombrar el índice al momento de declarar la variable; tambien podemos declarar la serie por medio de diccionarios.
  • DataFramen: Arreglo de dos dimensiones (matricial): my_dataframe = pd.DataFrame(data)

A diferencia de NumPy permite almacenar distintos tipos de datos.
Para referirnos a los datos almacenados usamos los indices y el nombre de columnas.

Mi resumen #12 (Notion + Notas de Cornell)

Oye, hay un error. Este video debería estar antes de Cómo cargar archivos en Pandas. Están al revés el 11 y el 12.

Algunas de las características de Pandas DataFrame son:

  • Arrays con estructura matricial
  • Búsqueda por índice (columnas o filas)
  • Slicing
  • Operaciones aritméticas
  • Distintos tipos de datos
  • Tamaño variable
![](https://static.platzi.com/media/user_upload/image-ba428928-b19f-4b06-ab15-50253579decc.jpg)
Players\_granadaCF = {    'Jugador':\['Luis Suárez','Jorge Molina', 'Antonio Puertas', 'Germán Sánchez', 'Luis Milla', 'Luís Manuel Arantes Maximiano'],    'Posición':\['Delantero', 'Delantero', 'Centrocampista', 'Defensa', 'Centrocampista', 'Portero'],    'Número':\[9, 23, 10, 6, 5, 1],    'Altura':\[185.0, 187.0, 185.0, 187.0, 175.0, 190.0],    'Goles':\[7, 7, 5, 2, 2, 0]  }df\_Players\_GCF = pd.DataFrame(Players\_granadaCF)df\_Players\_GCF
Reto: He aumentado los datos de edad y nacionalidad de los jugadores. No sé mucho de futbol, pero al buscar información, me enteré que a la fecha, Jorge Molina ya está retirado. Con fines del ejercicio igual coloqué sus datos. ![](https://static.platzi.com/media/user_upload/image-23ffac86-3653-4802-bf63-8504fe4c3fc4.jpg) ![]()
Reto: ![](https://static.platzi.com/media/user_upload/image-91fa6aa3-db4f-4240-bec4-c373cb270147.jpg)
Yo lo hice Para F1 `F1={"Drivers":["Verstappen", "Sainz", "Alonso", "Hamilton"],    "Escuderia":["Redbull","Ferrari","Aston martin","Mercedes"],    "Puntos":[255,146,100,110]    }` `F1_df=pd.DataFrame(F1,index=[2, 1, 4, 3])print(F1_df)`
según la documentación. DataFrame solo acepta 2 dimensiones, en la clase se dice que la variable *dict* está usando 3 dimensiones lo cual parece ser falso. Agradecería si alguien pudiera refutar mi aporte
![](https://static.platzi.com/media/user_upload/image-c20e7903-34f9-46d5-9168-98359385a15e.jpg)
Titular del Granda FC: ![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202024-06-26%20a%20la%28s%29%209.14.46%E2%80%AFp.%C2%A0m.-b161b0c3-31ca-44d0-87f7-e0dc996bef2d.jpg)
Dejo el comentario en caso de que a alguien le sea útil. En caso de que esten usando visual studio, y les genere "No module named 'pandas'--> Recuerden instalar primero el pandas, a través de la terminal de Visual, con el comando pip o pip3 (depende el caso) pip3 install pandas
no duro mucho la alianza Granada & Platzi
Platzi fue patrocinador: [Platzi, nuevo patrocinador principal del Granada CF | Granada CF | Web Oficial](https://www.granadacf.es/noticias/platzi-nuevo-patrocinador-principal-del-granada-cf) la planilla del equipo: [Plantilla primer equipo | Granada CF | Web Oficial](https://www.granadacf.es/plantilla) podemos usar el método `` `.loc` ``y sabremos la info del index ![](https://static.platzi.com/media/user_upload/dataframe_pandas_grandas_fc-3e927b5d-1874-43b3-a336-16e149ac69cb.jpg)
Algo curioso que encontre y comparto: ```js psg_players[2:3] #al hacer slicing, este se guia por el index automatico ```psg\_players\[10]```js psg_players[10] # en cambio aqui llama por el indice que hemos inducido ```
Les comparto el siguiente código donde en vez de tener directamente un diccionario con todas las keys y sus values (en este caso un array), se encuentran individuales ya que es algo que creo que a veces no siempre lo tenemos como el primer caso. Por ello, creo que usar el operadore de desempaquetado les puede ayudar como a mí. ![](https://static.platzi.com/media/user_upload/image-30249abc-b294-43b3-93d8-00d06ec95d37.jpg) ```js import pandas as pd a1 = {'Jugador': ['Luis Suarez', 'Jorge Molina', 'Antonio Puertas', 'German Sanchez', 'Luis Milla', 'Luis Manuel Arantes Maximiano']} a2 = {'Posicion': ['Delantero', 'Delantero', 'Centrocampista', 'Defensa', 'Centrocampista', 'Portero']} a3 = {'Numero': [9, 23, 10, 6, 5, 1]} a4 = {'Altura': [185.0, 187.0, 185.0, 187.0, 175.0, 190.0]} a5 = {'Goles': [7, 7, 5, 2, 2, 0]} # Unir los diccionarios con el operador ** de desempaquetado combined_dict = {**a1, **a2, **a3, **a4, **a5} df = pd.DataFrame(combined_dict) df ```
buenas tardes a alguno de ustedes les ha pasado que cuando importan archivos csv o excel tienen data perdida como columnas qué no están y en el archivo si o filas ?
Hago mi aporte del reto propuesto ![](https://static.platzi.com/media/user_upload/image-e039dedb-3828-408d-b742-c0cae17f5813.jpg)![](https://static.platzi.com/media/user_upload/image-c1d4007c-e803-48e7-90ab-48e6f3b21a97.jpg)

Me encanto este ejercicio con pandas el cual tiene como finalidad aprender y mejorar nuestras tablas de manera especifica. Ademas simplifica bastante codigo en python gracias a sus librerias.
Aqui esta mi reto:
![](

```js granadafc = {'Jugador': ['Luis Suarez', 'Jorge Molina', 'Antonio Puertas', 'German Sánchez', 'Luis Milla', 'Luis Manuel'], 'Posición': ['Delantero', 'Delantero', 'Centrocampista', 'Defensa', 'Centrocampista', 'Portero'], 'Numero': [9, 23, 10, 6, 5, 1], 'Altura': [185.0, 187.0, 185.0, 187.0, 175.0, 190.0], 'Goles': [7, 7, 5, 2, 2, 0] } tabla_De_jugadores = pd.DataFrame(granadafc) tabla_De_jugadores ```
```python import pandas as pd # Crear una serie de jugadores con índices personalizados players = pd.Series(['Navas', 'Embape', 'Messi', 'Ronaldo'], index=[1, 7, 10, 7] ) print(players) # La serie no tiene índices personalizados players = pd.Series(['Navas', 'Embape', 'Messi', 'Ronaldo']) print(players) # Crear un diccionario de jugadores con números como claves dict = {1: 'Navas', 3: 'Pepe', 11: 'Embape', 7: 'CR7'} print(dict) # Convertir el diccionario en una serie de Pandas print(pd.Series(dict)) # Crear un DataFrame de jugadores con índices personalizados dicionario_jugadores = {'Jugador': ['Navas', 'Embape', 'Messi', 'Ronaldo'], 'Altura': [171, 169, 170, 185], 'Goles': [10, 200, 250, 365] } print(pd.DataFrame(dicionario_jugadores, index=[1, 7, 10, 7])) ```
De acuerdo a los datos del granada, pude realizar los siguientes hallazgos de forma aleatoria ```python #! Creación DataFrame .. Granada F.C divisor = '*' * 100 dict = {'Jugador':['Luis Suárez','Jorge Molina', 'Antonio Puertas', 'Germán Sánchez', 'Luis Milla', 'Luís Manuel Arantes Maximiano'], 'Posición':['Delantero', 'Delantero', 'Centrocampista', 'Defensa', 'Centrocampista', 'Portero'], 'Número':[9, 23, 10, 6, 5, 1], 'Altura':[185.0, 187.0, 185.0, 187.0, 175.0, 190.0], 'Goles':[7, 7, 5, 2, 2, 0] } df_granada = pd.DataFrame(dict) delanteros = df_granada['Posición'] == 'Delantero' print('Los delanteros del granada son =>') print(df_granada[delanteros]) print(divisor) menor_cantidad_goles = df_granada['Goles'] == min(df_granada['Goles']) print('Menor cantidad de goles realizadas por =>') print(df_granada[menor_cantidad_goles]) print(divisor) mayor_cantidad_goles = df_granada['Goles'] == max(df_granada['Goles']) print('Mayor cantidad de goles realizadas por =>') print(df_granada[mayor_cantidad_goles]) print(divisor) altura_jugadores = df_granada['Altura'] > 185.0 print('Jugadores con altura superior a 185 Cm =>') print(df_granada[altura_jugadores]) print(divisor) altura_jugadores = df_granada['Altura'] <= 185.0 print('Jugadores con altura inferior a 185 Cm =>') print(df_granada[altura_jugadores]) ```
Mi aporte filtrando que jugador hizo más de dos goles. 😊![](https://static.platzi.com/media/user_upload/image-c4de4f55-cee7-4954-b81f-95713e82f34e.jpg)![](https://static.platzi.com/media/user_upload/image-2b6ddb91-ffad-44ab-ad66-7d6753d2d340.jpg)![]()
![](https://static.platzi.com/media/user_upload/jugadores%20granada-a5de9d05-8268-46ce-b3fa-f4ccf1272340.jpg)

genial clase!

# 🦄DataFrames en Pandas `data = {'Nombre': ['Juan', 'María', 'Carlos'],` ` 'Edad': [25, 30, 22],` ` 'Ciudad': ['Madrid', 'Barcelona', 'Sevilla']}` `df = pd.DataFrame(data)` Podemos acceder a datos específicos utilizando índices y nombres de columnas. Por ejemplo, para obtener la columna 'Edad': `edades = df['Edad']` Para acceder a una fila específica, puedes utilizar el método `loc`: `persona = df.loc[0] # Obtiene la primera fila` Podemos realizar diversas operaciones en los DataFrames, como filtrar datos, realizar cálculos y más. Por ejemplo, para filtrar personas mayores de 25 años: `mayores_de_25 = df[df['Edad'] > 25]` Podemos modificar datos existentes o agregar nuevas columnas. Por ejemplo, para incrementar la edad de todos en 1: `df['Edad'] = df['Edad'] + 1` Agregar nuevas columnas: `df['Nueva_Columna'] = [True, False, True]`
## 🦄**Series y DataFrames en Pandas** * Una serie en Pandas es una estructura de datos unidimensional que puede contener cualquier tipo de datos como números, cadenas, booleanos, etc. Se utiliza comúnmente para representar una columna de datos en un DataFrame. * Los DataFrames de Pandas, son muy parecidos a las estructuras matriciales. Cada columna en un DataFrame es esencialmente una Serie de Pandas, y todas las columnas comparten el mismo índice. Podemos realizar operaciones complejas como filtrar datos, realizar operaciones matemáticas a una fila o a una columna especifica, tiene un tamaño variable y realizar análisis con nuestro DataFrame.
Hola!!! me da error la parte del diccionario: \#otra forma es pasarle un diccionario **pd.Series** = (\['Navas','Mbappe','Neymar','Messi']) **pd.Series** \['Navas', 'Mbappe', 'Neymar', 'Messi'] **dict**= {1:'Navas',7:'Mbappe',10:'Neymar',30:'Messi'} \#le paso el diccionario a pd.Series pd.Series(dict) *TypeError Traceback (most recent call last)* *Input In \[23], in \<cell line: 1>()* *----> 1 pd.Series(dict)* *TypeError: 'list' object is not callable* Gracias!!!

Mi aporte :

Mi ejemplo de DataFrame con Pandas. Use videojuegos: ![](https://static.platzi.com/media/user_upload/image-b014e12a-5b6c-4505-917e-def50f3e9615.jpg)
Buenas, necesito ayuda, al intentar ejecutar la linea me sale esto: "NameError Traceback (most recent call last) [\<ipython-input-1-c12546332cf1>](https://localhost:8080/#) in \<cell line: 1>() ----> 1 pd.DataFrame(dict,index=\[1,7,10,30]) NameError: name 'pd' is not defined" No encuentro el error y no puedo avanzar.- tampoco puedo hacerlo en visuacode o en pychard. Alguien que pueda ayudarme?
Necito que alguien me ayude. Al intentar ejecutar la liena de codigo me sale : "NameError Traceback (most recent call last) [\<ipython-input-1-c12546332cf1>](https://localhost:8080/#) in \<cell line: 1>() \----> 1 pd.DataFrame(dict,index=\[1,7,10,30]) NameError: name 'pd' is not defined" Revise varias veces, pero no logro dar con el error. Si alguien me pudiera ayudar se lo agradeceria.-

golazo!

Hola no se ven los recursos de esta clase. :'(

En esta clase sobre pandas aprendi que los dataframes son estructuras matriciales que nos permiten ver informacion mas compacta y con gran cantidad de elementos. Tambien que se pueden crear a partir de diccionarios y en su defecto a partir tambien de lista de diccionarios, es decir, siempre debe estar el conjunto llave\valor.
.
A continuacion presento mi solucion al reto:
.

No se ingresan por el index como dice el, se accede es por key

chelsea = {'Jugador': ['Drogba','Lampard','Terry','Cech', 'Kanté'],
    'dorsal': [11, 8, 26, 1, 7],
    'posicion': ['delantero', 'volante 8', 'defensa central', 'arquero','volante recuperador'],
    'Pierna': ['derecha', 'derecha', 'derecha', 'izquierda', 'derecha'],
    'goles': [164.0, 211.0, 67.0, 0.0, 13.0],
    'partidos': [381, 648.0, 717.0, 494.0, 269.0]
}

df.describe()
Número Altura Goles
count 6.000000 6.000000 6.000000
mean 9.000000 184.833333 3.833333
std 7.563068 5.154286 2.926887
min 1.000000 175.000000 0.000000
25% 5.250000 185.000000 2.000000
50% 7.500000 186.000000 3.500000
75% 9.750000 187.000000 6.500000
max 23.000000 190.000000 7.000000

from pandas.core.internals.base import Index
dict2={‘Jugador’:[‘Luis Suárez’,‘Jorge Molina’, ‘Antonio Puertas’, ‘Germán Sánchez’, ‘Luis Milla’, ‘Lui­s Manuel Arantes Maximiano’],
‘Posición’:[‘Delantero’, ‘Delantero’, ‘Centrocampista’, ‘Defensa’, ‘Centrocampista’, ‘Portero’],
‘Número’:[9, 23, 10, 6, 5, 1],
‘Altura’:[185.0, 187.0, 185.0, 187.0, 175.0, 190.0],
‘Goles’:[7, 7, 5, 2, 2, 0]
}
Jugador Posición Número Altura Goles
0 Luis Suárez Delantero 9 185.0 7
1 Jorge Molina Delantero 23 187.0 7
2 Antonio Puertas Centrocampista 10 185.0 5
3 Germán Sánchez Defensa 6 187.0 2
4 Luis Milla Centrocampista 5 175.0 2
5 Luis Manuel Arantes Maximiano Portero 1 190.0

Datos estadísticos extraidos de la tabla:
df[‘Altura’].max()
190.0
df[‘Goles’].min()
0
df[‘Goles’].max()
7
df[‘Altura’].mean()
184.83
df[‘Altura’].median()
186.0
df[‘Altura’].std()
5.15
df[‘Altura’].var()
26.56

data = {
    'Nombre': ['Mohamed Salah', 'Sadio Mané', 'Roberto Firmino', 'Virgil van Dijk', 'Trent Alexander-Arnold'],
    'Posición': ['Delantero', 'Delantero', 'Delantero', 'Defensa', 'Defensa'],
    'Goles en la temporada': [20, 15, 10, 2, 5],
    'Asistencias en la temporada': [10, 8, 12, 1, 12],
    'G/A en la temporada': [30, 23, 22, 3, 17],
    'Valor de mercado': ['€120M', '€100M', '€90M', '€80M', '€75M']
}

dorsales = [11, 10, 9, 4, 66]

df_liverpool = pd.DataFrame(data, index=dorsales)

Desafío listo

Solución al reto:

Mi aporte:

Mi aporte basado en el juego Brawl stars:

Y aquí está el team Granada con sus columnas y indexs… 😃

dict = { 'Jugador':['Luis Suárez','Jorge Molina', 'Antonio Puertas', 'Germán Sánchez', 'Luis Milla', 'Luís Manuel Arantes Maximiano'],
        'Posición':['Delantero', 'Delantero', 'Centrocampista', 'Defensa', 'Centrocampista', 'Portero'],
        'Número':[9, 23, 10, 6, 5, 1],
        'Altura':[185.0, 187.0, 185.0, 187.0, 175.0, 190.0],
        'Goles':[7, 7, 5, 2, 2, 0]
        }


pd.DataFrame(dict, index=[9, 23, 10, 6, 5, 1])

granada_player = pd.DataFrame(dict,index=[9, 23, 10, 6, 5, 1])

granada_player.columns

granada_player.index

dict = {
‘jugador’:[‘Luis Suarez’,‘Jorge Molina’, ‘Antonio Puertas’, ‘German Sanchez’, ‘Luis Milla’, ‘Luis Manuel Arantes Maximiano’],
‘posicion’: [‘Delantero’, ‘Delantero’, ‘Centrocampista’, ‘Defensa’, ‘Centrocampista’, ‘Portero’],
‘altura’:[185.0, 187.0, 185.0, 187.0, 175.0, 190.0],
‘goles’:[7, 7, 5, 2, 2, 0]
}
El index son los numeros de las camisetas:
df_jugadores= pd.DataFrame(dict, index=[9, 23, 10, 6, 5, 1])

11. Series y DataFrames en Pandas

Pandas Series

  • Arreglo unidimensional indexado.
  • Búsqueda por índice.
  • Slicing
  • Operaciones aritméticas.
  • Distintos tipos de datos.

Pandas DataFrame

  • Estructura principal
  • Arreglo de dos dimensiones
  • Búsqueda por índice (columnas o filas)
  • Slicing
  • Operaciones aritméticas
  • Distintos tipos de datos
  • Tamaño variable
import pandas as pd

psg_players = pd.Series(['Navas', 'Mbappe', 'Neymar', 'Messi'],
          index=[1,7,10,30]
          )

psg_players

pd.Series(['Navas', 'Mbappe', 'Neymar', 'Messi'],
          
          )

dict={1:'Navas',7:'Mbappe',10:'Neymar',30:'Messi'}
pd.Series(dict)

psg_players[0:3]

dict= {'Jugador':['Navas', 'Mbappe', 'Neymar', 'Messi'],
 'Altura':[183,170,175,160],
 'Goles':[0,200,300,348]
 }

df_players=pd.DataFrame(dict)

df_players.columns

df_players.index

dict={‘Jugador’:[‘Luis Suárez’,‘Jorge Molina’, ‘Antonio Puertas’, ‘Germán Sánchez’, ‘Luis Milla’, ‘Luís Manuel Arantes Maximiano’],
‘Posición’:[‘Delantero’, ‘Delantero’, ‘Centrocampista’, ‘Defensa’, ‘Centrocampista’, ‘Portero’],
‘Altura’:[185.0, 187.0, 185.0, 187.0, 175.0, 190.0],
‘Goles’:[7, 7, 5, 2, 2, 0]
}

estdisticas_granda = pd.DataFrame(dict)
estdisticas_granda

Platzi pratocinando al granada. Wow. Cada vez se superan.

granada = {'Jugador':['Luis Suarez','Jorge Molina', 'Antonio Puertas', 'German Sanchez', 'Luis Milla', 'Luis Manuel Arantes Maximiano'],
           'Posicion':['Delantero', 'Delantero', 'Centrocampista', 'Defensa', 'Centrocampista', 'Portero'],
           'Numero':[9, 23, 10, 6, 5, 1],
           'Altura':[185.0, 187.0, 185.0, 187.0, 175.0, 190.0],
           'Goles':[7, 7, 5, 2, 2, 0]
           }
granada_df = pd.DataFrame(granada)

granada_df.set_index('Numero', inplace=True)

granada_df.head()

Hice mi DataFrame con personajes de starwars jeje

Ejemplo de Data Frame con los goleadores de la UEFA Champions League 2022/2023:

<champions_dict = {'Player':['Erling Haland', 'Mohamed Saláh', 'Kylian Mbappe','Joao Mario','Vinicius Jr','Robert Lewandowski','Mehdi Taremi','Rafa Silva','Giacomo Raspadori','Victor Osimhen','Erick Choupo-Moting','Mohammed Kudus','Leroy Sané','Jude Bellingham','Giovani Simeone'],
                  'Team':['Manchester city','Liverpool','Paris Saint Germain','Benfica','Real Madrid','Barcelona FC','Porto FC','Benfica','Napoli','Napoli','Bayern Munich','Ajax FC','Bayern Munich','Borussia Dortmund','Napoli'],
                  'Country of player': ['Norway', 'Egypt','France','Portugal','Brazil','Poland','Iran','Portugal','Italy','Nigeria','Cameroon','Ghana','Germany','England','Argentina'],
                  'GF':[10,8,7,6,6,5,5,5,4,4,4,4,4,4,4],
                  'PJ':[6,8,8,8,8,5,7,8,5,5,6,6,6,7,7],
                  'Goals for match':[1.67,1.0,0.88,0.75,0.75,1.0,0.71,0.63,0.80,0.80,0.67,0.67,0.67,0.57,0.57]

df_champions = pd.DataFrame(champions_dict, index = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])
df_champions 

}> 

Mi aporte del reto:

porque pones a messi ultimo -.-
Me parece o este vídeo iba antes que el 12 ?

dict_platzi = {
    'Jugador':['Luis Suárez','Jorge Molina', 'Antonio Puertas', 'Germán Sánchez', 'Luis Milla', 'Luí­s Manuel Arantes Maximiano'],
    'Posición':['Delantero', 'Delantero', 'Centrocampista', 'Defensa', 'Centrocampista', 'Portero'],
    'Número':[9, 23, 10, 6, 5, 1],
    'Altura':[185.0, 187.0, 185.0, 187.0, 175.0, 190.0],
    'Goles':[7, 7, 5, 2, 2, 0]
}

df_platzi = pd.DataFrame(dict_platzi)

df_platzi

Reto

Descarga este DataFrame de Granada FC
Crea tus propios DataFrames, con los índices que quieras y comparte tus resultados

import pandas as pd

dict = {
'Jugador':['Luis Suárez','Jorge Molina', 'Antonio Puertas', 'Germán Sánchez', 'Luis Milla', 'Luís Manuel Arantes Maximiano'],
'Posición':['Delantero', 'Delantero', 'Centrocampista', 'Defensa', 'Centrocampista', 'Portero'],
'Número':[9, 23, 10, 6, 5, 1],
'Altura':[185.0, 187.0, 185.0, 187.0, 175.0, 190.0],
'Goles':[7, 7, 5, 2, 2, 0]
}

df_GFC=pd.DataFrame(dict)

df_GCF_players = pd.DataFrame(dict, index=df_GFC['Número'])

df_GCF_players

Jugador	Posición	Número	Altura	Goles
Número					
9	Luis Suárez	Delantero	9	185.0	7
23	Jorge Molina	Delantero	23	187.0	7
10	Antonio Puertas	Centrocampista	10	185.0	5
6	Germán Sánchez	Defensa	6	187.0	2
5	Luis Milla	Centrocampista	5	175.0	2
1	Luís Manuel Arantes Maximiano	Portero	1	190.0	0

Si quieren acceder a los valores por posición como en las listas y por los indices que definieron traten esto:

# Access values by integer location
print(psg_players.iloc[0])  # Output: Navas
dict_gnd_players = {'Jugador':['Luis Suarez','Jorge Molina', 'Antonio Puertas', 'German Sanchez', 'Luis Milla', 'Luis Manuel Arantes Maximiano'],
'Posiciónn':['Delantero', 'Delantero', 'Centrocampista', 'Defensa', 'Centrocampista', 'Portero'],  
'Altura':[185.0, 187.0, 185.0, 187.0, 175.0, 190.0],
'Goles':[7, 7, 5, 2, 2, 0]}
df_gnd_players = pd.DataFrame(dict_gnd_players, index = [9, 23, 10, 6, 5, 1])
df_gnd_players

Los filtre por la altura:

df_gnd_players[df_gnd_players["Altura"]> 185]

A seguir aprendiendo 😃

Utilizando los datos del Granada CF para crear un DataFrame:

import pandas as pd
granada_cf = {
              'Jugador':['Luis Suárez','Jorge Molina', 'Antonio Puertas', 'Germán Sánchez', 'Luis Milla', 'Luís Manuel Arantes Maximiano'],
              'Posición':['Delantero', 'Delantero', 'Centrocampista', 'Defensa', 'Centrocampista', 'Portero'],
              'Altura':[185.0, 187.0, 185.0, 187.0, 175.0, 190.0],
              'Goles':[7, 7, 5, 2, 2, 0]
              }

df_granada = pd.DataFrame(granada_cf, index=[9, 23, 10, 6, 5, 1]) #asignando los números de jugador como índices

df_granada.sort_index(ascending=True) #imprimiendo el DataFrame ordenando por el índice en forma ascendente

Mi aporte es el siguiente:

Cambiándo el indice:

dict_granada_cf = {
    'Jugador':['Luis Suarez','Jorge Molina', 'Antonio Puertas', 'German Sanchez', 'Luis Milla', 'Luis Manuel Arantes Maximiano'],
    'Posicion':['Delantero', 'Delantero', 'Centrocampista', 'Defensa', 'Centrocampista', 'Portero'],
    'Numero':[9, 23, 10, 6, 5, 1],
    'Altura':[185.0, 187.0, 185.0, 187.0, 175.0, 190.0],
    'Goles':[7, 7, 5, 2, 2, 0]
}

pd.DataFrame(dict_granada_cf)

My challenge:

Mii Aporte


import pandas as pd

jugadores=['Luis Suárez','Jorge Molina', 'Antonio Puertas', 'Germán Sánchez', 'Luis Milla', 'Luís Manuel Arantes Maximiano']
posiciones=['Delantero', 'Delantero', 'Centrocampista', 'Defensa', 'Centrocampista', 'Portero']
numeros=[9, 23, 10, 6, 5, 1]
alturas=[185.0, 187.0, 185.0, 187.0, 175.0, 190.0]
goles=[7, 7, 5, 2, 2, 0]


df_granadaFc = pd.DataFrame({
    'Jugadores':jugadores,
    'Posiciones':posiciones,
    'altura':alturas,
    'goles':goles
},index=numeros)


df_granadaFc

 

Platzi Challenge

Por el nombre “Numpy” imaginé que se trataba de una librería solo para números y utilizaremos pandas para ello. Ahora se que numpy soporta strings, ¿Porqué nunca lo vimos en las clases?

Ejericicio jugadores del Granada patrocinados por Platzi

Mi codigo para el reto del equipo Granada

import pandas as pd

list_dict = {"jugador":["Luis Suarez",'Jorge Molina', 'Antonio Puertas', 'German Sanchez', 'Luis Milla', 'Lui­s Manuel Arantes Maximiano'],
              "Posicion":['Delantero', 'Delantero', 'Centrocampista', 'Defensa', 'Centrocampista', 'Portero'],
             "Numero": [9, 23, 10, 6, 5, 1],
             "Altura": [185.0, 187.0, 185.0, 187.0, 175.0, 190.0],
             "Goles": [7, 7, 5, 2, 2, 0]
             }

df_list_dict = pd.DataFrame(list_dict)
df_list_dict
            

![](

Uso VSC para escribir los notebooks. Hice el ejemplo con la información de los recursos 😄

Por si no han instalado la librería de Pandas, solo tienen que escribir en su terminal:

pip install pandas

Messu es el mejor jugador de la historia de Argentina jaja