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 鈥淧anel 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 鈥渄ict鈥 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 鈥淧anel 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 鈥淪鈥 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:
    鈥楯ugador鈥:[鈥楲uis Su谩rez鈥,鈥楯orge Molina鈥, 鈥楢ntonio Puertas鈥, 鈥楪erm谩n S谩nchez鈥, 鈥楲uis Milla鈥, 鈥楲u铆s Manuel Arantes Maximiano鈥橾
    鈥楶osici贸n鈥:[鈥楧elantero鈥, 鈥楧elantero鈥, 鈥楥entrocampista鈥, 鈥楧efensa鈥, 鈥楥entrocampista鈥, 鈥楶ortero鈥橾
    鈥楴煤mero鈥:[9, 23, 10, 6, 5, 1]
    鈥楢ltura鈥:[185.0, 187.0, 185.0, 187.0, 175.0, 190.0]
    鈥楪oles鈥:[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鈥橪uis Suarez鈥, b鈥橠elantero鈥, 185., 7),
(b鈥橨orge Molina鈥, b鈥橠elantero鈥, 187., 7),
(b鈥橝ntonio Puertas鈥, b鈥機entrocampista鈥, 185., 5),
(b鈥橤erman Sanchez鈥, b鈥橠efensa鈥, 187., 2),
(b鈥橪uis Milla鈥, b鈥機entrocampista鈥, 175., 2),
(b鈥橪uis Manuel Arantes Maximiano鈥, b鈥橮ortero鈥, 190., 0)],
dtype=[(鈥楯ugador鈥, 鈥楽30鈥), (鈥楶osicion鈥, 鈥楽15鈥), (鈥楢ltura鈥, 鈥<f4鈥), (鈥楪oles鈥, 鈥<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

[{鈥楢ltura鈥: 185,
鈥楪oles鈥: 7,
鈥楯ugador鈥: 鈥楲uis Su谩rez鈥,
鈥楶osicion鈥: 鈥楧elantero鈥檥,
{鈥楢ltura鈥: 187,
鈥楪oles鈥: 7,
鈥楯ugador鈥: 鈥楯orge Molina鈥,
鈥楶osicion鈥: 鈥楧elantero鈥檥,
{鈥楢ltura鈥: 185,
鈥楪oles鈥: 5,
鈥楯ugador鈥: 鈥楢ntonio Puertas鈥,
鈥楶osicion鈥: 鈥楥entrocampista鈥檥,
{鈥楢ltura鈥: 187,
鈥楪oles鈥: 2,
鈥楯ugador鈥: 鈥楪erm谩n S谩nchez鈥,
鈥楶osicion鈥: 鈥楧efensa鈥檥,
{鈥楢ltura鈥: 175,
鈥楪oles鈥: 2,
鈥楯ugador鈥: 鈥楲uis Milla鈥,
鈥楶osicion鈥: 鈥楥entrocampista鈥檥,
{鈥楢ltura鈥: 190,
鈥楪oles鈥: 0,
鈥楯ugador鈥: 鈥楲u铆s Manuel Arantes Maximiano鈥,
鈥楶osicion鈥: 鈥楶ortero鈥檥]

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

{鈥楢ltura鈥: 9 185
23 187
10 185
6 187
5 175
1 190
dtype: int64, 鈥楪oles鈥: 9 7
23 7
10 5
6 2
5 2
1 0
dtype: int64, 鈥楯ugador鈥: 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, 鈥楶osicion鈥: 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={鈥楯ugador鈥:[鈥楲uis Su谩rez鈥,鈥楯orge Molina鈥, 鈥楢ntonio Puertas鈥, 鈥楪erm谩n S谩nchez鈥, 鈥楲uis Milla鈥, 鈥楲ui颅s Manuel Arantes Maximiano鈥橾,
鈥楶osici贸n鈥:[鈥楧elantero鈥, 鈥楧elantero鈥, 鈥楥entrocampista鈥, 鈥楧efensa鈥, 鈥楥entrocampista鈥, 鈥楶ortero鈥橾,
鈥楴煤mero鈥:[9, 23, 10, 6, 5, 1],
鈥楢ltura鈥:[185.0, 187.0, 185.0, 187.0, 175.0, 190.0],
鈥楪oles鈥:[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[鈥楢ltura鈥橾.max()
190.0
df[鈥楪oles鈥橾.min()
0
df[鈥楪oles鈥橾.max()
7
df[鈥楢ltura鈥橾.mean()
184.83
df[鈥楢ltura鈥橾.median()
186.0
df[鈥楢ltura鈥橾.std()
5.15
df[鈥楢ltura鈥橾.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 = {
鈥榡ugador鈥:[鈥楲uis Suarez鈥,鈥楯orge Molina鈥, 鈥楢ntonio Puertas鈥, 鈥楪erman Sanchez鈥, 鈥楲uis Milla鈥, 鈥楲uis Manuel Arantes Maximiano鈥橾,
鈥榩osicion鈥: [鈥楧elantero鈥, 鈥楧elantero鈥, 鈥楥entrocampista鈥, 鈥楧efensa鈥, 鈥楥entrocampista鈥, 鈥楶ortero鈥橾,
鈥榓ltura鈥:[185.0, 187.0, 185.0, 187.0, 175.0, 190.0],
鈥榞oles鈥:[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={鈥楯ugador鈥:[鈥楲uis Su脙隆rez鈥,鈥楯orge Molina鈥, 鈥楢ntonio Puertas鈥, 鈥楪erm脙隆n S脙隆nchez鈥, 鈥楲uis Milla鈥, 鈥楲u脙颅s Manuel Arantes Maximiano鈥橾,
鈥楶osici脙鲁n鈥:[鈥楧elantero鈥, 鈥楧elantero鈥, 鈥楥entrocampista鈥, 鈥楧efensa鈥, 鈥楥entrocampista鈥, 鈥楶ortero鈥橾,
鈥楢ltura鈥:[185.0, 187.0, 185.0, 187.0, 175.0, 190.0],
鈥楪oles鈥:[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 鈥淣umpy鈥 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 = {
鈥楯ugador鈥:[鈥楲uis Su谩rez鈥,鈥楯orge Molina鈥, 鈥楢ntonio Puertas鈥, 鈥楪erm谩n S谩nchez鈥, 鈥楲uis Milla鈥, 鈥楲ui颅s Manuel Arantes Maximiano鈥橾,
鈥楶osicion鈥:[鈥楧elantero鈥, 鈥楧elantero鈥, 鈥楥entrocampista鈥, 鈥楧efensa鈥, 鈥楥entrocampista鈥, 鈥楶ortero鈥橾,
鈥楢ltura鈥:[185.0, 187.0, 185.0, 187.0, 175.0, 190.0],
鈥楪oles鈥:[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 鈥淧anel 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([鈥楴avas鈥,鈥楳bappe鈥,鈥楴eymar鈥,鈥楳essi鈥橾, 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