Python 如何计算两个向量之间的pearson相关性

Python 如何计算两个向量之间的pearson相关性,python,pandas,dataframe,timeline,Python,Pandas,Dataframe,Timeline,我有一个社交网络中用户帖子的数据库,我使用Pandas DataFrame统计了每个用户每月的帖子数量,结果为每个用户生成了一个包含月份和帖子数量的2列表。我想计算不同用户之间的每月计数相关性,知道每个用户之间的每月时间线是不同的(有一些相交的月份) 这是创建月度时间线表(agg)的代码 所以基本上我必须对两个“agg”变量应用相关函数,但找不到一个直观的方法。 以下是属于两个不同用户的agg变量的两个示例: 第一栏:月份,第二栏:帖子数量 User A 2018-04-30 39 2

我有一个社交网络中用户帖子的数据库,我使用Pandas DataFrame统计了每个用户每月的帖子数量,结果为每个用户生成了一个包含月份和帖子数量的2列表。我想计算不同用户之间的每月计数相关性,知道每个用户之间的每月时间线是不同的(有一些相交的月份)

这是创建月度时间线表(agg)的代码

所以基本上我必须对两个“agg”变量应用相关函数,但找不到一个直观的方法。 以下是属于两个不同用户的agg变量的两个示例:

第一栏:
月份
,第二栏:
帖子数量

User A 
2018-04-30     39
2018-05-31     41
2018-06-30     19
2018-07-31     46
2018-08-31     61
2018-09-30     57
2018-10-31     33
2018-11-30     18

User B:
2017-11-30      0
2017-12-31      3
2018-01-31      0
2018-02-28      0
2018-03-31      22
2018-04-30      3
2018-05-31      11

以下是计算皮尔逊相关性的解决方案:

import pandas as pd
data = """    
datetime     score 
2018-04-30     39
2018-05-31     41
2018-06-30     19
2018-07-31     46
2018-08-31     61
2018-09-30     57
2018-10-31     33
2018-11-30     18
    """
    datb = """    
datetime      score 
2017-11-30      0
2017-12-31      3
2018-01-31      0
2018-02-28      0
2018-03-31      22
2018-04-30      3
2018-05-31      11
        """
dfa = pd.read_csv(pd.compat.StringIO(data), sep='\s+')
dfb = pd.read_csv(pd.compat.StringIO(datb), sep='\s+')
dfa['datetime'] = pd.to_datetime(dfa['datetime'])
dfb['datetime'] = pd.to_datetime(dfb['datetime'])
dfa.index = dfa['datetime']
dfb.index = dfb['datetime']

agga = dfa['score'].resample('M').sum().to_frame()
aggb = dfb['score'].resample('M').sum().to_frame()
print(agga,aggb)


如果要使用union:

union = pd.merge(agga, aggb, on='datetime', how='outer').fillna(0)
工会的产出:

                score_x  score_y
datetime                    
2018-04-30     39.0      3.0
2018-05-31     41.0     11.0
2018-06-30     19.0      0.0
2018-07-31     46.0      0.0
2018-08-31     61.0      0.0
2018-09-30     57.0      0.0
2018-10-31     33.0      0.0
2018-11-30     18.0      0.0
2017-11-30      0.0      0.0
2017-12-31      0.0      3.0
2018-01-31      0.0      0.0
2018-02-28      0.0      0.0
2018-03-31      0.0     22.0

一个很好的理解链接

请使用问题中编写代码时提供的格式。感谢您的回复!我们是否仅在相交月份应用皮尔逊相关?我们不应该把两条时间线合并吗?为了相互关联,你必须比较相同的“排序”元素,我已经做了交叉。如果您使用union,您将具有NaN值,因为某些月份没有值。。因此,在您必须估计丢失的值(对不起,我的英语)之后,有没有办法通过在不存在的月份中填写0分而不是NaN来扩展这两个时间线?这样我就可以很容易地把皮尔逊的名字用在工会的时间表上了?顺便说一句,votre anglais est parfait;)如果答案正确,请不要忘记验证答案。谢谢
 dfa
           score
datetime         
2018-04-30     39
2018-05-31     41
2018-06-30     19
2018-07-31     46
2018-08-31     61
2018-09-30     57
2018-10-31     33
2018-11-30     18

 dfb
             score
datetime         
2017-11-30      0
2017-12-31      3
2018-01-31      0
2018-02-28      0
2018-03-31     22
2018-04-30      3
2018-05-31     11

 inter
            score_x  score_y
datetime                    
2018-04-30       39        3
2018-05-31       41       11

 result
0.9999999999999999
union = pd.merge(agga, aggb, on='datetime', how='outer').fillna(0)
                score_x  score_y
datetime                    
2018-04-30     39.0      3.0
2018-05-31     41.0     11.0
2018-06-30     19.0      0.0
2018-07-31     46.0      0.0
2018-08-31     61.0      0.0
2018-09-30     57.0      0.0
2018-10-31     33.0      0.0
2018-11-30     18.0      0.0
2017-11-30      0.0      0.0
2017-12-31      0.0      3.0
2018-01-31      0.0      0.0
2018-02-28      0.0      0.0
2018-03-31      0.0     22.0