In [ ]:
%matplotlib inline
import matplotlib.pyplot as plt
import pandas as pd
import re
filename = '221_133_245_231_CU'
file = 'data/' + filename + '.log'
timestamp = []
download = []
upload = []
state = [0, 1, 2]
pattern_t = re.compile(r'(\d+-\d+-\d+ \d+:\d+:\d+)')
pattern_d = re.compile(r'Download: (.*) Mbit/s')
pattern_u = re.compile(r'Upload: (.*) Mbit/s')
with open(file) as f:
s = state[2]
for line in f:
if s == state[2] and pattern_t.match(line):
timestamp.append(pd.to_datetime(pattern_t.match(line)[1]))
s = state[0]
if s == state[0] and pattern_d.match(line):
download.append(float(pattern_d.match(line)[1]))
s = state[1]
if s == state[1] and pattern_u.match(line):
upload.append(float(pattern_u.match(line)[1]))
s = state[2]
if s == state[1]:
timestamp.pop()
download.pop()
elif s == state[0]:
timestamp.pop()
data = pd.DataFrame({'timestamp': timestamp, 'download': download, 'upload': upload})
fig = plt.figure(figsize=(15,5))
plt.title("{}\n[Download] Mean Value={:.3} Variance={:.3}\n[Upload] Mean Value={:.3} Variance={:.3}"
.format(filename,
data['download'].mean(), data['download'].var(),
data['upload'].mean(), data['upload'].var()))
plt.xlabel("Test Times")
plt.ylabel("Through Mbit/s")
plt.grid(True)
d = plt.scatter(data.index, data['download'], s=3, c='r', label='Download Through')
u = plt.scatter(data.index, data['upload'], s=3, c='b', label='Upload Through')
plt.legend( loc='upper left', fontsize=12)
plt.show()
fig.savefig('data/' + filename + '.png', dpi=fig.dpi)
data.to_csv('data/' + filename + '.csv')