【发布时间】:2021-02-05 23:20:54
【问题描述】:
我想计算面板数据中两组之间变量“小时”的相关性。具体来说,我想计算 A 组和 B 组与 C 组之间的小时数的相关性。因此最终结果将包含两个数字:corr(hours_A, hours_C) 和 corr(hours_B, hours_C)。
我试过了:
data.groupby('group').corr()
但它给了我每组内“小时”和“其他变量”之间的相关性,但我想要两组之间“小时”变量的相关性。我是 Python 新手,欢迎提供任何帮助!
| group | year | hours | other variables |
|---|---|---|---|
| A | 2000 | 2784 | 567 |
| A | 2001 | 2724 | 567 |
| A | 2002 | 2715 | 567 |
| B | 2000 | 2301 | 567 |
| B | 2001 | 2612 | 567 |
| B | 2002 | 2489 | 567 |
| C | 2000 | 2190 | 567 |
| C | 2001 | 2139 | 567 |
| C | 2002 | 2159 | 567 |
更新:
感谢您回答我的问题! 我最终想出了自己的一些代码,但我的代码并不像提供的答案那么优雅。为了它的价值,我把它贴在这里。
df = df.set_index(['group','year'])
df = df.unstack(level=0)
df.index = pd.to_datetime(df.index).year
df.columns = df.columns.rename(['variables',"group"])
df.xs('hours', level="variables", axis=1).corr()
索引年份不是相关性所必需的,但如果我想稍后创建数据的横截面,它可能会派上用场。
【问题讨论】:
-
请从intro tour 重复on topic 和how to ask。 “告诉我如何解决这个编码问题”不是堆栈溢出问题。我们希望您做出诚实的尝试,然后然后就您的算法或技术提出一个具体的问题。 Stack Overflow 并不打算取代现有的文档和教程。由于您尚未尝试解决方案或研究算法,因此您还没有 Stack Overflow 问题。
-
感谢您的反馈。我更新了我的问题以包含我尝试过但不起作用的代码。
-
请提供预期的minimal, reproducible example (MRE)。显示中间结果与您的预期不同的地方。我们应该能够复制并粘贴您的代码的连续块,执行该文件,并重现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和所需的输出来测试我们的建议。
-
您发布的行不是试图关联您指定的组。正如文档告诉您的那样,它关联给定 DF 的列。
-
谢谢。刚刚用我的代码附加了一个更新。
标签: python correlation panel-data