WordCount

  1. Record Reader
  2. Input Split
  3. Map
  4. Combiner
  5. Shuffle and Sort
  6. Reduce
  7. Output Format

In [1]:
import pandas as pd
import re

1. Record Reader

Descreva uma função que realize a leitura de dados "mercado_ti.txt" e "data_science.txt"


In [2]:
def recordReader(path_file):
    text = None
    try:
        text = open(path_file, encoding='utf-8').read()
        return text 
    except (TypeError, ZeroDivisionError, ValueError):
        print("Error: "+e)
        return text

In [3]:
text = recordReader("./data/mercado_ti.txt")
text2 = recordReader("./data/data_science.txt")

2. Input split

defina uma função split que recebe os dados e quebre em partes menores para usar como entrada na função mapper. Exemplo: string.split()


In [4]:
def input_split(text):
    text = re.sub(u'[^a-zA-ZáéíóúÁÉÍÓÚâêîôÂÊÎÔãõÃÕçÇ: ]', '', text)
    return pd.DataFrame(text.split(" "))

In [5]:
df_file1 = input_split(text)
df_file2 = input_split(text2)

3. Map

O usuário define uma função intermediária que recebe os dados e mapeia pares de chave e valor (definido pelo usuário)


In [6]:
def mapper(df):
    df.rename(columns={0:"key"}, inplace=True)
    df.at[:,'value'] = [1]
    return df

In [7]:
df1 = mapper(df_file1)
df2 = mapper(df_file2)

In [8]:
df1.head()


Out[8]:
key value
0 O 1
1 mercado 1
2 de 1
3 TI 1
4 no 1

In [9]:
df2.head()


Out[9]:
key value
0 Segundo 1
1 recente 1
2 projeção 1
3 do 1
4 Gartner 1

4. Combiner

Faz a combinação de "n" dataframes para obter um único dataframe que será usado na função Shufle


In [10]:
def combiner(df_list):
    return pd.concat(df_list)

In [11]:
df_combiner = combiner([df_file1, df_file2])

In [12]:
df_combiner.head()


Out[12]:
key value
0 O 1
1 mercado 1
2 de 1
3 TI 1
4 no 1

5. Shuffle

Descreva uma função Shufle para ordenar, filtrar e agrupar dados como pares de chave e valor que serão a entrada na função reducer


In [13]:
def shufle(df):
    df.sort_values(by=['key'], inplace=True)
    df = df[df.key != ""]
    return df

In [14]:
df_combiner = shufle(df_combiner)

In [15]:
df_combiner.head()


Out[15]:
key value
421 AI 1
504 Acreditávamos 1
696 Ainda 1
328 Ainda 1
383 Ainda 1

6. Reduce

Use uma função que agregue dados pelo valor (v) de acordo com a chave (k) para enviar pares de chave-valor para saída


In [16]:
def reducer(df):
    return df_combiner.groupby('key').count()

In [17]:
df_reducer = reducer(df_combiner)
df_reducer.head(10)


Out[17]:
value
key
AI 1
Acreditávamos 1
Ainda 3
Alexander 1
América 1
Analytics 3
AnalyticsO 1
Brasil 7
CAGR 1
CibernéticaEbook 1

7.Output Format

Forneça os pares de chave-valor finais ordenados por maior valor


In [18]:
df_reducer.sort_values(by=['value'], ascending=False, inplace=True)

In [20]:
df_reducer.head(20)


Out[20]:
value
key
de 82
que 29
e 23
a 22
da 19
o 18
para 14
os 12
mercado 11
é 11
não 11
um 10
como 10
no 10
mais 10
em 9
do 9
das 8
com 8
Brasil 7