Tout le monde J'aime traiter plus de 5 Go de journaux au format .CSV, la structure interne ci-dessous.

 widget_id,device_type,timestamp
    3db953e172f313e674374e71730b0c746bea97be,desktop,2017-01-10T00:10:25.948Z
    714e7cd6ecc029152b1a9d1e8620d911870a932a,mobile,2017-01-10T01:10:50.134Z
    e83ce32fa2b74ad65091b66e2cab94b684073f8c,mobile,2017-01-10T02:10:29.137Z
    fee4ef0a02be0648d3fa829e4a0b1a1b484b49d9,mobile,2017-01-10T03:10:30.249Z
    02ccc3e5f0f53e4e2f02e08c4b8baa8d3167ae0f,mobile,2017-01-10T04:10:53.177Z
    97cc7010b2ff9a9d6eefc94856cb6394c81c4d47,desktop,2017-01-10T05:10:53.246Z
    bccb35fcb9befbc8fb99a373e8e939cd20273774,desktop,2017-01-10T06:10:31.137Z

Tout d'abord, j'aime trier les événements en fonction de l'horodatage, car tous les journaux sont sans ordre d'horodatage. Voici mon code que j'ai utilisé for item in sorted(readCSV, key=lambda asd: asd[2], reverse=False): et j'ai également besoin de calculer les événements de 24 heures par heure, j'essaie d'utiliser la structure Dict utiliser la clé pour stocker 1 à 24 heures et chaque clé (heures) mappant des valeurs pour stocker les numéros d'événements, mais ici j'ai utilisé if 'T01' in item[2]: until if 'T24' in item[2]: J'ai besoin de 24 si la déclaration, est-ce que quelqu'un a une méthode intelligente pour résoudre cela?

def csv_reader():
    with open('/Users/mac/Downloads/data.csv') as csvfile:
        readCSV = csv.reader(csvfile, delimiter=',')
        HashMap={}
        counter=0
        for item in sorted(readCSV, key=lambda asd: asd[2], reverse=False):
          if 'T01' in item[2]:
              counter = counter + 1
              HashMap['T01']=counter
        for key in HashMap.values():
            print key
0
SharpLu 15 janv. 2017 à 03:02

2 réponses

Meilleure réponse

Vous pouvez extraire la clé de votre HashMap en utilisant (en supposant que le format est toujours le même):

key = item[2][10:13]
1
snow 15 janv. 2017 à 00:08

Connaissez-vous ApacheSpark? C'est une plate-forme de traitement de Big Data que j'ai personnellement utilisée pour traiter de grandes quantités de données CSV (dans mon cas, il s'agissait de données boursières) de manière très rapide et évolutive. Il a des capacités de lecture CSV intégrées, vous n'avez donc besoin que de quelques appels de fonction et vous pouvez effectuer des opérations sur vos données. Bien documenté également.

0
Vedranh13 15 janv. 2017 à 00:11