(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