Reputation: 107
I have this frequency distribution that i got using 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)]
I would like to convert it into a table/dataframe, preferably using pandas.
Upvotes: 3
Views: 1066
Reputation: 2139
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(...)
Or:
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)
Upvotes: 1