<jupyter_start><jupyter_text>Cambiar el formato de la fecha y convertir el tiempo de UTC a la zona horaria del centro (UTC -5) y crear columnas para mes, día y hora<jupyter_code>df["fecha"]=df["fecha"].dt.tz_localize('utc').dt.tz_convert('US/Central')
df["fecha_str"]=df["fecha"].apply(lambda x: x.strftime("%d-%m"))
df["mes"]=df["fecha"].apply(lambda x: x.month)
df["dia"]=df["fecha"].apply(lambda x: x.day)
df["hora"]=df["fecha"].apply(lambda x: x.hour)<jupyter_output><empty_output><jupyter_text>Eliminar los hashtags y crear una columna con ellos<jupyter_code>hashtags=re.compile(r"#[\w]+")
df["hashtags"]=df["tweet"].apply(lambda x: hashtags.findall(x))
df["tweet"]=df["tweet"].apply(lambda x: hashtags.sub("",x))<jupyter_output><empty_output><jupyter_text>Eliminar los user tags y crear una columna con ellos<jupyter_code>users=re.compile(r"@[\w]+")
df["users"]=df["tweet"].apply(lambda x: users.findall(x))
df["tweet"]=df["tweet"].apply(lambda x: users.sub("",x))<jupyter_output><empty_output><jupyter_text>Eliminar los links<jupyter_code>links=re.compile(r"(http|https|ftp)://[a-zA-Z0-9\./]+")
df["tweet"]=df["tweet"].apply(lambda x: links.sub("",x))<jupyter_output><empty_output><jupyter_text>Convertir el texto en minúsculas, eliminar los acentos y separadores en formato unicode<jupyter_code>df["tweet"]=df["tweet"].apply(lambda x: x.lower())
df["tweet"]=df["tweet"].apply(lambda x: x.replace("á","a"))
df["tweet"]=df["tweet"].apply(lambda x: x.replace("é","e"))
df["tweet"]=df["tweet"].apply(lambda x: x.replace("í","i"))
df["tweet"]=df["tweet"].apply(lambda x: x.replace("ó","o"))
df["tweet"]=df["tweet"].apply(lambda x: x.replace("ú","u"))
df["tweet"]=df["tweet"].apply(lambda x: x.replace(u'\xa0', u''))
df["tweet"]=df["tweet"].apply(lambda x: x.replace(u'\u200d', u''))<jupyter_output><empty_output><jupyter_text>Eliminar cualquier dígito<jupyter_code>digits=re.compile(r"\d")
df["tweet"]=df["tweet"].apply(lambda x: digits.sub("",x))<jupyter_output><empty_output><jupyter_text>Eliminar signos de puntuación<jupyter_code>signos=re.compile(r'[!‼¡ª¿→↘↪…—"“”°‘’\$%&\'()*+,\-.\/:;=#@?\[\\\]^_`{|}~]+')
df["tweet"]=df["tweet"].apply(lambda x: signos.sub(" ",x))<jupyter_output><empty_output><jupyter_text>Eliminar emojis<jupyter_code>emojis= re.compile("["
                   u"\U0001F600-\U0001F9F9"  # emoticons
                   u"\U0001F300-\U0001F5FF"  # symbols & pictographs
                   u"\U0001F680-\U0001F6FF"  # transport & map symbols
                   u"\U0001F1E0-\U0001F1FF"  # flags (iOS)
                   u"\U00002702-\U000027B0"
                   u"\U000024C2-\U0001F251"
                   u"\U000020E3-\U000029E9"
                   "]+", flags=re.UNICODE)
df["tweet"]=df["tweet"].apply(lambda x: emojis.sub(" ",x))<jupyter_output><empty_output><jupyter_text>Eliminar risas<jupyter_code>risa=re.compile(r'[jhea]{4,}')
df["tweet"]=df["tweet"].apply(lambda x: risa.sub(" ",x))<jupyter_output><empty_output><jupyter_text>Eliminar letras repetidas, permitiendo que se repita la "E" la "L"  la "R" y la "C"<jupyter_code>def rep(text):
    grp = text.group(0)
    if len(grp) > 1:
        return grp[0:1]
def cambio_letras(rep,texto):
    conver = re.sub(r"[r]{2,}", "rr", texto)
    conver = re.sub(r"[e]{2,}", "ee", conver)
    conver = re.sub(r"[l]{2,}", "ll", conver)
    conver = re.sub(r"[c]{2,}", "cc", conver)
    conver = re.sub(r'([^lerc])\1{1,}', rep, conver) 
    return conver

df["tweet"]=df["tweet"].apply(lambda x : cambio_letras(rep,x))<jupyter_output><empty_output><jupyter_text>Eliminar espacios y sustituirlos por espacios sencillos<jupyter_code>espacio=re.compile(r"[\s]+")
df["tweet"]=df["tweet"].apply(lambda x: espacio.sub(" ",x))<jupyter_output><empty_output><jupyter_text>Sustituir algunas letras por su equivalente<jupyter_code>x_re=re.compile(r"\s[x]\s")
df["tweet"]=df["tweet"].apply(lambda x: x_re.sub(" por ",x))
q_re=re.compile(r"\s[q]\s")
df["tweet"]=df["tweet"].apply(lambda x: q_re.sub(" que ",x))
d_re=re.compile(r"\s[d]\s")
df["tweet"]=df["tweet"].apply(lambda x: d_re.sub(" de ",x))
k_re=re.compile(r"\s[k]\s")
df["tweet"]=df["tweet"].apply(lambda x: k_re.sub(" que ",x))
ke_re=re.compile(r"\s[k][e]\s")
df["tweet"]=df["tweet"].apply(lambda x: ke_re.sub(" que ",x))<jupyter_output><empty_output><jupyter_text>Eliminar espacios al inicio y al final del texto<jupyter_code>df["tweet"]=df["tweet"].apply(lambda x: x.strip())<jupyter_output><empty_output><jupyter_text>Ordenar por fecha, de más antiguo a más reciente<jupyter_code>df=df.sort_values(["fecha"])<jupyter_output><empty_output><jupyter_text>Guardar una versión pickle del dataframe final<jupyter_code>df.to_pickle("final_df.pkl")<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.2229801748028139, 'fraction_numerical': 0.023235983798763588, 'mean_word_length': 6.49520766773163, 'pattern_counts': {'":': 0, '<': 61, '<?xml version=': 0, '>': 62, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '15', 'dir': 'jupyter-structured-clean-dedup', 'id': '620704', 'license': 'MIT', 'n_tokens_mistral': 2067, 'n_tokens_neox': 1983, 'n_words': 268, 'path': 'Notebooks/cleaning_tweets.ipynb', 'repo_name': 'GP-20/Twitter_sentiment_analysis', 'size': '4691'}