A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Estructuras de dataframes en detalle

9/28
Recursos

Aportes 27

Preguntas 10

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Para tranformar dtype object a datetime:

pd.to_datetime(
    df_meteorites['year'],
    errors = 'coerce',
    format ='%m/%d/%Y %H:%M:%S %p'
)

Pipelines de procesamiento para variables categ贸ricas

.
Cuando se tiene variables categ贸ricas se hace un mapeo num茅rico. Para eso hay 2 m茅todos, de manera que sean f谩cilmente interpretables en modelos de machine learning:
.

  • Dummy: Es la representaci贸n m谩s compacta que se puede tener de los datos. Es mejor usarla cuando los inputs son variables linealmente independientes (no tienen un grado de correlaci贸n significativo). Es decir, las cuando se sabe que las categor铆as son independientes entre s铆.

  • One-hot: Es m谩s extenso. Permite incluir categor铆as que no estaban en el dataset inicialmente. De forma que si se filtra una categor铆a que no estaba incluida, igual se pueda representar num茅ricamente y no de error en el modelo (este modelo es m谩s cool y es el que se usa).

.

Hay errores en la notaci贸n de Pandas y los tratan como que ambos modelos son lo mismo, pero en la realidad el Dummy no se usa. A煤n as铆, en Pandas el m茅todo es .get_dummies() para realizar un procesamiento one-hot.
.

Podemos utilizar tambi茅:

df = pd.read_csv(鈥榝ilename.csv鈥, parse_dates=[鈥榝ile_date鈥橾)

Otra forma de ver las columnas de un Dataframe sin usar list, es:

df_meteorites.columns

Por si le sirve a alguien, el archivo actual descarga la columna 鈥榶ear鈥 solo con el a帽o, por lo que para cambiarla a formato Datetime, solo tienen que poner en format = 鈥%Y鈥 , de lo contrario les va da error.

pd.to_datetime(
    df_meteorites['year'],
    errors='coerce',
    format= '%Y' 

驴Qu茅 vamos a aprender en esta clase?

Aprenderemos en detalle las diferentes variables que podemos llegar a encontrar en un mismo dataframe como variables categ贸ricas, tipo tiempo, de texto, num茅ricas como float y enteras.

Nota: Recordemos que una gran ventaja de trabajar con variables categ贸ricas es que se reduce el uso de memoria ram y tambi茅n el espacio que ocupan los archivos.

Fixing a data type

.

  • object -> Python strings (or other Python objects)
  • bool -> enables logical and mathematical operations
  • int -> mathematical operations can be performed
  • float -> mathematical operations can be performed
  • category -> results in less memory usage and faster processing
  • datetime -> enables a rich set of date-based attributes and methods

.

** Avoid storing data as string (when is possible)

Cuando hago el proceso de cambio de los datos en Year a un formato datetime, me aparece NaT en los valores, pero el dtype como datetime64[ns]. Alguien sabe por qu茅 puede estar sucediendo esto?

Por otro lado, no hubiese sido m谩s sencillo hacerlo al cargar el archivo usando parse_dates? Agradezco quien pueda responderme 馃槂

Una ventaja de usar variables categ贸ricas es que normalmente se necesita menos memoria RAM y tambi茅n ocupan menos espacio los archivos.

Es muy 煤til transformar los dos valores de la categor铆a 鈥渇ell鈥 en dummies, cuando se trabaja con muchas m谩s categor铆as 3 o m谩s siempre se debe hacer eso, al menos cuando son variables de tipo nominal y se desea lanzar una regresi贸n, esto evita el problema de colinealidad perfecta, en la econometr铆a se profundiza mucho sobre este tema.

Para cambiar el tipo de dato una variable:

df_info['martricula'] = df_info['matricula'].astype(int)

Para un conjunto de variables:

df_info[['matricula', 'otro_valor_numerico']] = df_info[['matricula', 'otro_valor_numerico']].astype(int)

Hava a nice code!

Una manera que se puede hacer para no colocar el format es:

df['year'] = pd.to_datetime(df['year'], errors = 'coerce')

el lugar donde encontr茅 esto fue:

las variables dummys son muy util a la hora de hacer modelos de regresion de nuestros datos.

Una variable dummy sirve para representar la presencia o la ausencia de un valor en algo, si est谩 presente toma el valor 1 y sino est谩 presente toma el valor 0 y esto lo podemos aplicar para cada categoria

Algunas de sus ventajas son:

  • tenemos una representacion numerica del valor de nuestras categorias
  • Podemos aplicar el mismo modelo para cada categoria ya que todas siguen la misma logica

Lo podemos resumir en:
"Simplificar las categorias para analizarlas todas con la misma herramientas, es como adaptar una llave para que sea capaz de usarse en muchas tuercas que para nosotros ser铆an columnas (o categorias)"

Esto ya empieza a pacerce a una base de datos tipo SQL al tomar esos cursos antes que este siento que entiendo un mont贸n m谩s.

pd.to_datetime(df_meteorites[鈥榶ear鈥橾,
errors =鈥榗oerce鈥,
format=鈥%m/%d/%Y %H:%M:%S %p鈥)

errors Coerce: cuando detecta un valor que no corresponde a tiempo genera una variable no numerica

Esta clase me tard贸 como 2 horas, la intenci贸n es aprender y reforzar los conocimientos.

Es rico ir r谩pido, pero es mejor si disfrutamos el proceso

馃懢

Estructuras de Dataframes

  • df.nunique() muestra la cantidad de valores 煤nicos de cada columna
  • df[[鈥榗olumna1鈥,鈥榗olumna2鈥橾] = df[ [鈥榗olumna1鈥, 鈥榗olumna2鈥橾 ].astype(鈥榗ategory鈥) cambia el tipo de variable y la mantiene en el dataframe
  • df[鈥榗olumna1鈥橾.value_counts() me permite saber cu谩ntas veces aparece cada valor en esa columna
  • pd.get_dummies(df[鈥榗olumna1鈥橾) genera columnas dummies para esa columna, por ejemplo pasa de string a n煤mero
  • df[鈥榰nos鈥橾 = 1 : esto crea una nueva columna con un 1 en todos sus registros
  • df[[ 鈥榥ueva columna1鈥, 鈥榥ueva columna2鈥 ]] = pd.get_dummies(df[鈥榗olumna original鈥橾) con esto reemplazamos la columna original que ten铆a dos valores distintos generando dos nuevas variables dummies
  • df[columna de fecha] = pd.to_datetime(
    df[columna],
    errors = 鈥榗oerce鈥,
    format = '%m/%d/%Y %H:%M:%S %p鈥

    Esto genera que la columna de fecha que est谩 en string pase a formato tipo datetime
  • df.rename( columns= {鈥榗olumna original鈥:鈥榥ombre nuevo鈥檥 inplace=True) renombra una columna y gracias a inplace aplica estos cambios de manera permanente en el dataframe actual

al usar df_meteorites.convert_dtypes() este nos da unicamente cuales son las mejores opciones, pero 驴c贸mo hago para que esos data types se guarden tal cual?

Nosotros podemos asignar valores nuevos a un dataframe ya creado, con:

import pandas as pd

df = pd.DataFrame(
{
'edad':[10, 12, 11, 10],
'grado_escolar':[5, 7, 7, 6]
}, index=['Juan', 'Jose', 'alejandro', 'camilo'])

Para asignar nuevos valores, por ejemplo cambiando los valores de una persona hacia otra se hace asi:

df.loc['Juan', :] = df.loc['Jose', :]

o asi tambien

df.loc['Juan', :] = df.loc['Jose', :].values

Ok, esta clase me destroz贸

errors = 'coerce' cuando no encuentra un formato correspondiente a tiempo crea un variable no numerica

Aqui esta el resumen de los comandos que hemos visto, espero que sea de utilidad.

Un peque帽o aporte: cuando hace la transformaci贸n de las categor铆as en 0 y 1 y las agrega en diferentes columnas es debido a que cuando se realiza una regresi贸n como variables independientes no genere un problema que se llama colinealidad perfecta, es decir que una variable se relacione con si misma.

Entendido y poni茅ndolo en pr谩ctica

Variables de tiempo.

excelente