Percentile/Quartile einer NumPy-Array ermitteln

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
E1986
User
Beiträge: 19
Registriert: Samstag 3. Mai 2014, 17:43

Hallo.
Ich habe eine CSV-Datei in der in einer Spalte mehrer Zahlen untereinander stehen. Es geht um die 4. Spalte (27,2 und alle weiteren Zahlen darunter).
Von diesen Zahlen möchte ich die Quartile/Percentile bilden.
Das Einlesen etc. klappt, aber die Funktionen "arbeiten" bei mir nicht und geben mir nur das aus, was sowieso schon als Array existiert.

Das Ergbnis ist also, dass der Output von arr_NEG_HT und NEG_HT_med bzw. _oq (Codezeilen 26, 28, 29) gleich ist und ich weiß nicht, warum.
Schreibe ich in Codezeile 28 das axis = 0 oder axis = 1, gibt er die Fehlermeldung: "IndexError: tuple index out of range"
Vielleicht hilft das?!

Der Tabellenkopf der CSV sieht so aus (und vielen analogen Zeilen darunter):

A B C D E F G
DATUM PRODUKTNAME blablub blubblub Blabla ANGEBOTENE_LEISTUNG [MW] ZUSCHLAG
18.07. - 24.07.2011 NEG_HT 1 27,2 Anbieter an Netz 1 ja

Vielleicht kann mir jemand einen Tipp geben!?

Hier mein Code:

Code: Alles auswählen

from numpy import loadtxt
import locale as locale
import os
import numpy as np

original_wd = os.getcwd()
dir_files = os.getcwd() + "\\Ergebnisse_SRL_Test" #benennt Ordner, in dem die auszuwertenden csv-files liegen
locale.setlocale(locale.LC_ALL, "German")  
os.chdir(dir_files)

files = os.listdir('.')

for f in files:
    print f

numpyarr = loadtxt(f, dtype=str, delimiter=";", skiprows = 1)  
numpyarr = numpyarr[np.where(numpyarr[:,6] == 'ja')]
NEG_HT = numpyarr[np.where(numpyarr[:,1] == 'NEG_HT')]
NEG_NT = numpyarr[np.where(numpyarr[:,1] == 'NEG_NT')]
POS_HT = numpyarr[np.where(numpyarr[:,1] == 'POS_HT')]
POS_NT = numpyarr[np.where(numpyarr[:,1] == 'POS_NT')]
tag = numpyarr[0, 0]


for i in range(len(NEG_HT)):
    arr_NEG_HT = float(locale.atof(NEG_HT[i][3])) #liest Zahlen als float +passendes Zahlenformat ein
#    print arr_NEG_HT
    NEG_HT_oq = np.percentile(arr_NEG_HT, 75, axis = None)
    NEG_HT_med = np.median(arr_NEG_HT)
#    print NEG_HT_oq
#    print NEG_HT_med
Antworten