2016-10-24 1 views
-2

J'ai vu d'autres compteurs de mots python qui lisent les fichiers CSV et donnent un compte de mots pour toute la colonne. J'aimerais voir le nombre de mots par ligne, sauf que je l'aimerais au niveau «projet» et «sous-projet» (autres colonnes dans mes données). De cette façon, je pouvais voir si un sous-projet avait un nombre de mots plus élevé qu'un autre pour un mot spécifique. J'aimerais que les dernières colonnes soient: Projet, Sous-projet, Word, Nombre de mots (par sous-projet, pas total). J'apprécierais toute aide!En Python comment puis-je générer un compteur de mots de fréquence qui aggreagtes à différents niveaux?

Entrée:

Colonnes - Projet/Sous-projet/Corpus

Projet1/Sub 1/La voiture rouge est la meilleure voiture

Projet1/Sub 2/Le bleu est mieux

Export doc devrait lire:

Colonnes - projet/Sous-projet/Word/Fréquence

Projet1/Sub1/La/2

Projet1/Sub2/La/1

+2

S'il vous plaît partager le code que vous avez actuellement écrit pour résoudre ce problème, et quelles parties vous avez besoin d'aide. –

Répondre

0

Ce programme peut faire ce que vous voulez:

import csv 
from collections import Counter 

with open('in.csv') as in_file: 
    in_file = csv.DictReader(in_file) 

    with open('out.csv', 'w') as out_file: 
     out_file = csv.DictWriter(
      out_file, 
      ['Project', 'Sub-Project', 'Word', 'Frequency']) 
     out_file.writeheader() 

     for line in in_file: 
      words = Counter(map(str.lower, line['Corpus'].split())) 

      for word, freq in words.most_common(): 
       out_file.writerow({ 
        'Project': line['Project'], 
        'Sub-Project': line['Sub-project'], 
        'Word': word, 
        'Frequency': freq})