Pandas 计算相关性系数corr()方式

目录
  • Pandas 计算相关性系数corr()
    • 相关:数据之间有关联,相互有影响
    • 相关性系数:衡量相关性强弱的
    • 构造如下数据
  • pandas相关系数-DataFrame.corr()参数
    • 参数说明

Pandas 计算相关性系数corr()

相关:数据之间有关联,相互有影响

如:A和B 存在一定的相关性,A对B存在一定程度的影响,A变化,B也会有一定的变化

  • 如果A和B相等 或者 B可以由A经过计算得到---->完全相关
  • 如果B是由 A和C计算得到 ---->并且 A可以计算出B的大部分 -----> A和B 强度相关
  • 如果B是由 A和C计算得到 ---->并且 A可以计算出B的小部分 -----> A和B 弱度相关
  • 如果 A和B 毫无关系 ----> 不相关

如果B和 A相关:

  • A的增大导致B的减小 —> 负相关
  • A的增大导致B的增大 —> 正相关

相关性系数:衡量相关性强弱的

其范围是[-1,1],绝对值越靠近0,表示不相关,绝对值越靠近1,表示相关性越强

小于 0 表示负相关;大于 0 表示正相关。

构造如下数据

import pandas as pd

data = pd.DataFrame(
    data={
        'age': [2,7,10,16,20],
        'height': [70,90,143,166,178],
        'score': [98,37,103,76,53]
    }
)

使用corr()方法计算相关性系数:

# 计算相关性系数的列 必须都是数值型的数据!
corr = data.loc[:, ["age","height"]].corr()        # 会计算两两列之间的相关性系数
print("corr\n", corr)
"""
corr
            age   height
age     1.00000  0.96043
height  0.96043  1.00000
"""

自身与自身的相关性系数为 1

计算多列相关性系数:

corr = data.loc[:, ["age","height","score"]].corr()
print("corr\n", corr)
"""
corr
             age    height     score
age     1.000000  0.960430 -0.340053
height  0.960430  1.000000 -0.096782
score  -0.340053 -0.096782  1.000000
"""

pandas相关系数-DataFrame.corr()参数

DataFrame.corr(method='pearson', min_periods=1)

参数说明

  • method:可选值为{‘pearson’, ‘kendall’, ‘spearman’}
  • pearson:Pearson相关系数来衡量两个数据集合是否在一条线上面,即针对线性数据的相关系数计算,针对非线性数据便会有误差。
  • kendall:用于反映分类变量相关性的指标,即针对无序序列的相关系数,非正太分布的数据
  • spearman:非线性的,非正太分布的数据的相关系数
  • min_periods:样本最少的数据量
  • 返回值:各类型之间的相关系数DataFrame表格。

为区分不同参数之间的区别,我们实验如下:

from pandas import DataFrame
import pandas as pd
x=[a for a in range(100)]
#构造一元二次方程,非线性关系
def y_x(x):
    return 2*x**2+4
y=[y_x(i) for i in x]

data=DataFrame({'x':x,'y':y})

#查看下data的数据结构
data.head()
Out[34]:
   x   y
0  0   4
1  1   6
2  2  12
3  3  22
4  4  36

data.corr()
Out[35]:
          x         y
x  1.000000  0.967736
y  0.967736  1.000000

data.corr(method='spearman')
Out[36]:
     x    y
x  1.0  1.0
y  1.0  1.0

data.corr(method='kendall')
Out[37]:
     x    y
x  1.0  1.0
y  1.0  1.0

因为y经由函数构造出来,x和y的相关系数为1,但从实验结构可知pearson系数,针对非线性数据有一定的误差。

需要说明,数据之间的相关关系,并不代表其之间的因果关系,相关系数为1,只能说明二者之间具备完全相关性,但不能说y是x的果。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • pandas的相关系数与协方差实例

    1.输出百分比变化以及前后指定的行数 a = np.arange(1,13).reshape(6,2) data = DataFrame(a) #计算列的百分比变化,如果想计算行设置axis=1 print(data.pct_change()) ''' 0 1 0 NaN NaN 1 2.000000 1.000000 2 0.666667 0.500000 3 0.400000 0.333333 4 0.285714 0.250000 5 0.222222 0.200000 ''' #输出前五

  • Python+pandas计算数据相关系数的实例

    本文主要演示pandas中DataFrame对象corr()方法的用法,该方法用来计算DataFrame对象中所有列之间的相关系数(包括pearson相关系数.Kendall Tau相关系数和spearman秩相关). >>> import numpy as np >>> import pandas as pd >>> df = pd.DataFrame({'A':np.random.randint(1, 100, 10), 'B':np.random

  • 基于Python数据分析之pandas统计分析

    pandas模块为我们提供了非常多的描述性统计分析的指标函数,如总和.均值.最小值.最大值等,我们来具体看看这些函数: 1.随机生成三组数据 import numpy as np import pandas as pd np.random.seed(1234) d1 = pd.Series(2*np.random.normal(size = 100)+3) d2 = np.random.f(2,4,size = 100) d3 = np.random.randint(1,100,size = 1

  • Pandas 计算相关性系数corr()方式

    目录 Pandas 计算相关性系数corr() 相关:数据之间有关联,相互有影响 相关性系数:衡量相关性强弱的 构造如下数据 pandas相关系数-DataFrame.corr()参数 参数说明 Pandas 计算相关性系数corr() 相关:数据之间有关联,相互有影响 如:A和B 存在一定的相关性,A对B存在一定程度的影响,A变化,B也会有一定的变化 如果A和B相等 或者 B可以由A经过计算得到---->完全相关 如果B是由 A和C计算得到 ---->并且 A可以计算出B的大部分 -----

  • Python利用pandas计算多个CSV文件数据值的实例

    功能:扫描当前目录下所有CSV文件并对其中文件进行统计,输出统计值到CSV文件 pip install pandas import pandas as pd import glob,os,sys input_path='./' output_fiel='pandas_union_concat.csv' all_files=glob.glob(os.path.join(input_path,'sales_*')) all_data_frames=[] for file in all_files:

  • pandas计算最大连续间隔的方法

    如下所示: 群里一朋友发了一个如上图的问题,解决方法如下 data = {'a':[1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2],'b':[1,2,3,4,5,8,9,10,1,2,3,6,7,8,9,12,13]} df = pd.DataFrame(data) for name,group in df.groupby('a'): group['c'] = ((group['b'].shift(1).fillna(0) + 1).astype(int) != group

  • python 使用pandas计算累积求和的方法

    使用pandas下的cumsum函数 cumsum:计算轴向元素累积加和,返回由中间结果组成的数组.重点就是返回值是"由中间结果组成的数组" import numpy as np ''' arr是一个2*2*3三维矩阵,索引值为0,1,2 cumsum(0):实现0轴上的累加:以最外面的数组元素为单位,以[[1,2,3],[8,9,12]]为开始实现后面元素的对应累加 cumsum(1):实现1轴上的累加:以中间数组元素为单位,以[1,2,3]为开始,实现后面元素的对应累加 cumsu

  • PyCharm 无法 import pandas 程序卡住的解决方式

    问题描述:之前一直用习惯了jupyter notebook ,今天换一下IDE,直接用Pycharm,结果发现在import pandas 的时候,虽然不报错,但是程序无法运行 比如这个代码,只能打印出第一句开始读取,之后程序一直运行,但不停止...让我很是头大啊..在网上搜了各种各样的解决方法.设置解释器...一系列的都没有问题 但是pandas还是不能引入,好了使用暴力解决的方法,卸载重新安装 找到pandas包点击红色的减号,等待卸载 等待成功之后点击绿色的加号重新安装,搜索pandas.

  • Python实现计算图像RGB均值方式

    要求 存在一个文件夹内有若干张图像,需要计算每张图片的RGB均值,并计算全部图像的RGB均值. 代码 # -*- coding: utf-8 -*- """ Created on Thu Nov 1 10:43:29 2018 @author: Administrator """ import os import cv2 import numpy as np path = 'C:/Users/Administrator/Desktop/rgb'

  • Python pandas 计算每行的增长率与累计增长率

    读取数据: FacebookDf=pd.read_excel(r'D:\jupyter\Untitled Folder\Facebook2017年股票数据.xlsx',index_col='Date') FacebookDf.tail() 计算当前行比上一行增长的百分比(每行的增长率) # .pct_change()返回变化百分比,第一行因没有可对比的,返回Nan,填充为0 # apply(lambda x: format(x, '.2%'))将小数点转换为百分数 FacebookDf['pct

  • 使用pandas计算环比和同比的方法实例

    目录 前言 1.数据准备 2.环比计算 3.同比计算 4.关于pct_change()函数 5.后记 前言 在进行业务数据分析时,往往需要使用pandas计算环比.同比及增长率等指标,为了能够更加方便的进行的统计数据,整理方法如下. 1.数据准备 为方便进行演示,此处提前生成需要进行统计的数据,数据已经是按照时间维度进行排序. months = pd.date_range(start='2010-01-01', end='2020-12-31', freq='M') test_df = pd.D

  • Pandas计算元素的数量和频率的方法(出现的次数)

    目录 pandas.Series.unique():返回NumPy数组ndarray中唯一元素值的列表 pandas.Series.value_counts():返回唯一元素的值及其在出现的次数. pandas.Series.nunique(), pandas.DataFrame.nunique():返回int,pandas.Series中唯一元素的数量. 唯一元素的数量(不包括重复项的) 唯一元素值列表 唯一元素的频率(出现次数) 独特元素及其出现的字典 模式及其频率 mode() descr

  • pandas DataFrame创建方法的方式

    在pandas里,DataFrame是最经常用的数据结构,这里总结生成和添加数据的方法: ①.把其他格式的数据整理到DataFrame中: ②在已有的DataFrame中插入N列或者N行. 1. 字典类型读取到DataFrame(dict to DataFrame) 假如我们在做实验的时候得到的数据是dict类型,为了方便之后的数据统计和计算,我们想把它转换为DataFrame,存在很多写法,这里简单介绍常用的几种: 方法一:直接使用pd.DataFrame(data=test_dict)即可,

随机推荐