Pandas 相关性

Pandas 相关性

参考:pandas correlation

在数据分析中,了解不同数据列之间的相关性是非常重要的。Pandas 是一个强大的 Python 数据处理库,它提供了多种计算数据相关性的方法。本文将详细介绍如何使用 Pandas 来计算和分析数据的相关性。

1. 理解相关性

相关性是衡量两个变量之间线性关系强度的统计指标。在 Pandas 中,我们主要使用 Pearson、Spearman 和 Kendall 这三种相关系数方法来衡量相关性。

  • Pearson 相关系数:衡量两个数据集合是否在一条线上的程度,其值介于 -1 和 1 之间。
  • Spearman 秩相关系数:是一种非参数的相关系数,用于衡量两个变量的等级之间的相关性。
  • Kendall 秩相关系数:也是一种非参数的相关系数,通常用于衡量两个变量之间的一致性。

2. 使用 Pandas 计算相关性

在 Pandas 中,DataFrame.corr() 方法可以用来计算列与列之间的相关系数。接下来,我们将通过多个示例详细介绍如何使用这些方法。

示例代码 1: 创建 DataFrame

import pandas as pd
import numpy as np

# 创建一个 DataFrame
data = {
    'A': np.random.randn(100),
    'B': np.random.randn(100),
    'C': np.random.randn(100),
    'D': np.random.randn(100)
}
df = pd.DataFrame(data)

print(df)

Output:

Pandas 相关性

示例代码 2: 计算 Pearson 相关系数

import pandas as pd
import numpy as np

# 创建一个 DataFrame
data = {
    'A': np.random.randn(100),
    'B': np.random.randn(100),
    'C': np.random.randn(100),
    'D': np.random.randn(100)
}
df = pd.DataFrame(data)

# 计算 Pearson 相关系数
pearson_corr = df.corr(method='pearson')
print(pearson_corr)

Output:

Pandas 相关性

示例代码 3: 计算 Spearman 秩相关系数

import pandas as pd
import numpy as np

# 创建一个 DataFrame
data = {
    'A': np.random.randn(100),
    'B': np.random.randn(100),
    'C': np.random.randn(100),
    'D': np.random.randn(100)
}
df = pd.DataFrame(data)

# 计算 Spearman 秩相关系数
spearman_corr = df.corr(method='spearman')
print(spearman_corr)

Output:

Pandas 相关性

示例代码 4: 计算 Kendall 秩相关系数

import pandas as pd
import numpy as np

# 创建一个 DataFrame
data = {
    'A': np.random.randn(100),
    'B': np.random.randn(100),
    'C': np.random.randn(100),
    'D': np.random.randn(100)
}
df = pd.DataFrame(data)

# 计算 Kendall 秩相关系数
kendall_corr = df.corr(method='kendall')
print(kendall_corr)

Output:

Pandas 相关性

示例代码 5: 使用 seaborn 绘制热图

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# 创建一个 DataFrame
data = {
    'A': np.random.randn(100),
    'B': np.random.randn(100),
    'C': np.random.randn(100),
    'D': np.random.randn(100)
}
df = pd.DataFrame(data)

# 计算 Pearson 相关系数
pearson_corr = df.corr(method='pearson')

# 使用 seaborn 绘制 Pearson 相关系数热图
sns.heatmap(pearson_corr, annot=True, cmap='coolwarm')
plt.show()

Output:

Pandas 相关性

示例代码 6: 选择性计算相关性

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# 创建一个 DataFrame
data = {
    'A': np.random.randn(100),
    'B': np.random.randn(100),
    'C': np.random.randn(100),
    'D': np.random.randn(100)
}
df = pd.DataFrame(data)

# 只计算 A 和 B 两列的 Pearson 相关系数
ab_pearson_corr = df[['A', 'B']].corr(method='pearson')
print(ab_pearson_corr)

示例代码 7: 处理缺失值后计算相关性

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# 创建一个 DataFrame
data = {
    'A': np.random.randn(100),
    'B': np.random.randn(100),
    'C': np.random.randn(100),
    'D': np.random.randn(100)
}
df = pd.DataFrame(data)

# 添加缺失值
df.loc[0, 'A'] = np.nan

# 计算相关性,自动排除缺失值
pearson_corr_with_nan = df.corr(method='pearson')
print(pearson_corr_with_nan)

示例代码 8: 使用不同的数据集

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# 创建一个 DataFrame
data = {
    'A': np.random.randn(100),
    'B': np.random.randn(100),
    'C': np.random.randn(100),
    'D': np.random.randn(100)
}
df = pd.DataFrame(data)

# 创建另一个 DataFrame
data2 = {
    'E': np.random.randn(100) * 100,
    'F': np.random.gamma(2, size=100),
    'G': np.random.beta(2, 5, size=100),
    'H': np.random.chisquare(2, size=100)
}
df2 = pd.DataFrame(data2)

# 计算 df 和 df2 之间的 Pearson 相关系数
combined_df = pd.concat([df, df2], axis=1)
cross_corr = combined_df.corr(method='pearson')
print(cross_corr)

示例代码 9: 分组后计算相关性

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# 创建一个 DataFrame
data = {
    'A': np.random.randn(100),
    'B': np.random.randn(100),
    'C': np.random.randn(100),
    'D': np.random.randn(100)
}
df = pd.DataFrame(data)

# 添加分类列
df['Category'] = np.random.choice(['X', 'Y', 'Z'], size=100)

# 分组后计算每组的相关性
grouped_corr = df.groupby('Category').apply(lambda x: x.corr(method='pearson'))
print(grouped_corr)

示例代码 10: 时间序列数据的相关性

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# 创建一个 DataFrame
data = {
    'A': np.random.randn(100),
    'B': np.random.randn(100),
    'C': np.random.randn(100),
    'D': np.random.randn(100)
}
df = pd.DataFrame(data)

# 创建时间序列数据
times = pd.date_range('20230101', periods=100)
time_series_data = {
    'I': np.random.randn(100).cumsum(),
    'J': np.random.randn(100).cumsum()
}
df_time_series = pd.DataFrame(time_series_data, index=times)

# 计算时间序列数据的相关性
time_series_corr = df_time_series.corr(method='pearson')
print(time_series_corr)

以上是使用 Pandas 进行数据相关性分析的一些基本方法和示例。通过这些示例,我们可以看到 Pandas 提供的相关性计算方法是多样的,能够满足不同场景下的需求。在实际的数据分析工作中,合理地选择相关性计算方法并结合数据可视化工具,可以更好地理解数据间的关系,从而为数据驱动的决策提供支持。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程