No tienes acceso a esta clase

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

Adquiere por un año todos los cursos, escuelas y certificados por un precio especial.

Antes: $249

Currency
$219/año

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Comprar ahora

Termina en:

0D
6H
39M
25S

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 118

Preguntas 7

Ordenar por:

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

o inicia sesión.

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.

Mi aporte futbolero :v⚽

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

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:
.

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

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

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

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
            

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.

![](

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

dict = {'Marca':['Mazda','Chevrolet','Renault','Toyota','Suzuki'],
'Nombre':['Mazda 2','Onix','kwid','Corolla Cross','Jimmy'],
'Tipo':['Hatchback','Sedan','Mini Suv','Suv','Todo Terreno'],
'combustible':['Coriente','Extra','Extra','Extra','Corriente'],
'Precio':[75000000, 80000000, 52000000, 119000000,99000000]}
pd.DataFrame(dict, index=[4, 7, 41, 50, 89])

Marca Nombre Tipo combustible Precio
4 Mazda Mazda 2 Hatchback Coriente 75000000
7 Chevrolet Onix Sedan Extra 80000000
41 Renault kwid Mini Suv Extra 52000000
50 Toyota Corolla Cross Suv Extra 119000000
89 Suzuki Jimmy Todo Terreno Corriente 99000000

Reto:

granada_fc = {'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]}
df_granada_players = pd.DataFrame(granada_fc, index=[9, 23, 10, 6, 5, 1])
df_granada_players

print(df_granada_players.columns, df_granada_players.index)

Hoy, seis meses después de su lanzamiento, se sigue repitiendo la parte del final. La clase 10/10

Te gustaría leer el archivo en forma de diccionario?

  • Si quieres leer el archivo jugadores_granadacf-1.txt sin tener que escribir todo el diccionario (que solo es un copiar y pegar).
    podrías hacerlo de la siguiente forma:

    1. Creas una función que te lea tu archivo y lo modifique para que implemente la estructura del archivo que está aquí cargado.
    def load_dict_from_txt(f:str)->dict:
     # read file
     with open(f) as f:
     	data = f.read()
     # transformations
     data = '{'+data+'}'
    data = data.replace('\n',',').replace("'",'"').replace(',,',',')
     # reconstructing the data as a dictionary
    dict_charged = ast.literal_eval(data)
    return dict_charged
    
    1. Lo cargas a un dataframe normal.
    filename = 'jugadores_granadacf-1.txt'
    df_players = pd.DataFrame(load_dict_from_txt(filename))
    
    1. Ya tienes tu dataframe cargado 😃

Solucion a reto

Practicando por mi cuenta

import pandas as pd


A = pd.Series([2, 3, 4, 5], index=['a', 'b', 'c', 'd'])

type(A.values)
# the type is numpy.ndarray

type(A)
# the type is:
# pandas.core.series.Series

grades_dict = {'A': 1, 'B': 2, 'C': 3}
marks_dict = {'A': 32, 'B': 12, 'C': 22}

grads = pd.Series(grades_dict)
marks = pd.Series(marks_dict)

print(grads.values)
print(marks.values)

# the atribute values return the
# values keys of the dictionary

myDataFrame = pd.DataFrame({'Marks': marks, 'Grads': grads})

print(myDataFrame)
# print the table

print(myDataFrame.T)
# invert the column

myDataFrame['ScaledMarks'] = 100*(myDataFrame['Marks'] / 90)

print(myDataFrame)
# add the column ScaledMarks

DataFrame Granada CF

#Dataframe Granada FC
Granada = {'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]

}
pd.DataFrame(Granada)

Resolviendo el reto.

Reto de Data Frame

import pandas as pd
import matplotlib.pyplot as plt

granada_fc = {
  'Jugador':['Luis Suarez','Jorge Molina', 'Antonio Puertas', 'German Sanchez', 'Luis Milla', 'Luas 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],
}
## Aplicando del datFrame
data_frame = pd.DataFrame(granada_fc, index=[list(map(lambda x: x, granada_fc['Numero'] ))])

data_frame.plot(x= 'Jugador', y= 'Goles', kind='bar')
##Usando la libreia de Matplotlib para graficar los jugadores y los goles en una barra
plt.show()
data_frame

Información resumida de esta clase
#EstudiantesDePlatzi

  • Pandas maneja 2 objetos principales

  • Pandas series es muy similar a un array unidimensional de NumPy y posee muchas funcionalidades similares

  • Pandas DataFrame es muy similar a las estructuras matriciales

  • Estos DataFrame poseen índices, es decir, las columnas tienen su nombre y las filas también

  • Cuando definamos un panda series podemos nosotros asignarle el index, si no lo hacemos, panda lo hará por nosotros

  • Los DataFrame me permiten organizar la información en una matriz o tabla y poderla visualizar y manipular de mejor manera

No me pude resistir:

¡¡¡MESSIIIUUUUU!!!

Va mi aporte:

#Leer dataframe
dict = {
    '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]
}

df = pd.DataFrame(dict)

#Traer la fila del jugador con la altura maxima
df[df['Altura'] == df.Altura.max()]
#Traer la fila del jugador con la altura minima
df[df['Altura'] == df.Altura.min()]
#Traer la fila del jugador con la mayor cantidad de goles
df[df['Goles'] == df.Goles.max()]
#Traer la fila del jugador con la menor cantidad de goles
df[df['Goles'] == df.Goles.min()]

RETO:

granada = {
  '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]
}

granada_df = pd.DataFrame(granada)
granada_df

Reto de la clase

granada_fc_dict = {
‘Jugador’:[‘Luis Suárez’,‘Jorge Molina’, ‘Antonio Puertas’, ‘Germán Sánchez’, ‘Luis Milla’, ‘Lui­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]
}

index = [9, 23, 10, 6, 5, 1]

df_players_granada = pd.DataFrame(granada_fc_dict, index=index)
df_players_granada

granada_dict = {'Jugador':['Luis Suárez','Jorge Molina', 'Antonio Puertas', 'Germán Sánchez', 'Luis Milla', 'Luis 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]}

numero = [9, 23, 10, 6, 5, 1]

Granada = pd.DataFrame(granada_dict,index=numero)

Adjunto mi DataFrame con los jugadores del Granada!

Reto de DataFrame Cumplido!

Filtro por número de jugador:

Reto de los jugadores de Granada FC

.
código, 👁 ojo en el archivo faltaba colocar la coma después de cada lista

player_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]    
}
Series y DataFrames en Pandas
________________________________________
Ya entendiste los conceptos básicos de NumPy, ahora hay que entender cómo funciona la librería de Pandas, esta nos ayuda a hacer una mejor exploración y análisis de los datos.
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
________________________________________
[2]
0 s
import pandas as pd
________________________________________
[4]
psg_players = pd.Series(["ozil","cristiano","ronaldo","guarin","heto","mesi","puyol","james"],
          index=[2,5,7,9,10,11,24,9])
#definimos nuetra lista de datos y si sabemos la posiscion de cada uno de 
#ellos podemos acceder a ellos atreves del (index=)
________________________________________
[5]
1 s
psg_players
2          ozil
5     cristiano
7       ronaldo
9        guarin
10         heto
11         mesi
24        puyol
9         james
dtype: object
________________________________________
[7]
pd.Series(["ozil","cristiano","ronaldo","guarin","heto","mesi","puyol","james"],
          )
#si no sabemos las posisciones de los valores, y no ponemos el index, pandas 
#los posicionara por defecto 
________________________________________
[10]
dict = {2:"ozil",5:"cristiano",7:"ronaldo",9:"guarin",10:"heto",11:"mesi",24:"puyol",9:"james"}
pd.Series(dict)
#y si no quiero definir mis listas con pd.series, lo puedo hacer con dicionarios 
#y si le ponemos pd.serie y le agregamos el diccionerios, nos dara el mismo resultadoi
2          ozil
5     cristiano
7       ronaldo
9         james
10         heto
11         mesi
24        puyol
dtype: object
________________________________________
[13]
0 s
psg_players[0]
________________________________________
[18]
0 s
psg_players[2]
#cuando entramos donde se encuentra ubicado, nos arrojara error
# siempre debemos entra a cada posición del objecto
________________________________________
[15]
0 s
psg_players = pd.Series(["ozil","cristiano","ronaldo","guarin","heto","mesi","puyol","james"],
                        )
#sino quiero manejar un arreglo de tipo unidireccional 
________________________________________
[17]
psg_players[0:2]
#este está basado en un arreglo de NumPy
0         ozil
1    cristiano
dtype: object
________________________________________
[36]
0 s
dict = {"jugador":["ozil","cristiano","ronaldo","guarin","heto","mesi","puyol","james"],      
       "Altura":[182.0,180.0,178.0,186.0,190.0,168.0,184.0,181.0],
       "Goles":[233,345,233,145,217,276,189,367]
       }    
________________________________________
[38]
pd.DataFrame(dict,index=[2,5,7,9,10,11,24,9])
#aca como resultado me da una estructura matricial indexada por filas y columnas 
# los datafrem son la estrutura principal de pandas, que puedo acceder a multiples
#valores de diferentes formas
________________________________________
[39]
pd.DataFrame(dict)
#por defecto 
________________________________________
[40]
0 s
df_players = pd.DataFrame(dict)
________________________________________
[41]
df_players.columns
#me muestras las columnas 
#puedo acceder a la data de players por un índices de columnas 
Index(['jugador', 'Altura', 'Goles'], dtype='object')
________________________________________
[42]
df_players.index
#tambien por un índice de filas 
#lo que es muy valiosos para este mundo de los datos 
RangeIndex(start=0, stop=8, step=1)
________________________________________
[45]
0 s
df_players = pd.DataFrame(dict,index=[2,5,7,9,10,11,24,9])
#con pandas la estructura matricial tambien puedo acceder a todos los valores
#por columnas e indices, identificando los datos de uana manera unica en filas 
________________________________________
[46]
df_players.columns
#aca puedo observar los índices, pero a nivel de columnas 
Index(['jugador', 'Altura', 'Goles'], dtype='object')
________________________________________
[47]
df_players.index
#aca podemos mirar los índex a nivel de filas 
Int64Index([2, 5, 7, 9, 10, 11, 24, 9], dtype='int64')
________________________________________
el objetivo principal de pandas es hacer analítica, manipulación y procesamiento de datos
________________________________________
ahora ya sabemos crear pandas series y df que son los dos objectos principales con la que se mueve la librería de pandas

d = {
    "one": pd.Series([1.0, 2.0, 3.0], index=["a", "b", "c"]),
    "two": pd.Series([1.0, 2.0, 3.0, 4.0], index=["a", "b", "c", "d"]),
}


df = pd.DataFrame(d)
dg = pd.DataFrame(d, index=["d", "b", "a"], columns=['a', 'b', 'c', 'd'])
df.index, dg.columns

Mi pequeno aporte, realizando un dataframe de los jugadores del granada.

dict_granada = {
    'Jugador':['Luis Suarez','Jorge Molina', 'Antonio Puertas', 'German Sanchez', 'Luis Milla', 'Luas 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]}

dict_granada
pd.DataFrame(dict_granada)
granada_players = pd.DataFrame(dict_granada)
granada_players

Jugador Posicion Numero Altura Goles
0 Luis Suarez Delantero 9 185.0 7
1 Jorge Molina Delantero 23 187.0 7
2 Antonio Puertas Centrocampista 10 185.0 5
3 German Sanchez Defensa 6 187.0 2
4 Luis Milla Centrocampista 5 175.0 2
5 Luas Manuel Arantes Maximiano Portero 1 190.0 0

#Reto: Jugadores del granada
dic = {
'Jugador':['Luis Suarez','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] }

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

Solución al reto:

En mi caso en particular, decidí usar como índices los números de los jugadores, diccionario que borré de granda_fc y agregué directamente cómo index a la creación del DataFrame

Gatos del hogar

gatos = {
    'nombre':['Lila','Molly','Sombra','Luna'],
    'edad/años':[2,1,5,4],
    'raza':['angora','angora','angora','criolla'],
    'color':['negro/blanca','blanca/gris','negro','amarilla/blanca']
}

El poder transformar una serie (una lista de datos), a un DataFrame, parece algo muy básico y simple, pero es de demasiada utilidad cuando empiezas a trabajar con procesos de ETL.

Muchas veces escribo lo mismo que el profesor y me da error. Luego copio y pego y mes sale.

En este caso psg_players = pd.Series([‘Navas’,‘Mbappe’,‘Neymar’,‘Messi’], index=[1,7,10,30])

Me aparece que index no esta definido

tarea = pd.DataFrame({'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]})

tarea["Altura"] > 185

tarea1 = tarea[['Altura', 'Goles']]
tarea1
tarea1.shape