No tienes acceso a esta clase

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

Valores duplicados en Jupyter

32/38
Recursos

Estos valores duplicados es importantes identificarlos y removerlos de nuestro datasets para que esos valores no generen un peso no justificado dentro del análisis a realizar dentro de nuestro Pipelines.

Pandas nos otorga la función drop_duplicates para eliminar estos valores duplicados.

Aportes 21

Preguntas 2

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

para que en Jupyter la tabla les salga limpia en el body, no olviden en la seccion de # Additional Cleanup, en stripped_body, añadir la siguiente linea al final:

el_tiempo['body']=stripped_body

Like si también te preguntas cual es el paso número 7 xD

para los que no han entendido muy bien esta anidación de applys y de funciones lambda, aqui encontré un articulo sencillo y explicativo de esa anidación de funciones lambda.

https://www.programiz.com/python-programming/anonymous-function#:~:text=We use lambda functions when,filter() %2C map() etc.

Dado el estado actual en Pandas, esta clase deberia estar antes que la anterior, ya que no pude usar la funcion tokenize_column por un error

ValueError: cannot reindex from a duplicate axis

que resolvi precisamente borrando duplicados

Sin duplciados en mi dataset

Realmente ame los stop_words, como un diccionario de palabras que tienen relevancia

 if inplace is False
      Assign to a new variable;
 else
      No need to assign

Buen día, del siguiente código

<# 3. FILL OUT MISSING DATA 

missing_title_mask =  el_universal['title'].isna()
missing_title = (el_universal[missing_title_mask]['url']
.str.extract(r'(?P<missing_tittle>[^/]+)$')
.applymap(lambda title: title.split('-'))
.applymap(lambda title_world_list: ' '.join(title_world_list))
)

missing_title

el_univeresal.loc[missing_title_mask, 'title'] = missing_title.loc[:,'missing_title']>

me genera el siguiente error en jupyter notes

<KeyError                                  Traceback (most recent call last)
~/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   2656             try:
-> 2657                 return self._engine.get_loc(key)
   2658             except KeyError:

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'missing_title'

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
<ipython-input-39-97542720367d> in <module>
     10 missing_title
     11 
---> 12 el_univeresal.loc[missing_title_mask, 'title'] = missing_title.loc[:,'missing_title']

~/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py in __getitem__(self, key)
   1492             except (KeyError, IndexError, AttributeError):
   1493                 pass
-> 1494             return self._getitem_tuple(key)
   1495         else:
   1496             # we by definition only have the 0th axis

~/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py in _getitem_tuple(self, tup)
    866     def _getitem_tuple(self, tup):
    867         try:
--> 868             return self._getitem_lowerdim(tup)
    869         except IndexingError:
    870             pass

~/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py in _getitem_lowerdim(self, tup)
    986         for i, key in enumerate(tup):
    987             if is_label_like(key) or isinstance(key, tuple):
--> 988                 section = self._getitem_axis(key, axis=i)
    989 
    990                 # we have yielded a scalar ?

~/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py in _getitem_axis(self, key, axis)
   1911         # fall thru to straight lookup
   1912         self._validate_key(key, axis)
-> 1913         return self._get_label(key, axis=axis)
   1914 
   1915 

~/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py in _get_label(self, label, axis)
    139             raise IndexingError('no slices here, handle elsewhere')
    140 
--> 141         return self.obj._xs(label, axis=axis)
    142 
    143     def _get_loc(self, key, axis=None):

~/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py in xs(self, key, axis, level, drop_level)
   3574 
   3575         if axis == 1:
-> 3576             return self[key]
   3577 
   3578         self._consolidate_inplace()

~/anaconda3/lib/python3.7/site-packages/pandas/core/frame.py in __getitem__(self, key)
   2925             if self.columns.nlevels > 1:
   2926                 return self._getitem_multilevel(key)
-> 2927             indexer = self.columns.get_loc(key)
   2928             if is_integer(indexer):
   2929                 indexer = [indexer]

~/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   2657                 return self._engine.get_loc(key)
   2658             except KeyError:
-> 2659                 return self._engine.get_loc(self._maybe_cast_indexer(key))
   2660         indexer = self.get_indexer([key], method=method, tolerance=tolerance)
   2661         if indexer.ndim > 1 or indexer.size > 1:

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'missing_title'>

No se si se deba a la versión de pandas, agradecería una ayuda.

buena explicacion

interesante!

Excelente clase, el proceso de tratamiento de datos a nivel pro

el_universal.drop_duplicates(subset=['title'], keep='first', inplace=True```

La previsualización que permite jupyter es genial.

The drop_duplicates function allows you to remove duplicate values. Some parameters are:
- subset: Set where duplicate values will be searched
- keep: Indicates what value should be kept (first-last)

Increíble todo el seguimiento que permite Jupiter. Terminemos el ejercicio en Python…

Creo que es mejor solo borrar los duplicados de cuerpos porque de títulos en verdad he visto en el Universal títulos iguales y cuerpos distinitos ya que aunque el nombre de la noticia es el mismo, a veces es otro periódico que da la noticia, o el uno apunta al universal y el otro al universalvideo.

Es más, esto de eliminar duplicados debería ser lo primero, en el scraping de noticias incluso antes de parsear y guardar todo en un dataFrame. Por que, ¿Para qué hacer tokenización, llaves encriptadas de registros, parsing, etc, para luego tener que borrar todo ese computo?

¿En caso de que la serie referencie a un objecto, habría que sobreescribir las funciones __eq__ y __ne__ para que a la hora de que Pandas elija cuales son iguales aseguremos que sea (por ejemplo) con el id de un objeto?

me encanta jupyter…

Genial… aunque en mi tabla no genera dobles… pero anotamos el script… Gracias

En mi caso los duplicados los tuve que encontrar con el comando:

el_universal[el_universal.index.duplicated()]

Y luego los eliminé con el siguiente comando:

el_universal = el_universal[~el_universal.index.duplicated()]

Los cuales fueron compartidos en la clase anterior por varios compañeros.

una buena práctica cuando se hacen dropduplicates, es hacer un print statement antes y despues del drop para poder entender cuántos registros se van perdiendo en el camino.

Excelente ejercicio, muy completo, todo el ETL