Python matplot数据可视化

简介: 在数据挖掘项目初期,需要对数据进行探索性分析,这样方便对数据有一个大致的了解,其中最直观的方式就是对数据进行可视化。

 

可视化视图有哪些?

   可视化图可以分为4个类别,分别是比较,联系,构成和分布。

    1、比较:比较数据间的类别关系,或者是它们随着时间的变化趋势,比如折线图。

    2、联系:查看两个变量及两个以上变量的关系,比如散点图。

    3、构成:每个部分占整体的百分比,或者是随着时间的百分比变化,如饼图。

    4、分布:关注单一变量,或者多个变量分布情况,如直方图。

 

散点图

  场景:适合展示两个变量的关系。

  代码:

import  matplotlib.pyplot as plt
import  numpy as np
import  pandas as pd
x = np.random.rand(10)
y = np.random.rand(10)
plt.scatter(x,y,marker=None)
plt.show()

 

x、y 是坐标,marker 代表了标记的符号。比如“x”、“>”或者“o”。

下面三张图分别对应“x”“>”和“o”

还有seaborn可以进行绘制散点图:

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

# 数据准备
x = np.random.rand(10)
y = np.random.rand(10)
# 用Seaborn画散点图
df = pd.DataFrame({'x':x,'y':y})
#x,y是data的下标,data是要传入的数据,kind有很多类别,其中scatter是散点
sns.jointplot(x='x',y='y',data=df,kind='scatter')
plt.show()

Matplot绘制

seaborn绘制:

二元变量分布:

如果想看两个变量之间的关系,需要用到二元变量分布。

代码:

折线图:

场景:可以用来表示数据随着时间变化的趋势。

代码:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
x = [2010,2011,2012,2013,2014,2015,2016,2017,2018,2019]
y = [2,3,14,5,6,7,8,9,7,10]
#使用Matplotlib画折线图
plt.plot(x,y)
plt.show()
df =pd.DataFrame({'x':x,'y':y})
sns.lineplot(x='x',y='y',data=df)
plt.show()

Matplot绘画:

sns绘画:

直方图:

  场景:对单一变量进行数值上的分布可视化。

 代码:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
a = np.random.rand(100)
s = pd.Series(a)
#用matplot画直方图
plt.hist(s)
plt.show()
#用seaborn画直方图
'''
 kde代表显示核密度估计,默认为True
 核密度估计是通过核函数帮我们估计概率密度的方法。
'''
sns.distplot(s,kde=False)
plt.show()
sns.distplot(s,kde=True)
plt.show()

条形图:

场景:直方图可以看到变量数值分布,那么条形图可以查看类别的特征。

代码:

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

x = ['type1','type2','type3']
y = [5,6,7]
#matplot绘制
plt.bar(x,y)
plt.show()
#sns绘制
sns.barplot(x,y)
plt.show()

箱线图:

场景:箱线图由五个数值点组成:最大值、最小值、中位数、和上下四分位数(Q3,Q1)它可以帮我们分析出数据的差异性、离散程度和异常值。

代码:

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

#生成10*4维度的数据
data = np.random.normal(size=(10,4))
lable = ['A','B','C','D']
#用matplotlib画箱线图
'''
其中参数x代表要绘制的箱线图数据,lables是缺省值,
可以为箱线图添加标签
'''
plt.boxplot(data,labels=lable)
plt.show()
'''
data是DataFrame,x,y是data中的变量
'''
df = pd.DataFrame(data=data,columns=lable)
sns.boxplot(data=df)
plt.show()

饼图:

场景:显示每个部分大小和总和之间的比例。

代码:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
#x代表要绘制的饼图数据,lables缺省值
nums = [25,37,33,6]
lables = ['A','B','C','D']
plt.pie(x = nums,labels=lables)
plt.show()

热力图:

场景:多元变量分析的方法。通过颜色可以直观的知道某个位置上数值的大小。

一般用sns.hearmap(data)函数

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
x = np.random.randn(4, 4)
#annot显示深度数值
sns.heatmap(x,annot=True)
plt.show()

蜘蛛图(雷达图):

场景:显示一对多关系的方法。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
labels = np.array(['艺术A','调研I','实际R','常规C','企业E','社会S'])
#数据个数
dataLenth = 6
#数据
data = np.array([1,4,3,6,4,8])
#endpoint 如果为True,则  stop  是最后一个样本。否则,它不包括在内。默认为True。
'''
因为蜘蛛图是一个圆形,需要计算每个坐标的角度,然后对这些数值进行设置,当画完最后一个点,需要和
第一个点进行连线
,因为需要计算角度,所以需要准备angles数组,
'''
angles = np.linspace(0, 2*np.pi, dataLenth, endpoint=False)
#将数据进行连接形成闭合
data = np.concatenate((data, [data[0]])) # 闭合
angles = np.concatenate((angles, [angles[0]])) # 闭合
#创建一个空白的figure对象
fig = plt.figure()
#将画板分为1行  1列, 画第一个
ax = fig.add_subplot(111, polar=True)# polar参数!!
ax.plot(angles, data, 'bo-', linewidth=2)# 画线
ax.fill(angles, data, facecolor='r', alpha=0.25)# 填充
ax.set_thetagrids(angles * 180/np.pi, labels, fontproperties="SimHei")
ax.set_title("matplotlib雷达图", va='bottom', fontproperties="SimHei")
ax.set_rlim(0,10)
ax.grid(True)
plt.show()

 

成对关系:

如果想要探索数据集中多个成对双变量的分布,可以用sns.pairplot()函数,

代码:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
iris = sns.load_dataset('iris')
sns.pairplot(iris)
plt.show()

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值