【发布时间】:2015-07-02 07:31:00
【问题描述】:
虽然这听起来像是统计问题,但请耐心等待。
我从不同采样地点收集的水样中获得了几种钙浓度。每月、每年、每隔一年在一些站点对水进行重新取样。
我想使用 Lindsey 和 Rupert (http://pubs.usgs.gov/sir/2012/5049/) 执行的 Wilcoxon-Pratt 符号秩检验来测量各站组钙浓度的年度和十年变化。为了进行测试,我想创建以一年(365 天的时间增量)或尽可能接近该时间范围的数据对。成对测量应该有相同的月份,只是不同的年份。每个站每个月我只需要一对。我不希望对共享同一站点、月份和年份的样本的样本浓度进行平均。
这是我的数据示例: https://raw.githubusercontent.com/inkenbrandt/IPython/master/Calcium_Samples.csv
SampleLocation CalciumConc_mgL
SampleDate
10/1/1947 0:00 USGS-09382000 66.0
10/15/1947 0:00 USGS-09382000 132.0
1/1/1948 0:00 USGS-09382000 130.0
1/15/1948 0:00 USGS-09382000 98.0
5/1/1948 0:00 USGS-09382000 82.0
5/15/1948 0:00 USGS-09382000 53.0
6/1/1948 0:00 USGS-09382000 142.0
9/1/1948 0:00 USGS-09382000 107.0
9/15/1948 0:00 USGS-09382000 59.0
10/1/1948 0:00 USGS-09382000 106.0
10/15/1948 0:00 USGS-09382000 102.0
5/15/1949 0:00 USGS-09382000 59.0
6/1/1949 0:00 USGS-09382000 50.0
6/15/1949 0:00 USGS-09382000 161.0
9/1/1949 0:00 USGS-09382000 82.0
9/15/1949 0:00 USGS-09382000 376.0
10/1/1949 0:00 USGS-09382000 210.0
10/15/1949 0:00 USGS-09382000 131.0
1/1/1950 0:00 USGS-09382000 132.0
... ... ...
9/20/1947 0:00 USGS-09288500 59.0
9/20/1947 0:00 USGS-09288500 59.0
6/9/1948 0:00 USGS-09288500 51.0
6/9/1948 0:00 USGS-09288500 51.0
9/29/1948 0:00 USGS-09288500 51.0
9/29/1948 0:00 USGS-09288500 51.0
9/10/1949 0:00 USGS-09288500 40.0
5/19/1941 0:00 USGS-09295000 33.0
6/16/1941 0:00 USGS-09295000 3.4
5/11/1947 0:00 USGS-09295000 42.0
6/22/1947 0:00 USGS-09295000 32.0
9/20/1947 0:00 USGS-09295000 97.0
6/9/1948 0:00 USGS-09295000 37.0
9/29/1948 0:00 USGS-09295000 126.0
9/10/1949 0:00 USGS-09295000 93.0
[429 rows x 2 columns]
我想生成一个看起来像这样的 Pandas 数据框:
SampleLocation SampleDate1 CaConc1 SampleDate2 CaConc2
USGS-09382000 10/1/1947 0:00 66.0 10/1/1948 0:00 106.0
USGS-09382000 10/15/1947 0:00 132.0 10/15/1948 0:00 102.0
USGS-09382000 5/15/1948 0:00 53.0 5/15/1949 0:00 59.0
... ... ... ... ...
USGS-09288500 9/20/1947 0:00 59.0 9/29/1948 0:00 51.0
我相信这可以使用 Pandas 中的多索引功能来解决。到目前为止,我已经查看了以下 stackoverflow 问题,以获取匹配日期和使用索引进行操作的帮助:
我认为第二个链接使用 unstacking multi-indexes 非常接近,如果我愿意聚合,我可能能够执行此操作,但我试图避免这种情况。
此技术适用于希望分析具有季节性趋势的数据的其他人,例如比较同一天或接近同一天的河流流量或累积降水或温度。
【问题讨论】:
-
您可以使用时间增量(例如 365 天),或者在日期之后查看“一年”,在这种情况下,您必须考虑闰年、缺少数据点等. 你更喜欢哪一个?
-
@Alexander 时间增量听起来更容易实现,所以我更喜欢这样。我已经编辑了帖子以反映我的偏好。
-
可能会让您接近正确答案并且速度非常快的方法是
resample,然后是shift。
标签: python pandas match time-series multi-index