import pandas as pd, matplotlib.pyplot as plt # Extraccion de subtitulos y conteo de palabras def getData(videoID): from youtube_transcript_api import YouTubeTranscriptApi data = YouTubeTranscriptApi.get_transcript(videoID, languages=['es']) df = pd.DataFrame(data) compList = list(df['text'].str.split(" ")) flatList = [item for sublist in compList for item in sublist] wordsDF = pd.DataFrame(flatList, columns=['words']) conteo = wordsDF.words.value_counts().to_frame() return conteo # Filtro de palabras sin significado propio def filterDataEsp(df): filt = 'que de la y en el a los un es las se por lo con del nos una como al' filt += ' más esto este está al eso hay ha su les porque esta son cada sin me' filt += ' sus ser ese cómo han qué acá estas allí va ahí mi aquí o le esa para' filtList = filt.split() ret = df[~df.index.isin(filtList)] return ret # Gráfico Top N def graf(df, n=30): top = dataF.head(n) plt.style.use('dark_background') fig, ax = plt.subplots(figsize=(15,5)) ax.bar(top.index, top.words, color='tab:blue') plt.xticks(rotation=90, fontsize=18) return plt videoID = 'zXfNnB7fjVo' # 25 Abr 2020 Cadena Nac AF top = 40 # Recoleccion de datos, filtrado y grafico en pantalla data = getData(videoID) dataF = filterDataEsp(data) graf(dataF, top).show() # Ipmprimir diccionario top 200 dataDict={} for idx, row in dataF.head(200).iterrows(): dataDict[idx]=row.words print(dataDict) #Comparar Palabras f = dataF[dataF.index.isin(['yo','nosotros','ustedes'])] print(f) # Instalar el paquete YouTubeTranscriptApi: # pip install youtube_transcript_api