A general solution for boxplot for the entire data frame, which should work both for seabornand for pandas, since they matplotlibare all based on the hood, I will use the graph pandasas an example, assuming it is import matplotlib.pyplot as pltalready in place. Since you already have one ax, it would be better to use ax.text(...)instead plt.text(...).
In [35]:
print df
V1 V2 V3 V4 V5
0 0.895739 0.850580 0.307908 0.917853 0.047017
1 0.931968 0.284934 0.335696 0.153758 0.898149
2 0.405657 0.472525 0.958116 0.859716 0.067340
3 0.843003 0.224331 0.301219 0.000170 0.229840
4 0.634489 0.905062 0.857495 0.246697 0.983037
5 0.573692 0.951600 0.023633 0.292816 0.243963
[6 rows x 5 columns]
In [34]:
df.boxplot()
for x, y, s in zip(np.repeat(np.arange(df.shape[1])+1, df.shape[0]),
df.values.ravel(), df.values.astype('|S5').ravel()):
plt.text(x,y,s,ha='center',va='center')

For one series in the data frame, several small changes are required:
In [35]:
sub_df=df.V1
pd.DataFrame(sub_df).boxplot()
for x, y, s in zip(np.repeat(1, df.shape[0]),
sub_df.ravel(), sub_df.values.astype('|S5').ravel()):
plt.text(x,y,s,ha='center',va='center')

Creating scatter fields also looks like:
df.boxplot()
plt.scatter(np.repeat(np.arange(df.shape[1])+1, df.shape[0]), df.values.ravel(), marker='+', alpha=0.5)
sub_df=df.V1
pd.DataFrame(sub_df).boxplot()
plt.scatter(np.repeat(1, df.shape[0]), sub_df.ravel(), marker='+', alpha=0.5)


To overlay the material on boxplot, we first need to guess where each square is located among xaxis. They seem to be on par 1,2,3,4,..... Therefore, for the values in the first column, we want them to be a graph at x = 1; 2nd column at x = 2, etc.
- np.repeat, 1,2,3,4..., n , n - . , x. , y , df.ravel()
(). x, y .