【问题标题】:How do I get a DataFrame with pearsonr correlation coefficient for each month?如何获得每个月具有 pearsonr 相关系数的 DataFrame?
【发布时间】:2018-12-08 20:20:23
【问题描述】:

好的,我有两个如下所示的 DataFrame。第一个称为load,第二个称为lmp。

   read_date  hour_ending  reading
0 2016-02-12            1   6.3634
1 2016-02-12            2   6.3418
2 2016-02-12            3   6.3893
3 2016-02-12            4   6.3115
4 2016-02-12            5   6.6118

和

   read_date  hour_ending    reading
0 2016-02-12            1  30.428136
1 2016-02-12            2  29.709692
2 2016-02-12            3  29.474148
3 2016-02-12            4  29.456977
4 2016-02-12            5  29.574211

我想要的是使用pearsonr 中的第一个值将两个DataFrames 中reading 列中的每个值与我认为应该类似于以下pearsonr(lmp['reading'], load['reading'])[0] 的代码相关联。

【问题讨论】:

    标签: python-2.7 pandas numpy scipy statistics


    【解决方案1】:

    合并或连接您的数据框。或者干脆用你想要计算相关性的两列对应值创建一个新的。

    样本:

    df = pd.merge(load, lmp, on=['read_date','hour_ending'])
    

    使用 inate pandas.dataframe 相关函数计算所需列的相关性:

    df[['reading_x','reading_y']].corr() ## notice that the columns get automatically renamed on pd.merge() since they had the same name
    

    请注意两个系列的长度应该相同

    如果使用合并,如果您没有要合并的唯一键,您可能会遇到问题

    或者你可以将两个系列都传递给numpy.corrcoef函数

    【讨论】:

    • 这不会产生我正在寻找的结果。我正在寻找一个与每个月(无论年份如何)都产生相关性的合并表长度相同的表。也许我需要在问题中澄清这一点。不过感谢您的帮助!
    • 皮尔逊相关系数是成对级数产生的系数。如果你想在一组特定的数据上计算它,你所要做的就是将它应用到那组特定的数据上。从您的评论看来,您想在同一个月的日期内计算它,所以这就是您应该传递给函数的一系列数据。所以你的问题是正确解析数据。
    猜你喜欢
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 2017-09-17
    相关资源
    最近更新 更多