Plotting med Matplotlib og Pandas

Les om Pandas her:

In [1]:
import pandas as pd
import matplotlib.pyplot as plt
In [2]:
# pd.read_csv brukes vanligvis til å lese fra filer.
# Her bruker vi et triks ved hjelp av StringIO-modulen.
# Det gjør at variabelen kd_ping_txt ser ut som en fil
# for pdread_csv.

# Datastrukturen Dataframe i Pandas er velegnet til å 
# håndtere tabelldata, slik som her:

from io import StringIO

kd_ping_txt = StringIO("""\
 min    avg    max    stdev
 19.863 27.337 67.833 9.848 
 20.903 28.335 42.866 5.065 
 19.876 28.734 62.963 8.922 
 22.728 30.054 69.169 9.877 
 21.416 26.375 31.013 2.921 
 20.244 24.743 29.809 3.065 
 21.865 27.230 45.813 5.062 
 22.568 28.986 38.858 4.183 
 21.772 31.086 79.919 12.158 
 20.834 27.103 49.013 5.778 
 20.169 30.304 73.809 11.755 
 19.329 25.533 43.915 5.381 
 20.719 26.606 52.870 6.805 
 21.805 27.114 33.000 3.129 
 20.831 26.738 61.118 8.341 
 21.891 30.585 62.860 9.771 
 18.875 22.715 26.950 2.189 
 20.793 26.060 55.916 7.321 
 18.729 25.197 37.949 4.789""")

ping = pd.read_csv(kd_ping_txt, delim_whitespace=True )
print(ping)
       min     avg     max   stdev
0   19.863  27.337  67.833   9.848
1   20.903  28.335  42.866   5.065
2   19.876  28.734  62.963   8.922
3   22.728  30.054  69.169   9.877
4   21.416  26.375  31.013   2.921
5   20.244  24.743  29.809   3.065
6   21.865  27.230  45.813   5.062
7   22.568  28.986  38.858   4.183
8   21.772  31.086  79.919  12.158
9   20.834  27.103  49.013   5.778
10  20.169  30.304  73.809  11.755
11  19.329  25.533  43.915   5.381
12  20.719  26.606  52.870   6.805
13  21.805  27.114  33.000   3.129
14  20.831  26.738  61.118   8.341
15  21.891  30.585  62.860   9.771
16  18.875  22.715  26.950   2.189
17  20.793  26.060  55.916   7.321
18  18.729  25.197  37.949   4.789
In [3]:
print(type(ping))
<class 'pandas.core.frame.DataFrame'>
In [4]:
print(type(ping['avg']))
<class 'pandas.core.series.Series'>
In [5]:
ping.describe()
Out[5]:
min avg max stdev
count 19.000000 19.000000 19.000000 19.000000
mean 20.800526 27.412368 50.823316 6.650526
std 1.157552 2.183773 15.984627 3.084783
min 18.729000 22.715000 26.950000 2.189000
25% 20.022500 26.217500 38.403500 4.486000
50% 20.831000 27.114000 49.013000 5.778000
75% 21.788500 28.860000 62.911500 9.346500
max 22.728000 31.086000 79.919000 12.158000
In [6]:
dato = list(range(1, 20))
In [7]:
plt.plot(dato,ping['min'], 'go')
plt.plot(dato,ping['avg'])
plt.plot(dato,ping['max'], 'ro')
plt.axis([0,20,0,100])
plt.xlabel('dag')
plt.ylabel('ms')
plt.show()