python - 使用列值的热图相关性?
问题描述
假设我有以下美国各州的重复观察数据,这些数据具有一定的价值:
US_State Value
Alabama 1
Alabama 10
Alabama 9
Michigan 8
Michigan 9
Michigan 2
...
如何为所有 US_State 组合之间的值生成成对相关性?我尝试了一些不同的方法(pivot、groupby 等),但我似乎无法理解正确的方法。
理想的输出如下所示:
Alabama Michigan ...
Alabama 1 0.5
Michigan 0.5 1
...
解决方案
有一种方法可以最大限度地利用 Pandas,但这只是假设输入数据集中的每个状态具有相同数量的观察值,否则相关系数并没有真正意义,结果会变得有点古怪。
import pandas as pd
df = pd.DataFrame()
df['US_State'] = ["Alabama", "Alabama", "Alabama", "Michigan", "Michigan", "Michigan", "Oregon", "Oregon", "Oregon"]
df['Value'] = [1, 10, 9, 8, 9, 2, 6, 1, 2]
pd.DataFrame(df.groupby("US_State")['Value'].apply(lambda x: list(x))).T.apply(lambda x: pd.Series(*x), axis=0).corr()
这导致
US_State Alabama Michigan Oregon
US_State
Alabama 1.000000 -0.285578 -0.996078
Michigan -0.285578 1.000000 0.199667
Oregon -0.996078 0.199667 1.000000
代码的基本作用是将每个状态的数据收集到单个单元格中作为列表,将数据帧转置为状态列,然后将收集到的列表数据单元格扩展为每个状态的数据帧行。然后你可以调用corr()
pandas 数据框的标准方法。
推荐阅读
- c++ - 是否可以通过输入键返回具有字典中值的元组?
- pdf - 如何通过打印机名称部分将 PDF 文件打印到打印机
- spring - Spring MVC 和休眠
- r - 在 Windows 10 上安装和删除 odbc R 包
- android - 将多个嵌套列表保存到房间数据库中
- regex - 正则表达式匹配排除其他相似字符串中的特定字符
- python - 如何在 Python 2021 中安装 shapely 包
- python - Pandas groupby 通过指定最小数量的非 NA 值来表示平均值
- find - 使用找到的记录集作为值列表的基础
- html - 为什么 Sublime Text 上下文菜单被禁用(下图)