Tengo un pequeño problema con mi programa.

Tengo una trama de datos que se ve así:


Person     FavMovie
1          Ma Se Fr
2          Ma
3          Se Ma
4          Fr Ma
5          Se

Quiero calcular la frecuencia total para Ma, Se y Fr y graficar un diagrama de barras. Sin embargo, no estoy seguro de cómo hacerlo. Pensé en crear una lista y luego contar en un bucle la cantidad de veces que encuentro una película específica; Comencé a escribir el código de esta manera:

favmovies_list = dataset['FavMovies'].tolist()
for element in favmovies_list:
        singlemovie = element.strip()
        print(singlemovie)

Pero claramente no funciona, ya que solo estoy separando las filas y no las películas individuales. Tal vez haya otra forma más sencilla, pero soy un verdadero principiante y no estoy seguro. Muchas gracias por adelantado.

0
physics_now 22 ene. 2021 a las 01:37

1 respuesta

La mejor respuesta
d = pd.DataFrame({'Person':[1,2,3,4,5], 'FavMovie': ['Ma Se Fr', 'Ma', 'Se Ma', 'Fr Ma', 'Se']})

lst = d.FavMovie.tolist()

lst = [elem.strip().split() for elem in lst]
lst = [elem for sub_lst in lst for elem in sub_lst]

fig, ax = plt.subplots(1,1)
pd.DataFrame({'freq' : lst}).groupby('freq', as_index=True).size().plot(kind = 'bar', ax=ax)

fig # plot saved in fig
0
nithish08 21 ene. 2021 a las 22:42