def analyse(fn):
display(HTML("<h1>"+fn+"</h1>"))
df = pd.read_csv(fn)
df["t"] = df["t"] / (1000.0*1000.0*1000.0)
df["dt"] = df['t'] - df.groupby("id")["t"].shift(1)
df['usage_lag'] = df.groupby("id")["usage"].shift(1)
df['usage_dt'] = df['usage'] - df['usage_lag']
df['usage_fair'] = (df['bwavail'] * df["t"]) / len(df.groupby("id"))
df['usage_avail'] = (df['bwavail'] * df["t"])
df['usage_total'] = [ df['usage'][df['t'] == t].sum() for t in df['t'] ]
df['desiredrate_diff'] = df['actualrate']-df['desiredrate']
display(HTML("<h3>Per Client</h3>"))
cs = pd.DataFrame()
cs["desiredrate_diff"] = df.groupby("id")['desiredrate_diff'].mean()
cs["total_usage"] = df.groupby("id")['usage'].sum()
cs["limit_lo"] = df.groupby("id")['limit'].min()
cs["limit_hi"] = df.groupby("id")['limit'].max()
cs.columns = ['Desired Date Diff', 'Total Usage', 'Min Limit', 'Max Limit']
display(cs)
display(HTML("<h3>Bandwidth</h3>"))
df["bwreq"].plot();
df["bwused"].plot();
df["bwavail"].plot();
df["bwbreak"].plot();
plt.legend();
plt.title(fn+": bandwidth use");
plt.show();
display(HTML("<h3>Usage</h3>"))
plt.figure();
df.groupby("id")['usage'].plot();
df['usage_fair'].plot();
plt.legend();
plt.title(fn+": usage");
plt.show();
plt.figure();
df['usage_avail'].plot();
df['usage_total'].plot();
plt.legend();
plt.title(fn+": total usage");
plt.show();
pd.pivot_table(df.reset_index(),
index='t', columns='id', values='usage_dt'
).plot(subplots=True, title=fn+": cycle usage", figsize=(20, 5*len(df.groupby("id"))));
plt.show();
pd.pivot_table(df.reset_index(),
index='t', columns='id', values='usage'
).plot(subplots=True, title=fn+": total usage", figsize=(20, 5*len(df.groupby("id"))));
plt.show();
display(HTML("<h3>Rates / Consumption</h3>"))
pd.pivot_table(df.reset_index(),
index='t', columns='id', values='desiredrate'
).plot(subplots=True, title=fn+": desired rate", figsize=(20, 5*len(df.groupby("id"))));
plt.show();
pd.pivot_table(df.reset_index(),
index='t', columns='id', values='desiredrate_diff'
).plot(subplots=True, title=fn+": desired rate diff", figsize=(20, 5*len(df.groupby("id"))));
plt.show();
pd.pivot_table(df.reset_index(),
index='t', columns='id', values='limit'
).plot(subplots=True, title=fn+": limit", figsize=(20, 5*len(df.groupby("id"))));
plt.show();