Homework: DataFrames and Plotting¶

In [ ]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
%config InlineBackend.figure_format='retina'  # for Mac retina displays
In [ ]:
import seaborn as sns
dat = sns.load_dataset('fmri')

DataFrames¶

In [ ]:
print(dat.shape)
dat.head(10)
In [ ]:
print(dat.subject.unique())
print(dat.region.unique())
In [ ]:
tab = dat.groupby(['region', 'subject']).agg(
    {'signal': ['mean', 'std']})
tab = tab.reset_index()
tab['SNR'] = tab['signal']['mean'].abs()/tab['signal']['std']
tab
In [ ]:
tab.sort_values('SNR', ascending=False)

Plotting¶

Matplotlib:

In [ ]:
frontal = dat[(dat.region == 'frontal') & (dat.event == 'stim')]
frontal = frontal.sort_values(['subject', 'timepoint'])
frontal.head(10)
In [ ]:
for sub in frontal.subject.unique():
    this_dat = frontal[frontal.subject == sub]
    plt.plot(this_dat.timepoint, this_dat.signal, label=sub)

Seaborn

In [ ]:
sns.lineplot(data=frontal, x='timepoint', y='signal', hue='subject')
In [ ]:
ax = sns.lineplot(data=frontal, x='timepoint', y='signal', hue='subject')
plt.xlabel('time')
plt.ylabel('BOLD signal')
plt.title('Frontal stim response')
sns.move_legend(ax, "upper left", bbox_to_anchor=(1, 1))
plt.axhline(y=0.0, color='gray', zorder=-3, alpha=0.5)
In [ ]: