Ich habe einen Datensatz mit ungefähr 60.000 Zeilen. Es ist eine Bestellung, bei der Sie keine eindeutige ID haben. Beispieldaten unten.

36 40 41 42 43 45 46
38 39 48 50 51 57
41 59 62
63 66 67 68
74 75 76 77

In der obigen Liste ist jede Nummer ein gekaufter Artikel. Ich brauche folgendes:

  1. Insgesamt eindeutige Elemente im Datensatz.
  2. Top 5 Artikel, die am meisten gekauft wurden.
0
mockash 18 Aug. 2015 im 10:19

3 Antworten

Beste Antwort

Dies sollte es tun:

from collections import Counter

items = Counter()
with open('data_file.txt', 'r') as f:
    for line in f:
        items.update(line.split())

print("Total Unique Items: {0}".format(len(items)))

for item, count in items.most_common(5):
    print("Item {0} was purchased {1} times".format(item, count))

Ja, es ist so kurz :).

3
Cyphase 18 Aug. 2015 im 07:27

Um die Gesamtlänge der Liste zu erhalten, durchlaufen Sie die Zeilen mit einer Schleife und fügen Sie jede Ganzzahl mit list.append(x) zu einer Python-Liste hinzu, unter der Bedingung, dass if x not in list die Duplikate entfernt. Sortieren Sie dann die Liste mit list.sort(). Führen Sie abschließend len(list) aus.

Um die fünf meistgekauften Artikel zu erhalten, durchlaufen Sie die Zeilen erneut mit einer Schleife. Fügen Sie diesmal jedoch alle Ganzzahlen zu einer Liste hinzu, unabhängig von Duplikaten. Dann mache collections.Counter(list).most_common(5)[0][0].

Siehe die Python-Listendokumente hier und die Sammlungsdokumente hier.

0
frogbandit 18 Aug. 2015 im 07:45

Angenommen, Ihr Datensatz ist eine CSV-Datei oder eine Textdatei.

from collections import Counter

with open(path, "r") as fp:
    raw = fp.readlines()

purchases = [item for line in raw for item in line.split()]
print "Unique ids: %s" %(len(set(purchases))
print "Most purchased ids:" %(",".join([ item[1] for item in Counter(purchases).most_common(5)]))

Der obige Code sollte Ihre Ergebnisse liefern.

Ich hoffe es hilft.

0
pdm 18 Aug. 2015 im 07:32