使用scipy和groupby计算Kendall的tau

Ste*_*ter 2 python statistics scipy dataframe pandas

我有一个csv文件,每年和每个气象站都有降水数据.它看起来像这样:

station_id    year       Sum
 210018      1916      65.024
 210018      1917      35.941
 210018      1918      28.448
 210018      1919      68.58
 210018      1920      31.115
 215400      1916      44.958
 215400      1917      31.496
 215400      1918      38.989
 215400      1919      74.93
 215400      1920      53.5432
Run Code Online (Sandbox Code Playgroud)

我想根据唯一的站点ID返回Kendall的tau相关性和p值.所以对于上面我想要总和和年份之间的相关性为站号210018和215400.

然后,station_id 210018的相关性为-.20,p值为0.62,而station_id 215400的相关性为.40,p值为.33.

我想用这个:

grouped=df.groupby(['station_id'])
grouped.aggregate([tau, p_value=sp.stats.kendalltau(df.year, df.Sum)])
Run Code Online (Sandbox Code Playgroud)

返回的错误是p_value后等号上的语法错误.

任何帮助,将不胜感激.

Ale*_*ley 6

计算这个的一种方法是applygroupby对象上使用:

>>> import scipy.stats as st
>>> df.groupby(['station_id']).apply(lambda x: st.kendalltau(x['year'], x['Sum']))
station_id
210018        (-0.2, 0.62420612399)
215400        (0.4, 0.327186890661)
dtype: object
Run Code Online (Sandbox Code Playgroud)