Cómo calcular la frecuencia de palabras por fecha en el marco de datos
Así que tengo un Dataframe de miles de tweets que pude limpiar y tokenizar. - Cada fila es un individuo Tweet -Column 1 es el día en que fueron tuiteados (ejemplo: 7_23_2020) -Column 2 es la bolsa individual tokenizada de palabras de cada Tweet
Objetivo: ¿Cómo puedo tabular las frecuencias de la palabra para cada día y luego graficarlas? Por ejemplo: ¿Cuáles son las frecuencias de las 10 palabras principales de (7_23_2020 - 7_30_2020)? ¿Mostrar con qué frecuencia se usó la palabra cada día?
Originalmente necesitaba calcular el PMI (Pointwise Mutual Information) entre las fechas y las palabras más comunes pero creo que me estoy acomodando para frecuencias de palabras a través del tiempo.
Pregunta hecha hace 3 años, 5 meses, 0 días - Por techwizkid
2 Respuestas:
-
Para calcular la frecuencia de palabras por fecha en tu marco de datos de tweets, puedes seguir estos pasos en Python utilizando pandas y matplotlib:
- Primero, asegúrate de tener importadas las bibliotecas necesarias:
python import pandas as pd import matplotlib.pyplot as plt from collections import Counter
- Carga tus datos en un DataFrame de pandas, supongamos que tus columnas están llamadas 'fecha' y 'palabras':
python
Suponiendo que 'tweets_df' es tu DataFrame
tweets_df = pd.read_csv('tweets.csv')- Luego, agrupa tus datos por fecha y calcula las frecuencias de palabras para cada día:
python
Separar las palabras por fecha
words_by_date = tweets_df.groupby('fecha')['palabras'].sum()Calcular la frecuencia de palabras para cada fecha
word_freq_by_date = words_by_date.apply(lambda x: dict(Counter(x.split())))- Ahora puedes seleccionar las fechas de interés y las palabras más comunes para esas fechas:
python
Selecciona las fechas de interés
start_date = '7_23_2020' end_date = '7_30_2020' selected_dates = word_freq_by_date.loc[start_date:end_date]Obtener las 10 palabras más comunes para las fechas seleccionadas
top_words = selected_dates.apply(lambda x: dict(sorted(x.items(), key=lambda item: item[1], reverse=True)[:10]))- Finalmente, puedes graficar las frecuencias de las palabras seleccionadas a lo largo del tiempo:
python
Gráfico de barras para las frecuencias de las palabras seleccionadas
for word in top_words.iloc[0].keys(): plt.figure(figsize=(10, 6)) for date in selected_dates.index: plt.bar(date, selected_dates[date].get(word, 0)) plt.xlabel('Fecha') plt.ylabel('Frecuencia de la palabra "{}"'.format(word)) plt.title('Frecuencia de la palabra "{}" entre {} y {}'.format(word, start_date, end_date)) plt.xticks(rotation=45) plt.show()Con estos pasos, deberías poder calcular y visualizar las frecuencias de las 10 palabras principales a lo largo de las fechas seleccionadas en tus tweets. ¡Espero que esta información te sea útil! Si tienes más preguntas o necesitas más ayuda, ¡no dudes en decírmelo!
Respondida el Dec 18, 2020 a las 08:40 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Pasos para calcular la frecuencia de palabras por fecha en un marco de datos:
1. Agrupar el marco de datos por fecha:
python df_agrupado = df.groupby('fecha')
2. Crear una función para contar frecuencias de palabras:
python def contar_frecuencias(bolsa_de_palabras): frecuencias = {} for palabra in bolsa_de_palabras.split(): if palabra not in frecuencias: frecuencias[palabra] = 0 frecuencias[palabra] += 1 return frecuencias
3. Aplicar la función de conteo a cada grupo de fecha:
python df_frecuencias = df_agrupado['bolsa_de_palabras'].apply(contar_frecuencias)
4. Convertir el resultado a un marco de datos:
python df_frecuencias = pd.DataFrame(df_frecuencias.tolist(), index=df_agrupado.index)
5. Graficar las frecuencias de palabras:
Para cada día, puedes crear un gráfico de barras que muestre las frecuencias de las 10 palabras principales:
python import matplotlib.pyplot as plt
Iterar sobre las fechas
for fecha in df_frecuencias.index:Obtener las 10 palabras principales para esa fecha
top10_palabras = df_frecuencias.loc[fecha].nlargest(10, 'frecuencia').index.tolist()Crear un gráfico de barras
plt.figure(figsize=(12, 6)) plt.bar(top10_palabras, df_frecuencias.loc[fecha]['frecuencia'].loc[top10_palabras]) plt.xlabel('Palabra') plt.ylabel('Frecuencia') plt.title(f'Frecuencias de palabras para {fecha}') plt.show()Nota: Este código utiliza la biblioteca
pandas
para el manejo de datos ymatplotlib
para la visualización.Respondida el Dec 18, 2020 a las 08:47 - por Gemini
Votos positivos: 0 | Votos negativos: 0