Impossible to (neatly) z-score a Series
z-scoring (centering a variable at its mean and dividing by its standard deviation) is a common statistical operation. However, it ends up being rather hard to do if one's data is represented by a pandas `Series` object.

There's a few things one might think of to try. The `scipy.stats` module has a `zscore` function, but applying it to a `Series` raises an exception (I think because it doesn't know what to do with a column vector? I'm not sure):

``` python
s = pd.Series(np.random.rand(10))
s.apply(stats.zscore)
```

``` pytb
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-966-4f828190fd49> in <module>()
      1 s = pd.Series(np.random.rand(10))
----> 2 s.apply(stats.zscore)

/Users/mwaskom/anaconda/lib/python2.7/site-packages/pandas/core/series.pyc in apply(self, func, convert_dtype, args, **kwds)
   2167             values = lib.map_infer(values, lib.Timestamp)
   2168 
-> 2169         mapped = lib.map_infer(values, f, convert=convert_dtype)
   2170         if len(mapped) and isinstance(mapped[0], Series):
   2171             from pandas.core.frame import DataFrame

pandas/src/inference.pyx in pandas.lib.map_infer (pandas/lib.c:62578)()

/Users/mwaskom/anaconda/lib/python2.7/site-packages/scipy/stats/stats.pyc in zscore(a, axis, ddof)
   2105     """
   2106     a = np.asanyarray(a)
-> 2107     mns = a.mean(axis=axis)
   2108     sstd = a.std(axis=axis, ddof=ddof)
   2109     if axis and mns.ndim < a.ndim:

/Users/mwaskom/anaconda/lib/python2.7/site-packages/numpy/core/_methods.pyc in _mean(a, axis, dtype, out, keepdims)
     54     arr = asanyarray(a)
     55 
---> 56     rcount = _count_reduce_items(arr, axis)
     57     # Make this warning show up first
     58     if rcount == 0:

/Users/mwaskom/anaconda/lib/python2.7/site-packages/numpy/core/_methods.pyc in _count_reduce_items(arr, axis)
     48     items = 1
     49     for ax in axis:
---> 50         items *= arr.shape[ax]
     51     return items
     52 

IndexError: tuple index out of range
```

Actually writing out the formula using a lambda returns a `Series` of nulls:

``` python
s.apply(lambda x: (x - x.mean()) / x.std())
```

```
0   NaN
1   NaN
2   NaN
3   NaN
4   NaN
5   NaN
6   NaN
7   NaN
8   NaN
9   NaN
dtype: float64
```

And calling `stats.zscore` does not preserve the pandas metadata:

``` python
stats.zscore(s)
```

```
array([-0.3957885 , -0.89938219,  1.51650231, -1.01533894,  1.73900501,
       -1.08299489, -0.90929288,  0.08315865,  0.80475036,  0.15938106])
```

This is at least partially scipy's fault (particularly for the last example), but is it possible to change something in pandas so that this is easier? I am not exactly sure what's causing the exception in the simplest option.

Perhaps the best thing to do would be to add a `zscore` method to `Series objects?
#### output of `pd.show_versions()`

```

INSTALLED VERSIONS
------------------
commit: None
python: 2.7.11.final.0
python-bits: 64
OS: Darwin
OS-release: 13.4.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8

pandas: 0.17.1
nose: 1.3.7
pip: None
setuptools: 18.3.1
Cython: 0.20.1
numpy: 1.10.2
scipy: 0.16.1
statsmodels: 0.6.1
IPython: 4.0.3
sphinx: 1.2.3
patsy: 0.4.0
dateutil: 2.4.2
pytz: 2015.7
blosc: None
bottleneck: None
tables: 3.1.1
numexpr: 2.3.1
matplotlib: 1.5.1
openpyxl: 1.8.5
xlrd: 0.9.3
xlwt: 0.7.5
xlsxwriter: 0.5.5
lxml: 3.3.5
bs4: 4.3.1
html5lib: 0.999
httplib2: None
apiclient: None
sqlalchemy: 0.9.4
pymysql: None
psycopg2: None
Jinja2: None
```
