(Identique à précédent) Voici le fichier Excel. Il est sorti d'un certain DB, et chaque ligne contient un enregistrement et un champ contient des phrases. Chaque ligne a également un champ d'information de date. Le thème cette fois est d'extraire le mot-clé spécifié du texte de ce champ et de tracer la façon dont le nombre d'apparitions change d'un mois à l'autre. L'entrée et la sortie sont des fichiers Windows Excel, et le milieu se fait sur Mac.
La conversion de code de caractère et la conversion Excel sont les mêmes que la dernière fois, elles sont donc omises.
Laissez df lire csv par pd.read (). MeCab requis
def group_by_month(df):
e = df['comment'] #Spécifiez un champ avec du texte
e.index = pd.to_datetime(df['datetime']) #Spécifiez les informations de date dans l'index
m = MeCab.Tagger('-Ochasen') #Mettez la sortie en mode Chasen
result_df = None
for k, v in e.iteritems():
if type(v) != unicode:
continue
target_dic = { #Spécifiez le mot-clé cible
'XXX' : 0,
'YYY' : 0,
'ZZZ' : 0,
}
s8 = v.encode('utf-8')
node = m.parseToNode(s8)
while node:
word=node.feature.split(',')[0]
key = node.surface
if key in target_dic:
target_dic[key] += 1 #Augmentez le nombre si trouvé
node = node.next
if result_df is None:
result_df = pd.DataFrame(target_dic, index=[k])
else:
result_df = result_df.append(pd.DataFrame(target_dic, index=[k]))
#Regroupement mensuel
result_df['index1'] = result_df.index
result_df = result_df.groupby(pd.Grouper(key='index1', freq='M')).sum()
#Cela ne semble pas fonctionner avec l'index, alors mettez-le dans la colonne
return result_df
Chaque fois, le dictionnaire est vidé, le nombre d'occurrences est compté et il est converti en DataFrame et ajouté. Je pense que cela pourrait être simplifié, mais je ne sais pas comment faire.
À ce stade, les données suivantes sont stockées dans result_df.
XXX YYY ZZZ
index1
2014-06-30 0 1 0
2014-07-31 0 6 0
2014-08-31 3 19 6
2014-09-30 1 8 0
2014-10-31 5 29 7
2014-11-30 10 8 0
2014-12-31 10 31 8
2015-01-31 12 41 15
2015-02-28 45 82 22
2015-03-31 21 58 9
2015-04-30 23 60 19
2015-05-31 4 36 3
2015-06-30 11 40 8
2015-07-31 13 49 11
2015-08-31 8 14 2
2015-09-30 13 13 9
2015-10-31 5 31 9
2015-11-30 11 21 3
2015-12-31 12 21 3
2016-01-31 2 19 0
2016-02-29 12 15 5
2016-03-31 9 32 7
2016-04-30 2 22 4
2016-05-31 6 24 2
2016-06-30 7 21 4
2016-07-31 9 22 4
2016-08-31 5 21 1
2016-09-30 7 31 6
2016-10-31 0 12 1
'''
Préparez la zone graphique
'''
def plot_init(title):
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.set_title(title)
return fig, ax
'''
Terrain
'''
def plot_count_of_day(df):
title = 'test_data'
fig, ax = plot_init(title)
for c in df.columns:
df[c].plot(label=c, ax=ax)
ax.legend()
ax.set(xlabel='month', ylabel='count')
Comme ça.
fin.
Recommended Posts