我有一个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
我想根据唯一的电台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)])
返回的错误是p_value后等号上的语法错误。
任何帮助都将不胜感激。
答案 0 :(得分:6)
计算此问题的一种方法是在apply
对象上使用groupby
:
>>> 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