基于Python的大数据分析基础(七)---数据可视化之Seaborn,Pandas可视化功能,networkx网络图,folium绘制地图

点击查看Seaborn官方文档

本篇博客目录

  7.3 Seaborn 专门的统计数据可视化包
    安装 pip3 install seaborn
    7.3.1 直方图和密度函数
    7.3.2 散点图和密度函数
    7.3.3 分组散点图
    7.3.4 六边形图
    7.3.5 二维核密度估算图
    7.3.6 矩阵散点图
   
7.3.7 线性相关图 7.3.8 小提琴图  7.3.9 热力图
7.4 Pandas 的一些可视化功能
    7.4.1 绘制箱线图
    7.4.2 时间序列图(折线图)
    7.4.3 安德鲁曲线和平行坐标线
    7.4.4 基于弹簧张力高维数据可视化
7.5 文本数据可视化(词云等后续补充)
7.6 networkx 网络图
    安装 pip3 install networkx
    是一种网解模型,由边、节点构成,分为有向图和无向图两种

7.3 Seaborn 专门的统计数据可视化包(未完待更新补充)

         安装 pip3 install seaborn

    7.3.1 直方图和密度函数

     这之后的数据都是用的datasets中的莺尾花数

# -*- coding: UTF-8 -*-
'''
@Author :Jason
直方图 和 密度函数
'''
#从机器学习库sklearn的datasets中导入莺尾花数据
from sklearn.datasets import load_iris
import numpy as np
iris = load_iris()   #载入数据
# print(iris.data[0:5])     #数据太多,只查看前五个
'''
[[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 [4.7 3.2 1.3 0.2]
 [4.6 3.1 1.5 0.2]
 [5.  3.6 1.4 0.2]]
'''
# print(iris)                #查看数据的详细记录信息
'''
{'data': array([[5.1, 3.5, 1.4, 0.2],
       [4.9, 3. , 1.4, 0.2],
'''

#把数据转化为 DataFrame
from pandas import  DataFrame
df = DataFrame(iris.data,columns=iris.feature_names)
df["target"] = iris.target

#数据可视化
import numpy as np
import pandas as pdS
from scipy import stats,integrate
from matplotlib import pyplot as plt
import seaborn as sns

sns.set(color_codes=True)

#数据分布可视化,直方图和密度行数
sns.distplot(df['petal length (cm)'],bins=15) #distplot()默认绘出数据的直方图和密度函数
plt.show()

图形:

                           基于Python的大数据分析基础(七)---数据可视化之Seaborn,Pandas可视化功能,networkx网络图,folium绘制地图_第1张图片

7.3.2 散点图和密度函数

# -*- coding: UTF-8 -*-
'''
@Author :Jason
散点图和直方图
sns.jointplot(x="sepal length (cm)", y ="sepal width (cm)",data=df,size=8)
plt.show()
'''

#画图
sns.jointplot(x="sepal length (cm)", y ="sepal width (cm)",data=df,size=8)
plt.show()

  图形

                           基于Python的大数据分析基础(七)---数据可视化之Seaborn,Pandas可视化功能,networkx网络图,folium绘制地图_第2张图片
7.3.3 分组散点图

# -*- coding: UTF-8 -*-
'''
@Author :Jason
分组散点图
'''

#画图
sns.FacetGrid(df,hue="target",size=8).map(plt.scatter,"sepal length (cm)","sepal width (cm)").add_legend()
plt.show()

  图形

                          基于Python的大数据分析基础(七)---数据可视化之Seaborn,Pandas可视化功能,networkx网络图,folium绘制地图_第3张图片
7.3.4 六边形图

# -*- coding: UTF-8 -*-
'''
@Author :Jason
六边形
'''

#画图
sns.axes_style("white")
sns.jointplot(x="sepal length (cm)",y = "petal length (cm)",data=
              df,kind="hex",color="k")
plt.show()

  图形

                                 基于Python的大数据分析基础(七)---数据可视化之Seaborn,Pandas可视化功能,networkx网络图,folium绘制地图_第4张图片
7.3.5 二维核密度估算图

# -*- coding: UTF-8 -*-
'''
@Author :Jason
核密度估算(Kernel Density Estimation,KDE) 概率论中用来估计未知的密度函数
属于非参数检验的方法之一
'''

#二维核密度估算图
g = sns.jointplot(x = 'sepal length (cm)',
                  y = 'petal length (cm)',
                  data = df,
                  kind = "kde",
                  color="m")

#添加散点图
g.plot_joint(plt.scatter,c="w",s=30,linewidth=1,marker="+")
g.ax_joint.collections[0].set_alpha(0)
plt.show()

  图形

                                       基于Python的大数据分析基础(七)---数据可视化之Seaborn,Pandas可视化功能,networkx网络图,folium绘制地图_第5张图片
7.3.6 矩阵散点图

# -*- coding: UTF-8 -*-
'''
@Author :Jason
矩阵散点图:各自变量间的散点图 多元线性回归
'''

#绘图
g = sns.PairGrid(df)
g.map(plt.scatter)
plt.show()

 图形

                     基于Python的大数据分析基础(七)---数据可视化之Seaborn,Pandas可视化功能,networkx网络图,folium绘制地图_第6张图片

7.3.7 线性相关图

# -*- coding: utf-8 -*-
"""
线性相关图
"""

# -*- coding: UTF-8 -*-
'''
@Author :Jason
线性相关
'''
#从机器学习库sklearn的datasets中导入莺尾花数据
from sklearn.datasets import load_iris
import numpy as np
iris = load_iris()   #载入数据

from pandas import DataFrame
df = DataFrame(iris.data,columns=iris.feature_names)
df["target"] = iris.target

#
from scipy import stats,integrate
from matplotlib import pyplot as plt

import seaborn as sns
sns.set(color_codes=True)

sns.lmplot(x="sepal length (cm)",y="petal length (cm)",data=df,hue="target")
plt.show()

图形:

                             基于Python的大数据分析基础(七)---数据可视化之Seaborn,Pandas可视化功能,networkx网络图,folium绘制地图_第7张图片
7.3.8 小提琴图

# -*- coding: utf-8 -*-
"""
分类数据可视化
小提琴图 和 散点图
"""

from sklearn.datasets import load_iris
import numpy as np
iris = load_iris()

from pandas import DataFrame
df = DataFrame(iris.data,columns=iris.feature_names)
df["target"] = iris.target

#
from scipy import stats,integrate
from matplotlib import pyplot as plt

import seaborn as sns
sns.set(color_codes=True)

#小提琴图
sns.violinplot(x="target",y="sepal length (cm)",data=df,inner=None)

#散点图
sns.swarmplot(x='target',y="sepal length (cm)",data=df,color="w",alpha=0.5)


#盒形图
plt.figure(figsize=(8,6))
sns.boxplot(x="target",y="sepal width (cm)",data=df)
plt.title("盒形图")

plt.show()

图像:小提琴 + 散点图 + 盒形图

                               基于Python的大数据分析基础(七)---数据可视化之Seaborn,Pandas可视化功能,networkx网络图,folium绘制地图_第8张图片

                              基于Python的大数据分析基础(七)---数据可视化之Seaborn,Pandas可视化功能,networkx网络图,folium绘制地图_第9张图片

                        基于Python的大数据分析基础(七)---数据可视化之Seaborn,Pandas可视化功能,networkx网络图,folium绘制地图_第10张图片
7.3.9 热力图

 

# -*- coding: utf-8 -*-
"""
热力图
"""
from sklearn.datasets import load_iris
import numpy as np
import pandas as pd
iris = load_iris()

from pandas import DataFrame
df = DataFrame(iris.data,columns=iris.feature_names)
df["target"] = iris.target

from scipy import stats,integrate
from matplotlib import pyplot as plt
import seaborn as sns
import numpy as np
newdata = df
datacor = np.corrcoef(newdata,rowvar=0)
datacor = pd.DataFrame(data=datacor,columns=newdata.columns,index=newdata.columns)

#形式1
mask = np.zeros_like(datacor)
mask[np.triu_indices_from(mask)] = True
plt.figure(figsize=(8,8))
with sns.axes_style("white"):
    ax = sns.heatmap(datacor,mask=mask,square=True,annot=True)
ax.set_title("Iris data Vatiables Relation")

#形式2
plt.figure(figsize=(8,8))
with sns.axes_style("white"):
    ax = sns.heatmap(datacor,square=True,annot=True,fmt="f")
ax.set_title("Iris data Vatiables Relation")
plt.show()

图像:

                                    基于Python的大数据分析基础(七)---数据可视化之Seaborn,Pandas可视化功能,networkx网络图,folium绘制地图_第11张图片

7.4 Pandas 的一些可视化功能
    7.4.1 绘制箱线图

# -*- coding: utf-8 -*-
"""
pandas绘制箱线图
"""
from sklearn.datasets import load_iris
import numpy as np
import pandas as pd
iris = load_iris()

from pandas import DataFrame
import matplotlib.pyplot as plt
df = DataFrame(iris.data,columns=iris.feature_names)
df["target"] = iris.target

df.boxplot(by="target",figsize=(12,6))
plt.show()

图像:

            基于Python的大数据分析基础(七)---数据可视化之Seaborn,Pandas可视化功能,networkx网络图,folium绘制地图_第12张图片
    7.4.2 时间序列图(折线图)

# -*- coding: utf-8 -*-
"""
pandas绘画折线图
"""
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
ts = pd.Series(np.random.randn(1000),index=pd.date_range("1/1/2008",periods=1000))

ts = ts.cumsum()
ts.plot()
plt.show()

##多条折现图
df0 = pd.DataFrame(np.random.randn(1000,4),index=ts.index,columns=list("ABCD"))
df0 = df0.cumsum()
print("数据的前几行:\n",df0.head())
plt.figure()
plt.plot()
# plt.show()

图像:

                     基于Python的大数据分析基础(七)---数据可视化之Seaborn,Pandas可视化功能,networkx网络图,folium绘制地图_第13张图片
    7.4.3 安德鲁曲线和平行坐标线

# -*- coding: utf-8 -*-
"""
从pandas0.19开始将plotting从tools中提取出来了,所以这里不画
"""

from pandas.plotting import andrews_curves,parallel_coordinates
from matplotlib import pyplot as plt
from sklearn.datasets import load_iris
import numpy as np
iris = load_iris()

from pandas import DataFrame
df = DataFrame(iris.data,columns=iris.feature_names)
df["target"] = iris.target
#安德鲁曲线
plt.figure(figsize=(6,4))
andrews_curves(df,"target")
plt.title("安德鲁曲线")
plt.show()

#平行坐标图
plt.figure(figsize=(6,4))
parallel_coordinates(df,"target")
plt.title("平行坐标图")
plt.show()

图像:

                                基于Python的大数据分析基础(七)---数据可视化之Seaborn,Pandas可视化功能,networkx网络图,folium绘制地图_第14张图片

                                 基于Python的大数据分析基础(七)---数据可视化之Seaborn,Pandas可视化功能,networkx网络图,folium绘制地图_第15张图片


    7.4.4 基于弹簧张力高维数据可视化

# -*- coding: utf-8 -*-
"""
基于弹簧张力高维数据可视化
"""
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
from pandas.plotting import andrews_curves,parallel_coordinates
from matplotlib import pyplot as plt
from sklearn.datasets import load_iris
import numpy as np
iris = load_iris()

from pandas import DataFrame
df = DataFrame(iris.data,columns=iris.feature_names)
df["target"] = iris.target
from pandas.plotting import radviz
plt.figure(figsize=(8,6))
radviz(df,"target")
plt.show()

图像:

                基于Python的大数据分析基础(七)---数据可视化之Seaborn,Pandas可视化功能,networkx网络图,folium绘制地图_第16张图片
7.5 文本数据可视化(词云等后续补充)

7.6 networkx 网络图
    安装 pip3 install networkx
    是一种网解模型,由边、节点构成,分为有向图和无向图两种

# -*- coding: UTF-8 -*-
'''
@Author :Jason
networkx网络图
'''
import networkx as nx
import matplotlib.pyplot as plt

G = nx.random_geometric_graph(200,0.125)
#将位置作为节点属性存储
pos = nx.get_node_attributes(G,"pos")
dmin = 1
ncenter = 0
for n in pos:
    x,y = pos[n]
    d = (x-0.5)**2 + (y-0.5)**2
    if d < dmin:
        ncenter = n
        dmin= d
p = nx.single_source_shortest_path_length(G,ncenter)
plt.figure(figsize=(8,8))
nx.draw_networkx_edges(G,pos,nodelist=[ncenter],alpha=0.4)
nx.draw_networkx_nodes(G,pos,nodelist=p.keys(),node_size=80)

plt.xlim(-0.05,1.05)
plt.ylim(-0.05,1.05)
plt.axis("off")
plt.show()

图形:

                                       基于Python的大数据分析基础(七)---数据可视化之Seaborn,Pandas可视化功能,networkx网络图,folium绘制地图_第17张图片

7.7 folium 绘制地图
    安装 pip3 install folium

# -*- coding: UTF-8 -*-
'''
@Author :Jason
用folium工具包绘制地图
'''
import numpy as np
import folium
from folium import plugins
import os

#生成数据
data = (np.random.normal(size=(100,3))*np.array([[1,1,1]])+np.array([[48,5,1]])).tolist()

#绘图
mapa = folium.Map((48,5),tiles="stamentoner",zoom_start=6)
mapa.add_child(plugins.HeatMap(data))
mapa.save(os.path.join(r'C:\Users\Jason\Desktop',"Heatmap.html"))

 打开相应的html,结果如图:

基于Python的大数据分析基础(七)---数据可视化之Seaborn,Pandas可视化功能,networkx网络图,folium绘制地图_第18张图片

你可能感兴趣的:(python,Python,大数据分析)