NLTK FreqDist到使用大熊猫的桌子上

问题描述 投票:0回答:2

我具有使用NLTK获得的频率分布:

[(('ingeniería', 'informática'), 30), (('tecnologías', 'información'), 26), (('sistemas', 'información'), 19), (('big', 'data'), 16), (('ingeniería', 'software'), 14), (('ingeniero', 'técnico'), 11), (('bases', 'datos'), 10), (('información', 'comunicación'), 10), (('tecnologías', 'información', 'comunicación'), 10), (('sistemas', 'operativos'), 9)]

我想将其转换为表格/数据框,最好使用熊猫。

python pandas nltk
2个回答
2
投票
fdist = nltk.FreqDist( ... )    
df_fdist = pd.DataFrame.from_dict(fdist, orient='index')
df_fdist.columns = ['Frequency']
df_fdist.index.name = 'Term'
print(df_fdist)
df_fdist.to_csv(...)

或:

def cond_freq_dist(data):
    """ Takes a list of tuples and returns a conditional frequency distribution as a pandas dataframe. """

    cfd = {}
    for cond, freq in data:
        try:
            cfd[cond][freq] += 1
        except KeyError:
            try:
                cfd[cond][freq] = 1
            except KeyError:
                cfd[cond] = {freq: 1}

    return pd.DataFrame(cfd).fillna(0)

0
投票

最好传递给dict然后创建series,并且还清您的计数,因为同一个元组在list中多次出现。

s=pd.Series(dict(l)).groupby(level=[0,1]).sum()
bases        datos           10
big          data            16
información  comunicación    10
ingeniero    técnico         11
ingeniería   informática     30
             software        14
sistemas     información     19
             operativos       9
tecnologías  información     36
© www.soinside.com 2019 - 2024. All rights reserved.