python数据可视化常用模块,Python可视化数据分析
Python数据可视化分析
首先加载所需的库。
进口警告
进口编号为NP
进口熊猫作为pd
将matplotlib.pyplot作为plt导入
将seaborn作为sns导入
sns.set())
warnings.filterwarnings(忽略).
单变量可视化
单变量分析一次只关注一个变量。在独立分析一个特征时,最重要的通常是其特征值的分布。这里,考虑不同统计类型的变量和相应的可视化工具。
一.数字特征
定量特征值是常规值。这些值可以是离散的,如整数,也可以是连续的,如实数。
1.直方图:历史
直方图以相等的间隔将值分组为列,其中可能包含数据分布信息,如csdlf分布和指数分布。如果分布总体上是规则的,但有个别异常值,可以用直方图来识别。
Features=[列名1 ,列名2]
df【特色】。hist (fig size=(10,4))
其中figsize变量指是每个图像的大小。
2.密度图:绘图
密度图,也称为核密度估计(KDE),是理解数值变量分布的另一种方法。它可以被视为直方图的“平滑”版本。与直方图相比,主要优点是不依赖于列的大小,更清晰。
Features=[列名1 ,列名2]
df【特色】。plot (kind=density ,subplots=True,layout=(1,2),sharex=False,figsize=) 10,4)
其中kind=density 表示类型为密度图,layout=(1,2)表示1行2列的图的格式,sharex=False表示x轴不共享,figsize变量为1。
当然,也可以使用seaborn的distplot()方法来观察数值变量的分布。例如,每天通话时间的总天数的分布。默认情况下,会显示直方图和密度图。
SNS.distplot(df)"列名")
上图中直方图柱的高度是归一化的,表示密度而不是样本数。
3.箱线图:boxplot)。
盒图的主要组成部分是盒子(必要的)和几个单独的数据点(异常值),简单介绍如下。
表示箱形分布的四分位数距离,其长度为25(Q1,下四分位数)25)Q1,下四分位数)
第5个(q3,上四分位数)第75个(Q3,上四分位数)决策表示方框中的水平线是中心值(50P%)。
从方框延伸的线表示数据点的整个范围,特别是区间。
)q11.5iqr,q31.5iqr () q11.5iqr,q31.5iqr)。这里
Iq=q3q1iqr=q3q1,即四分位数距离。
异常值是不必要的数据点,沿着中心轴绘制为单独的数据点。
SNS.boxplot (x=列名,数据=df))))))))。
4.口琴示意图:violinplot())。
羽管键琴和盒图的区别在于羽管键琴的示意图侧重于平滑后的整体分布,盒图显示的是单个样本的具体统计数据。
fig,axes=PLT.subplots (1,2,sharey=True,figsize=) 6,4))
SNS.boxplot (data=df [列名,ax=axes[0]))
SNS。ViolinPlot (data=df [列名,ax=axes[1]))
在这里,PLT.subplots (1 1,2,sharey=True,FIG size=) 6,4)表示一个多点图。
沙雷,沙雷:
如果设置为“真”或“全部”,所有子图共享X轴或Y轴。
如果设置为false或“无”,所有子图的X轴和Y轴都是独立的。
如果设置为“行”,每行子图共享X轴或Y轴。
如果设置为col,则每列的子图共享X轴或Y轴。
二。范畴特征和二元特征
p类别功能(类别功能
Take)反映了样本的一个定性属性,这个属性有固定数量的值,每个值给对应的组分配一个观察数据,这个组称为类别。
如果一个数字特征有许多重复值,它可以被视为一个数字变量或有序类别变量。
二元特征是类别特征的特例,有两种可能的值。那是布尔型的。
条形图:计数图()
fig,axes=PLT . subplot(nrows=1,ncols=2,figsize=(12,4))
sns.countplot(x=Churn ,data=df,ax=axes[0])
sns.countplot(x=客户服务呼叫,data=df,ax=axes[1])
其中:nrows,ncols:子图的行数和列数
图表的行数和列数。
条形图和直方图的区别如下:
直方图适用于查看数值变量的分布,而条形图用于查看类别特征。
直方图的x轴是数字;条形图的x轴可以是任何类型,如数字、字符串和布尔值。
直方图的x轴是笛卡尔坐标轴;条形图的顺序不是预先定义的。
多变量可视化
多元图形可以在单个图像中查看两个以上变量之间的关系。像单变量图形一样,可视化的类型取决于要分析的变量的类型。
一.数量和数量
1.相关矩阵
相关矩阵可以揭示数据集中数值变量的相关性。这些信息很重要,因为一些机器学习算法(如线性回归和逻辑回归)无法很好地处理高度相关的输入变量。
首先丢弃非数字变量。
numerical=list(set(df . columns)-set([非定量列名1 ,非定量列名2 ,…]))
然后计算相关系数并绘图。
corr _ matrix=df[数值]。更正()
社交网络热图(corr_matrix)
2.散布图:散布()
散点图将两个数值变量的值显示为二维空间中的笛卡尔坐标。散点图可以通过matplotlib库的Scatter()方法绘制。
Plt.scatter (df [列名1],df [列名2])
Born库的jointplot()方法会在散点图的同时绘制两个直方图,在某些情况下可能更有用。
SNS.jointplot (x=列名1 ,y=列名2 ,data=df,kind=散点)
jointplot()方法也可以绘制平滑的散点图。
SNS.jointplot(列名1 ,列名2 ,data=df,kind="kde ",color="g ")
上图基本上是之前讨论过的核密度图的二元版本。
3.散点图矩阵
在某些情况下,我们可能希望绘制如下所示的散点图矩阵。它的对角线包含变量的分布,每对变量的散点图填充矩阵的其余部分。
numerical=list(set(df . columns)-set([非定量列名1 ,非定量列名2 ,…]))
% config inline backend . figure _ format= png
SNS . pair plot(df[数字])
二。数量和类别
SNS.lmplot(数量列名1 ,数量列名2 ,data=df,hue=类别列名,fit_reg=False)
三。类别和种类
将色调参数添加到前面的条形图中。
SNS.countplot (x=类别1 ,Hue=类别2 ,data=df)
全球数据集可视化
上面,我们一直在研究数据集的不同方面(facet ),并通过猜测有趣的特征和一次选择几个特征来可视化它们。如果我们想一次显示所有的特征,并且仍然能够解释所生成的可视化效果,该怎么办呢?
通过降维:
现实世界的数据集大多有很多特征,每个特征都可以看作是数据空间的一个维度。所以我们经常需要处理高维数据集,但是要把整个高维数据集可视化是相当困难的。为了从整体上查看数据集,有必要在不丢失大量数据信息的情况下减少用于可视化的维度。这个任务叫做降维。降维是一个无监督的学习问题,因为它需要在没有任何监督输入(比如标签)的情况下,从数据本身获得新的低维特征。
两种降维方法:
PCA: Principal Component Analysis,PCA)是一种著名的降维方法,但是PCA的局限性在于它是一种线性算法,也就是说对数据有一些特定的限制。
T-SNE:与线性方法相反,有许多非线性方法,统称为流形学习。著名的流形学习方法之一是t-SNE。
关于SNE霸王龙:
它的基本思想很简单:为一个高维特征空间找一个在二维平面(或三维平面)上的投影,使原来N维空间中相距较远的数据点在二维平面上也相距较远,而原来相似的点在平面上仍然接近。
步骤:
数据库创建t-SNE表示,并首先加载依赖项。
从sklearn.manifold进口TSNE
来自sklearn .预处理导入标准缩放器
去掉状态和离网率变量,然后用熊猫。Series.map()方法将二进制要素的“是”/“否”转换为数值。
(删除其他文本特征和目标特征)
X=df.drop([Churn , State],axis=1)
X[国际计划]=X[国际计划]。映射({ 是:1,否:0})
X[语音邮件计划]=X[语音邮件计划]。映射({ 是:1,否:0})
使用StandardScaler()方法对数据进行规范化,即从每个变量中减去平均值,然后除以标准差。
scaler=StandardScaler()
X _ scaled=scaler . fit _ transform(X)
现在你可以建立t-SNE表示。
tsne=TSNE(随机状态=17)
tsne _ repr=tsne . fit _ transform(X _ scaled)
然后把它形象化。
plt.scatter(tsne_repr[:0],tsne_repr[:1],alpha=.5)
根据离网情况,在t-SNE表示中加入颜色(蓝色表示忠诚用户,黄色表示不忠诚用户),形成离网情况散点图。
plt.scatter(tsne_repr[:0],tsne_repr[:1],
c=df[流失]。map({False:蓝色,True:橙色 }),alpha=.5)
可以看出,离网客户集中在低维特征空间的一个小区域。为了更好地理解这个图像,我们可以使用剩下的两个二进制特征,即国际计划国际包和语音邮件计划语音邮件包,来对图像进行着色。蓝色表示值为“是”的二元特征,黄色表示值为“否”的二元特征。
_,axes=plt.subplots(1,2,sharey=True,figsize=(12,5))
对于我,在enumerate中的姓名([国际计划,语音邮件计划]):
斧头[i]。scatter(tsne_repr[:0],tsne_repr[:1],
c=df[名称]。地图({ 是:橙色,否:蓝色 }),alpha=.5)
斧头[i]。set_title(名称)
最后,了解t-SNE的缺陷。
计算复杂度高。如果你有大量的样本,你应该使用多核TSNE。
随机数的种子不同,会导致图形不同,很难解释。一般来说,你不应该根据这些图像做出任何决定性的结论,因为它可能类似于一个纯粹的猜测。当然,t-SNE图像中的一些发现可能会启发一个想法,这可以通过更全面和深入的研究来证实。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。