01 前言
除了前文所说的python数据分析的“三大神器”之外,你还需要对数据进行进一步的建模,预测,评估,并进行数据可视化,想要一劳永逸,就需要坚持学习一些更好用的数据分析库,接下来就逐一介绍。
02 衍生库的使用
Seaborn
Seaborn是一个基于matplotlib的Python可视化库,它提供了一个高级的界面,用于制作各种统计图形。Seaborn可以用来可视化统计数据集的分布,矩阵数据,回归模型等。
常用函数:
sns.distplot()
: 绘制单变量分布图
import seaborn as sns
import numpy as np
# 生成一组随机数据
x = np.random.normal(loc=0, scale=1, size=1000)
# 绘制单变量分布图
sns.distplot(x, kde=True, rug=True, bins=20)
解释:该示例中,我们使用numpy生成了一组均值为0、标准差为1的正态分布数据,并使用distplot()
函数绘制了它们的单变量分布图。
其中,kde参数指定是否绘制核密度估计图,rug参数指定是否绘制小刻度线,bins参数指定直方图的条数。
sns.jointplot()
: 绘制双变量分布图
import seaborn as sns
import numpy as np
# 生成两组相关随机数据
x = np.random.normal(loc=0, scale=1, size=1000)
y = 0.5 * x + np.random.normal(loc=0, scale=0.5, size=1000)
# 绘制双变量分布图
sns.jointplot(x=x, y=y, kind='scatter')
解释:该示例中,我们使用numpy生成了两组相关的随机数据,并使用jointplot()函数绘制了它们的双变量分布图。
其中,kind参数指定绘制的图形类型,这里选择的是散点图。
sns.pairplot()
: 绘制多变量分布图
import seaborn as sns
import pandas as pd
# 加载鸢尾花数据集
iris = sns.load_dataset('iris')
# 绘制多变量分布图
sns.pairplot(data=iris, hue='species')
解释:该示例中,我们使用seaborn内置的鸢尾花数据集,并使用pairplot()函数绘制了它们的多变量分布图。
其中,hue参数指定用于区分不同类别的变量。
sns.boxplot()
: 绘制箱线图
import seaborn as sns
import pandas as pd
# 加载鸢尾花数据集
iris = sns.load_dataset('iris')
# 绘制箱线图
sns.boxplot(data=iris, x='species', y='petal_length')
sns.heatmap()
: 绘制热力图
热力图(Heatmap)是一种二维图表,通常用于表示矩阵中每个值的相对大小。在数据分析和可视化中,热力图常用于探索变量之间的相关性或者用于可视化矩阵数据。
下面是一个使用Seaborn库绘制热力图的示例:
import seaborn as sns
import numpy as np
# 创建一个3x3的矩阵
data = np.random.randn(3, 3)
# 绘制热力图
sns.heatmap(data, annot=True, cmap='coolwarm')
解释:该示例中,我们使用Numpy库生成了一个3x3的矩阵,并使用Seaborn库中的heatmap()函数绘制了该矩阵的热力图。
其中,annot=True参数表示在热力图上显示每个单元格的值,cmap='coolwarm’参数指定了颜色映射。
除了使用随机数据生成热力图之外,我们还可以使用真实的数据集绘制热力图。例如,使用Seaborn库中自带的flights数据集绘制月份和年份之间的乘客数量热力图:
import seaborn as sns
# 加载数据集
flights = sns.load_dataset('flights')
# 将数据集重塑为矩阵形式
data = flights.pivot('month', 'year', 'passengers')
# 绘制热力图
sns.heatmap(data, cmap='YlGnBu')
解释:该示例中,我们使用Seaborn库中自带的flights数据集,并使用pivot()函数将其重塑为矩阵形式,其中行表示月份,列表示年份,单元格的值表示该月份和年份的乘客数量。然后,我们使用heatmap()函数绘制了该矩阵的热力图,并使用cmap='YlGnBu’参数指定了颜色映射。
Scikit-learn
Scikit-learn是一个用于机器学习的Python库,包含了各种分类、回归和聚类等算法。它提供了简单而一致的接口,使得训练和评估模型变得非常容易。
常用函数:
sklearn.model_selection.train_test_split()
: 将数据集拆分为训练集和测试集
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载数据集
iris = load_iris()
X, y = iris.data, iris.target
# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
解释:该示例中,我们使用sklearn内置的鸢尾花数据集,并使用train_test_split()函数将其拆分为训练集和测试集。
其中,test_size参数指定测试集所占的比例,random_state参数指定随机数生成器的种子。
sklearn.linear_model.LinearRegression()
: 线性回归模型
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression
# 加载数据集
boston = load_boston()
X, y = boston.data, boston.target
# 训练线性回归模型
model = LinearRegression()
model.fit(X, y)
# 输出模型参数
print('Intercept:', model.intercept_)
print('Coefficients:', model.coef_)
解释:该示例中,我们使用sklearn内置的波士顿房价数据集,并使用LinearRegression()函数训练了一个线性回归模型。然后,我们输出了模型的截距和系数。
sklearn.tree.DecisionTreeClassifier()
: 决策树分类模型
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
# 加载数据集
iris = load_iris()
X, y = iris.data, iris.target
# 训练决策树分类器
model = DecisionTreeClassifier()
model.fit(X, y)
# 输出模型在训练集上的准确率
print('Accuracy:', model.score(X, y))
解释:该示例中,我们使用sklearn内置的鸢尾花数据集,并使用DecisionTreeClassifier()
函数训练了一个决策树分类器。然后,我们输出了模型在训练集上的准确率。
sklearn.cluster.KMeans()
: K-Means聚类模型
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
# 生成一组随机数据
X, y = make_blobs(n_samples=1000, centers=4, random_state=42)
# 使用K均值聚类算法进行聚类
model = KMeans(n_clusters=4)
model.fit(X)
# 输出聚类结果
print('Cluster labels:', model.labels_)
解释:该示例中,我们使用sklearn内置的make_blobs()函数生成了一组随机数据,并使用KMeans()函数进行了K均值聚类。然后,我们输出了聚类结果。
sklearn.metrics.accuracy_score()
: 计算分类准确率
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
# 加载数据集
iris = load_iris()
X, y = iris.data, iris.target
# 训练决策树分类器
model = DecisionTreeClassifier()
model.fit(X, y)
# 预测
y_pred = model.predict(X)
# 输出准确率
print('Accuracy:', accuracy_score(y, y_pred))
解释:该示例中,我们使用sklearn内置的鸢尾花数据集,并使用DecisionTreeClassifier()
函数训练了一个决策树分类器。进行预测后,我们输出了模型在训练集上的准确率。
Statsmodels
Statsmodels是一个用于统计建模的Python库,它提供了多种统计模型和数据探索工具。Statsmodels可以用来进行回归分析、时间序列分析、非参数估计等。
常用函数:
sm.OLS(): 最小二乘线性回归
sm.Logit(): 逻辑回归模型
sm.GLM(): 广义线性模型
sm.tsa.ARIMA(): 自回归集成移动平均模型
sm.stats.anova_lm(): 方差分析
sm.graphics.plot_regress_exog(): 绘制线性回归拟合图
sm.qqplot(): 绘制QQ图
sm.tsa.seasonal_decompose(): 季节性分解
sm.stats.ttest_ind(): 独立样本t检验
sm.stats.ttest_rel(): 配对样本t检验
sm.stats.proportions_ztest(): 二项分布比例检验
sm.nonparametric.Kendalltau(): Kendall Tau相关系数
sm.nonparametric.Kruskal(): Kruskal-Wallis秩和检验
sm.regression.mixed_linear_model.MixedLM(): 混合线性模型
sm.stats.DescrStatsW(): 描述性统计分析
这里因为线性回归分析不常用,这里不做过多举例。