如何在Python中生成带列名的相关系数值DataFrame
把相关系数整理为DataFrame的解决方案
先说说你之前失败的问题
你创建空DataFrame后输出为空,是因为没把循环计算出来的列名和相关系数正确收集并传入DataFrame,光有空架子当然没数据。
方法1:手动收集数据再构建DataFrame
先把列名和对应的相关系数分别存到列表里,最后用这两个列表生成DataFrame:
import pandas as pd # 初始化两个空列表,用来存列名和对应的相关系数 col_names = [] corr_results = [] # 循环计算并收集数据 for column in df: # df是你的列名列表 corr_val = ds[column].corr(ds["something"]) col_names.append(column) corr_results.append(corr_val) # 生成目标DataFrame final_df = pd.DataFrame({ "列名": col_names, "相关系数": corr_results }) # 如果想要和示例一样把列名当索引,加这行 final_df.set_index("列名", inplace=True) print(final_df)
方法2:用pandas内置函数省掉循环
pandas有个corrwith方法,可以直接计算所有列和指定列的相关系数,一步到位:
import pandas as pd # 直接计算所有列与"something"的相关系数,返回一个Series corr_series = ds.corrwith(ds["something"]) # 把Series转成DataFrame final_df = corr_series.to_frame(name="相关系数") # 如果需要单独的列名列,就用下面这行 # final_df = corr_series.reset_index().rename(columns={"index": "列名", 0: "相关系数"}) print(final_df)
内容的提问来源于stack exchange,提问作者MOP
相关产品推荐
相关产品推荐

