Witam, chciałem napisać sobie skrypt do wczytywania danych z pliku .txt i na ich podstawie tworzyć wykres.
W plikach dane są rodzieszlone " ; ". Poszczególne kolumny mają inne dane(float) i każdą tablicę chcę wypełnić właśnie tymi danymi.
Napisałem taką funkcję, tylko jest ona mało wydajna, domyślam się że to przez konwersję na float, ale bez tego wyskakuje mi błąd że na stringu nie można wykonywać operacji.
Dopiero zaczynam zabawę z pythonem.
Oto co napisałem:
from matplotlib.pyplot import figure
import matplotlib.pyplot as plt
import numpy as np
import math
nazwapliku = "wyniki.txt"
with open( nazwapliku, "r" ) as f:
lista_linii = [ line.rstrip( "\n" ) for line in f ]
skala = 0.85
x1=[]
x2=[]
xw=[]
y=[]
it = 0 #iterator liczący, która jest linijka w pliku txt, pomijam pierwsze 3 linijki
#wczytywanie z pliku
for linia in lista_linii:
if it > 3:
#print(linia)
itCzesc = 0 #odliczanie, która dana jest czytana
for pole in linia.split( " ; " ):
if itCzesc == 0:
yw = (float(pole) - skala)/0.5*100
xw.append(yw)
itCzesc = itCzesc+1
elif itCzesc == 1:
x1.append(pole)
itCzesc = itCzesc+1
elif itCzesc == 2:
x2.append(pole)
itCzesc = itCzesc+1
elif itCzesc == 3:
y.append(pole)
itCzesc = itCzesc+1
if it <= 4:
it = it+1
xw = np.array(xw)
y = np.array(y)
plt.xlabel("Czas [ms]")
plt.ylabel("Wynik")
plt.grid(True)
plt.plot(y, xw)
plt.show()
Przy pliku txt z około 6000 linijek danych wczytywało mi się to ok 53 minuty, a zdarza mi się że tych danych mam znacznie więcej(czasami nawet 300tys linijek). Jak mogę usprawnić swój kod?