Platzi
Platzi

¡Invierte en ti y celebremos! Adquiere un plan Expert o Expert+ a precio especial.

Antes: $349
$259
Currency
Antes: $349
Ahorras: $90
COMIENZA AHORA
Termina en: 9D : 6H : 46M : 34S

Debes iniciar sesión

Para ver esta clase crea una cuenta sin costo o inicia sesión

De paneles de datos al DataFrame

4/29
dict_data = {
    'edad': [10,9,13,14,12,11,12],
    'cm': [115,110,130,155,125,120,125],
    'pais':['co','mx','co','mx','mx','ch','ch'],
    'genero':['M','F','F','M','M','M','F'],
    'Q1':[5,10,8,np.nan,7,8,3],
    'Q2':[7,9,9,8,8,8,9]
}

Aquí dejo el index,para que no vayan a buscarlo:

df = pd.DataFrame(dict_data, index = ['ana','benito','camilo','daniel','erika','fabian','gabriela'])

La función query es mucho mejor que los el otro tipo de filtros porque aumenta la legibilidad del código. Ejemplo:
.
df.query( 'edad >= 12 and pais == "mx" ')
y
df[(df['edad'] >= 12) & (df['pais'] == 'mx')]
.
Muestran los mismos resultados pero el primero es mucho más legible que el segundo.

algunas funciones muy útiles cuando arrancas a analizar un set de datos luego de tenerlo como un dataframe(df) son:

  • df.info() te devuelve un resumen con la estructura de las variables y el tipo de datos que contienen.
  • df.describe() te devuelve un summary() de tu set de datos. Si tienes variables numericas te devolvera: minimo. maximo, media,std,…etc de las columnas numericas.

tambien para contar cuantos valores iguales hay en una columna :

df['Edad'].value_counts()

Para saber los valores únicos en una columna :

df['Edad'].unique()

Les dejo un ejemplo de uso del .query
Esta seria la forma normal de hacer consultas

dt[(dt['edad']>=12) & (dt['pais']=='mx')]

Con .query la lectura y escritura es mas simple

df.query('edad>12 & pais=="mx" ')

df.loc Para ubicar por el nombre de las columnas e indices

df.iloc Para ubicar por número de columna y fila

Cuando filtramos en pandas, las condiciones no son como en python que usamos:

  • and
  • or

En pandas son reemplazados por & y por |, de esta manera:

  • and = &
  • or = |

Asi las usamos:

df[(df['edad'] >= 12) & (df['pais'] == 'mx')] 

y para filtrar con “or”

df[(df['pais'] == 'co') | (df['pais'] == 'mx')]

Cada condicion por separado debe ir encerrada en parentesis

pd.version
!pip install --upgrade pandas
pd.Series(<dictionary>)
pd.DataFrame(<dictionary>)
pd.DataFrame(<dictionary>, index=<list_indexes>)
df.describe()
df.columns
df.index
df.values
df[<column>]
df[<list_columns>]
Con loc obtenemos un subconjunto de datos por índices y columnas, con iloc es por posición. : indica que se requiere la información completa.
df.loc[<list_indexes>,<list_columns>]
df.iloc[<list_index_positions>,<list_column_positions>]

Ejemplos de filtrar un DataFrame.
df[(df[‘edad’] >= 12) & (df[‘pais’] == ‘mx’)]
df.query(‘edad >= 12 and pais == “mx”’)

La lista de nombres,

df = pd.DataFrame(dict_data, index = ['ana','benito','camilo','daniel','erika','fabian','gabriela'])
df```

No me queda muy claro…
¿Cuál es la diferencia entre Numpy y Pandas?

hace que se parezca mucho a matlab

Les comparto los apuntes que hice de esta clase en Github y un notebook que hice explicando paso a paso todo lo visto en clase. Espero que les sea de utilidad:

https://github.com/bl00p1ng/Curso-analisis-de-datos-con-Pandas-y-Python#clase-4-de-paneles-de-datos-al-dataframe

Nota: El enlace al Notebook esta en los apuntes en Github

dict_data = {'CH':[100,800,200], 'CO':[100,200,300], 'MX':[300,500,400]}```

Uffff, de verdad que está muy potente este curso.
Ya tengo ganas de iniciar un proyecto 😄

Si se desea convertir los indices, en una columna, se debe hacer con: df.reset_index(), el nombre de la columna aparecerá como: ‘Index’

Por qué se tiene que usar el operador & y no se puede el AND ?

😍

Para cambiar el tipo de dato de las columnas ‘Q1’ y ‘Q2’:

df = df.astype({"Q1": float, "Q2": float})

también se pueden usar como operadores lógicos: ‘and’,‘or’,'not
también;
& and, | or, ^ xor, ~ not, << Desp izquierda, >> Desp derecha

Que buen curso

command “install–upgrade” - maybe you meant “install”

alguien sabe por que sale eso?

excelente

loc me permite seleccionar datos a traves de sus indices y columnas y iloc me lo permite a traves de su posicion dentro del dataframe.

😌 Me quedo con el .query 😅. El otro método de df[] lo vi enredado.

Buen curso

Que buen curso

antes en internet trate de entender que son loc y iloc y no fue hasta esta clase que entendi , platzi me encanta cuando explica las cosas tan bien

Que buen profe

muy practico

Como recomendación. Para el caso de saber el contenido de una columna, con el ejemplo que dice el profesor df['edad'] es mejor usar el dot notation que es lo mismo pero en vez de corchetes se usa df.edad el resultado es más limpio.

Información sacada de la documentación oficial de pandas

para traer rangos:

df.iloc[2:4, [1,3]]

o

df.loc['benito':'daniel', ['edad', 'cm', 'Q1']]

interesante

dict_data = {
    'edad': [10,9,13,14,12,11,12],
    'cm': [115,110,130,155,125,120,125],
    'pais':['co','mx','co','mx','mx','ch','ch'],
    'genero':['M','F','F','M','M','M','F'],
    'Q1':[5,10,8,np.nan,7,8,3],
    'Q2':[7,9,9,8,8,8,9]
}

Aquí dejo el index,para que no vayan a buscarlo:

df = pd.DataFrame(dict_data, index = ['ana','benito','camilo','daniel','erika','fabian','gabriela'])

La función query es mucho mejor que los el otro tipo de filtros porque aumenta la legibilidad del código. Ejemplo:
.
df.query( 'edad >= 12 and pais == "mx" ')
y
df[(df['edad'] >= 12) & (df['pais'] == 'mx')]
.
Muestran los mismos resultados pero el primero es mucho más legible que el segundo.

algunas funciones muy útiles cuando arrancas a analizar un set de datos luego de tenerlo como un dataframe(df) son:

  • df.info() te devuelve un resumen con la estructura de las variables y el tipo de datos que contienen.
  • df.describe() te devuelve un summary() de tu set de datos. Si tienes variables numericas te devolvera: minimo. maximo, media,std,…etc de las columnas numericas.

tambien para contar cuantos valores iguales hay en una columna :

df['Edad'].value_counts()

Para saber los valores únicos en una columna :

df['Edad'].unique()

Les dejo un ejemplo de uso del .query
Esta seria la forma normal de hacer consultas

dt[(dt['edad']>=12) & (dt['pais']=='mx')]

Con .query la lectura y escritura es mas simple

df.query('edad>12 & pais=="mx" ')

df.loc Para ubicar por el nombre de las columnas e indices

df.iloc Para ubicar por número de columna y fila

Cuando filtramos en pandas, las condiciones no son como en python que usamos:

  • and
  • or

En pandas son reemplazados por & y por |, de esta manera:

  • and = &
  • or = |

Asi las usamos:

df[(df['edad'] >= 12) & (df['pais'] == 'mx')] 

y para filtrar con “or”

df[(df['pais'] == 'co') | (df['pais'] == 'mx')]

Cada condicion por separado debe ir encerrada en parentesis

pd.version
!pip install --upgrade pandas
pd.Series(<dictionary>)
pd.DataFrame(<dictionary>)
pd.DataFrame(<dictionary>, index=<list_indexes>)
df.describe()
df.columns
df.index
df.values
df[<column>]
df[<list_columns>]
Con loc obtenemos un subconjunto de datos por índices y columnas, con iloc es por posición. : indica que se requiere la información completa.
df.loc[<list_indexes>,<list_columns>]
df.iloc[<list_index_positions>,<list_column_positions>]

Ejemplos de filtrar un DataFrame.
df[(df[‘edad’] >= 12) & (df[‘pais’] == ‘mx’)]
df.query(‘edad >= 12 and pais == “mx”’)

La lista de nombres,

df = pd.DataFrame(dict_data, index = ['ana','benito','camilo','daniel','erika','fabian','gabriela'])
df```

No me queda muy claro…
¿Cuál es la diferencia entre Numpy y Pandas?

hace que se parezca mucho a matlab

Les comparto los apuntes que hice de esta clase en Github y un notebook que hice explicando paso a paso todo lo visto en clase. Espero que les sea de utilidad:

https://github.com/bl00p1ng/Curso-analisis-de-datos-con-Pandas-y-Python#clase-4-de-paneles-de-datos-al-dataframe

Nota: El enlace al Notebook esta en los apuntes en Github

dict_data = {'CH':[100,800,200], 'CO':[100,200,300], 'MX':[300,500,400]}```

Uffff, de verdad que está muy potente este curso.
Ya tengo ganas de iniciar un proyecto 😄

Si se desea convertir los indices, en una columna, se debe hacer con: df.reset_index(), el nombre de la columna aparecerá como: ‘Index’

Por qué se tiene que usar el operador & y no se puede el AND ?

😍

Para cambiar el tipo de dato de las columnas ‘Q1’ y ‘Q2’:

df = df.astype({"Q1": float, "Q2": float})

también se pueden usar como operadores lógicos: ‘and’,‘or’,'not
también;
& and, | or, ^ xor, ~ not, << Desp izquierda, >> Desp derecha

Que buen curso

command “install–upgrade” - maybe you meant “install”

alguien sabe por que sale eso?

excelente

loc me permite seleccionar datos a traves de sus indices y columnas y iloc me lo permite a traves de su posicion dentro del dataframe.

😌 Me quedo con el .query 😅. El otro método de df[] lo vi enredado.

Buen curso

Que buen curso

antes en internet trate de entender que son loc y iloc y no fue hasta esta clase que entendi , platzi me encanta cuando explica las cosas tan bien

Que buen profe

muy practico

Como recomendación. Para el caso de saber el contenido de una columna, con el ejemplo que dice el profesor df['edad'] es mejor usar el dot notation que es lo mismo pero en vez de corchetes se usa df.edad el resultado es más limpio.

Información sacada de la documentación oficial de pandas

para traer rangos:

df.iloc[2:4, [1,3]]

o

df.loc['benito':'daniel', ['edad', 'cm', 'Q1']]

interesante