Ich habe diese ziemlich große CSV-Datei, und ich interessiere mich nur für die Zeilen, die das Wort "Slave" enthalten ... Einige Zeilen, die Slave enthalten sind nicht genau die gleichen wie andere, aber sie alle enthält das Wort "Slave".CSV-Filter für numpy
Ich möchte alle anderen Zeilen wegwerfen und dann an den Daten arbeiten, die in der anderen Spalte übrig geblieben sind.
Hier ist der Haken: Die andere Säule ist nicht sauber entweder ... Es sieht immer so, aber:
digit (text)
so zum Beispiel:
7 (medium)
12 (strong)
Ich möchte die ersten 1 oder 2 (abhängig davon, ob es 1 oder 2 Ziffern, natürlich) und dann plotten sie in einem Histogramm mit numpy und matplotlib/pyplot.
Ich habe zwei Probleme bekam:
Dieser Code:
import csv
x=csv.reader(open('sample.csv', 'rt'), delimiter=',')
x=list(x)
Ist in Ordnung, aber jetzt habe ich Dinge wie x[1][1]
Adresse ... Diese
Slave (0x00-02-5b-00-a5-a5) (#1)
aber zeigen, etwas wie x[:][1]
zeigt
['6 (medium)', 'Slave (0x00-02-5b-00-a5-a5) (#1)']
Was ich nicht erwarte ... Ich würde erwarten, dass es nur die zweite Spalte druckt.
Wie auch immer, wenn ich über das hinaus komme, wird das nächste Problem sein, dass die überlebende Spalte einige Zeichenfilter haben wird, um die Ziffern zu behalten und die Alpha-Zeichen zu entfernen. Ich habe Angst davor, genau das zu tun und in der Lage zu sein, in eine nüchterne freundliche Datenstruktur einzusteigen.
Irgendwelche Gedanken zum weiteren Vorgehen? Hier ist ein Beispiel der Daten Ich arbeite mit:
6 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
7 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
6 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
6 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
7 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
6 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
6 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
6 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
7 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
7 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
5 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
5 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
7 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
6 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
6 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
7 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
4 (weak),Slave (0x00-02-5b-00-a5-a5) (#1)
6 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
7 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
6 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
7 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
5 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
7 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
6 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
5 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
6 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
4 (weak),Slave (0x00-02-5b-00-a5-a5) (#1)
6 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
6 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
13 (strong),Master (0x00-25-52-f5-a6-f1) (#1)
7 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
10 (strong),Master (0x00-25-52-f5-a6-f1) (#1)
6 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
11 (strong),Master (0x00-25-52-f5-a6-f1) (#1)
6 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
8 (medium),Master (0x00-25-52-f5-a6-f1) (#1)
7 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
13 (strong),Master (0x00-25-52-f5-a6-f1) (#1)
12 (strong),Master (0x00-25-52-f5-a6-f1) (#1)
7 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
10 (strong),Master (0x00-25-52-f5-a6-f1) (#1)
5 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
11 (strong),Master (0x00-25-52-f5-a6-f1) (#1)
4 (weak),Slave (0x00-02-5b-00-a5-a5) (#1)
13 (strong),Master (0x00-25-52-f5-a6-f1) (#1)
5 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
11 (strong),Master (0x00-25-52-f5-a6-f1) (#1)
6 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
11 (strong),Master (0x00-25-52-f5-a6-f1) (#1)
13 (strong),Master (0x00-25-52-f5-a6-f1) (#1)
7 (medium),Slave (0x00-02-5b-00-a5-a5) (#1)
10 (strong),Master (0x00-25-52-f5-a6-f1) (#1)
Dank
Die Liste Verständnis kann wie so in eine äquivalente Schleife erweitert werden Warte, warum taub? Als csv enthält jede Zeile zwei Spalten, eine vor und nach dem Komma. 'x [1] [1]' ist die zweite Spalte aus der zweiten Liste, da Python 0-basierte Indizes verwendet. Und 'x [:] [1]' ist äquivalent zu 'x [1]', also keine Überraschung. –
so 'Slave (0x00-02-5b-00-a5-a5) (# 1)' wird was? –
Ich bin bereit, auf numpy zu verzichten ... Ich dachte, es würde sich auszahlen, wenn ich Plotten machen würde. Ich bin immer noch daran fest, wie man die Filterung der Zeichenkette 'Slave' an dieser Stelle anspricht. Können Sie näher erläutern, warum die beiden Syntaxen gleich sind und wo meine Annahmen falsch sind? – testname123