(Wie vorher) Hier ist die Excel-Datei. Es wird von einer bestimmten Datenbank ausgegeben, und jede Zeile enthält einen Datensatz und ein Feld enthält Sätze. Jede Zeile hat auch ein Datumsinformationsfeld. Dieses Mal geht es darum, das angegebene Schlüsselwort aus dem Text in diesem Feld zu extrahieren und darzustellen, wie sich die Anzahl der Auftritte von Monat zu Monat ändert. Der Ein- und Ausgang sind Windows Excel-Dateien, und die Mitte erfolgt auf dem Mac.
Die Zeichencodekonvertierung und die Excel-Konvertierung sind dieselben wie beim letzten Mal, daher werden sie weggelassen.
Lassen Sie df csv von pd.read () lesen. MeCab erforderlich
def group_by_month(df):
e = df['comment'] #Geben Sie ein Feld mit Text an
e.index = pd.to_datetime(df['datetime']) #Geben Sie Datumsinformationen im Index an
m = MeCab.Tagger('-Ochasen') #Versetzen Sie den Ausgang in den Chasen-Modus
result_df = None
for k, v in e.iteritems():
if type(v) != unicode:
continue
target_dic = { #Geben Sie das Zielschlüsselwort an
'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 #Erhöhen Sie die Anzahl, wenn gefunden
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]))
#Monatliche Gruppierung
result_df['index1'] = result_df.index
result_df = result_df.groupby(pd.Grouper(key='index1', freq='M')).sum()
#Es scheint nicht mit Index zu funktionieren, also setzen Sie es in eine Spalte
return result_df
Jedes Mal, wenn das Wörterbuch geleert wird, wird die Anzahl der Vorkommen gezählt und in einen DataFrame konvertiert und hinzugefügt. Ich denke, es könnte einfacher gemacht werden, aber ich weiß nicht, wie ich es machen soll.
Zu diesem Zeitpunkt werden die folgenden Daten in result_df gespeichert.
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
'''
Bereiten Sie den Diagrammbereich vor
'''
def plot_init(title):
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.set_title(title)
return fig, ax
'''
Handlung
'''
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')
So was.
Ende.