Me parece que no habría que usar “dict” como nombre de variable ya que es una palabra reservada del lenguaje.
Librerías de manipulación de datos con Python
¿Por qué NumPy y Pandas?
NumPy
NumPy Array
Tipos de datos
Dimensiones
Creando arrays
Shape y Reshape
Funciones principales de NumPy
Copy
Condiciones
Operaciones
Quiz: NumPy
Pandas
Series y DataFrames en Pandas
Leer archivos CSV y JSON con Pandas
Filtrado con loc y iloc
Agregar o eliminar datos con Pandas
Manejo de datos nulos
Filtrado por condiciones
Funciones principales de Pandas
groupby
Combinando DataFrames
Merge y Concat
Join
Pivot y Melt
Apply
Quiz: Pandas
Cierre
Posibilidades con Pandas y NumPy
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
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 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
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
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
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
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)
Descarga este DataFrame de Granada FC
Contribución creada por: Edward Giraldo.
Aportes 36
Preguntas 3
Me parece que no habría que usar “dict” como nombre de variable ya que es una palabra reservada del lenguaje.
La clase estuve muy bien. Solo tengo un comentario. Al minuto 11:25 se vuelve a repetir una parte del vídeo.
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
También se pueden construir DataFrames con listas que contengan diccionarios:
Messu=Messi + Siiuuuuuuuu
(enlace del notion donde recopilo aportes de la clase)
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
psdg_players = pd.Series(
['Navas','Mbappe','Neymar','Messi'],
index=[1,7,10,30]
)
psdg_players
psdg_players = pd.Series(['Navas','Mbappe','Neymar','Messi'])
psdg_players
dictionary = {1: 'Navas', 7:'Mbappe', 10:'Neymar', 30:'Messi'}
pd.Series(dictionary)
# Funciona igual que Numpy
psdg_players[0:3]
dictionary = {'jugador':['Navas','Mbappe','Neymar','Messi'],
'altura':[183.0, 170.0, 170.0, 165.0],
'goles':[2, 200, 200, 200]
}
pd.DataFrame(dictionary, index=[1,7,10,30])
pd.DataFrame(dictionary)
df_Players = pd.DataFrame(dictionary)
df_Players
df_Players.columns
Indice default
df_Players.index
Indice Personalizado
df_Players = pd.DataFrame(dictionary, index=[1,7,10,30])
df_Players.index
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
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
–
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
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.
.
É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.
.
.
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.
.
.
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.
.
Algunas de las características de Pandas DataFrame son:
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.
Series
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
psg_players[2]
-----> 'Neymar'
psg_players[0:3]
-----> 0 Navas
1 Mbappe
2 Neymar
dtype: object
Pandas
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
df_players.columns
------> Index(['Jugador', 'Altura', 'Goles'], dtype='object')
df_players.index
------> RangeIndex(start=0, stop=4, step=1)
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
dataFrame_granada = pd.DataFrame({'Jugador':['Luis Suarez','Jorge Molina', 'Antonio Puertas', 'German Sanchez', 'Luis Milla', 'Luis Arantes '],
'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]
})
dataFrame_granada
# muestra a los jugadores que tienen 5 o mas goles
goleador = dataFrame_granada.where(dataFrame_granada.Goles>=5)
goleador
Primero estrcuturamos en un diccionario los datos de los jugadores - granadas.
Luego procederemos a crear el dataframe.
Reto
Aquí el DataFrame del Granada FC
Llevarlo a la estructura DataFrame de Pandas
DataFrame
Acceder a los datos por medio del index
Series por medio de diccionario
Series
Práctica en colab
Algunas de las características de Pandas series son:
Pandas DataFrame
Pandas series
Yo me puse a ordenarlo por el número de la camiseta:
dict = {
'Numero': [9, 23, 10, 6, 5, 1],
'Jugador':['Luís Suarez','Jorge Molina', 'Antonio Puertas', 'German Sanchez', 'Luís 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_GranadaTeam = pd.DataFrame(dict)
df_GranadaTeam.sort_values('Numero')
Hay distintas formas de crear un data frame, alguno de ellos.
Desde un diccionario de listas (metodo visto en clase).
Desde una matriz estructurada o de registros.
Desde una lista de diccionarios.
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]
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
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
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
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
Excelente clase
My challenge:
Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.