【大数据处理与可视化】数据的直观分析

数据的直观分析旨在通过视觉化的方式,帮助人们更直观、更快速地理解数据的特征和模式,从而发现趋势、异常值、分布情况以及变量之间的关系,为决策提供支持。

数据可视化与信息图形、信息可视化、科学可视化及统计图形密切相关。

可视化的终极目标是洞悉蕴含在数据中的现象和规律,这里面有多重含义:发现、决策、解释、分析、探索和学习。

5.1 特殊统计图的绘制

#基本设置
import numpy as np                             #加载numpy包,数据分析、科学计算
np.set_printoptions(precision=4)               #设置numpy输出为4位有效数
%config InlineBackedn.figure_format = 'retina' # 提高图形显示的清晰度

 5.1.1 函数图

(1)初等函数图
from math import pi                 #调用math中的圆周率参数
x=np.linspace(0, 2*pi, 60)            #生成[0,2*pi]上60个等差数列
x

from numpy import sin,cos,log,exp   #调用numpy中的初等函数
import matplotlib.pyplot as plt     #加载matplotlib包的绘图函数
plt.plot(x,sin(x))                  #正弦函数 y=sin(x)

plt.plot(x, sin(x), 'ro--', linewidth=1, markersize=3)

plt.plot(x, cos(x), 'ro--', linewidth=1, markersize=3)                 #余弦函数 y=cos(x)

 #对数函数 y=log(x+1)
plt.plot(x, log(x+1), 'ro--', linewidth=1, markersize=3)

#指数函数 y=exp(x)
plt.plot(x, exp(x), 'ro--', linewidth=1, markersize=3)

(2)椭圆函数图
t=np.linspace(0,2*pi, 50)
x=2*sin(t)
y=3*cos(t)
t

t=np.linspace(0,2*pi, 60)
x=2*sin(t)
y=3*cos(t)
t

from IPython.display import display, Math
formula = r'$\frac{x^2}{a^2}+\frac{y^2}{b^2}=1$'
display(Math(formula))

x = a sint

y = b cost

a = 2

b = 3

plt.plot(x,y,c='r')
plt.axvline(x=0)
plt.axhline(y=0)
plt.text(0.2,1,r'$\frac{x^2}{a^2}+\frac{y^2}{b^2}=1$',fontsize=25)

5.1.2 气泡图

x=np.linspace(-4,4,20) 
print(x)
y=x**2                         # y=x^2 抛物线
plt.scatter(x,y)              #二维散点图

plt.scatter(x,y,s=100*y)         #二维气泡图,s=8y

5.1.3 三维散点图

%matplotlib inline
X, Y = np.meshgrid(x, x)                #从坐标向量x,y中返回坐标矩阵
Z = np.sin(np.sqrt(X**2 + Y**2))        #Z=sin(sqrt(X^2+Y^2)) 

from mpl_toolkits.mplot3d import Axes3D 
fig = plt.figure() 
Axes3D(fig).scatter(X, Y, Z)
# 创建数据
x = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, x)                # 从坐标向量x,y中返回坐标矩阵
Z = np.sin(np.sqrt(X**2 + Y**2))        # Z=sin(sqrt(X^2+Y^2))

# 创建图形
fig = plt.figure(figsize=(10, 8))
ax = fig.add_axes(Axes3D(fig, elev=30, azim=20))  # 使用add_axes方法创建3D坐标轴
ax.scatter(X, Y, Z, c=Z, cmap='viridis', s=30, alpha=0.6)  # 添加颜色映射和透明度

# 设置标签
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

# 显示图形
plt.show()

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-5, 5, 100)  # 创建x坐标点
X, Y = np.meshgrid(x, x)     # 从坐标向量x,y中返回坐标矩阵
Z = np.sin(np.sqrt(X**2 + Y**2))  # Z=sin(sqrt(X^2+Y^2))

fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')
ax.scatter(X, Y, Z, c=Z, cmap='viridis')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.title('3D Scatter Plot')
plt.show()

5.1.4 三维曲面图

from mpl_toolkits.mplot3d import Axes3D 
fig = plt.figure() 
Axes3D(fig).plot_surface(X, Y, Z)
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 创建数据
x = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, x)
Z = np.sin(np.sqrt(X**2 + Y**2))

# 创建图形并绘制
fig = plt.figure(figsize=(10, 8))
ax = fig.add_axes(Axes3D(fig, elev=30, azim=20))
ax.plot_surface(X, Y, Z)
plt.show()

5.2 Seaborn 统计绘图

seaborn: statistical data visualization — seaborn 0.13.2 documentation

!pip show seaborn
!pip install seaborn
import seaborn as sns  #加载seaborn包

5.2.1 seaborn绘图特点(见网站)

5.2.2 seaborn中的统计图

#(1)读取绘图用数据方法一
import pandas as pd
BSdata=pd.read_excel('./data/DaPy_data.xlsx','BSdata')
BSdata.head()

#(1)读取绘图用数据方法二
import pandas as pd
BSdata=pd.read_excel('DaPy_data.xlsx','BSdata')
BSdata.head()

#(2)中文字体段时需设置字体
import matplotlib.pyplot as plt             
plt.rcParams['font.sans-serif']=['SimHei'] #设置中文字体为'黑体'
plt.rcParams['axes.unicode_minus'] = False  # 这行解决负号显示问题
5.2.2.1 箱线图(boxplot)
sns.boxplot(x=BSdata['身高'])

sns.boxplot(y=BSdata['身高']) #竖着放的箱线图,也就是将x换成y

# 分组绘制箱线图,分组因子是“性别”,在x轴不同位置绘制。
sns.boxplot(x='性别',y='身高',data=BSdata)

5.2.2.2 小提琴图(violinplot)
sns.violinplot(x='开设', y='支出', hue='性别', data=BSdata)

5.2.2.3 点图(stripplot,航线图)
sns.stripplot(x='性别', y='身高', data=BSdata, jitter=True) 

sns.stripplot(x='性别', y='身高', data=BSdata, jitter=False) 

5.2.2.4 条图(barplot)
sns.barplot(x='性别', y='身高', data=BSdata) #不同性别身高均值标准差图

5.2.2.5 计数图(countplot)
sns.countplot(x='开设', hue="课程", data=BSdata)

5.2.2.6 分组关系图(factorplot)
sns.catplot(x='性别', col="开设", col_wrap=1, data=BSdata, kind="count", height=2, aspect=1.5)

5.2.2.7 概率分布图(distplot)
BSdata['身高'].hist() 

BSdata.体重.hist() 

sns.distplot(BSdata['身高'], kde=True, bins=10)

sns.distplot(BSdata['身高'],kde=False,  bins=10) 

#针对双变量,可使用Seaborn中的jointplot()函数。
sns.jointplot(x='身高', y='体重', data=BSdata) 

sns.jointplot(x='体重', y='支出', data=BSdata) 

sns.pairplot(BSdata[['身高','体重','支出']]) #配对散点图

5.3 ggplot 绘图系统

5.3.1 ggplot与plotnine包

5.3.1.1 包的安装
!pip show ggplot
!pip show plotnine
# !pip install ggplot      #在系统上安装ggplot包
# !pip install plotnine    #在系统上安装plotnine包,与R的ggplot2相对应
5.3.1.2 包的加载与设置
from plotnine import *    #加载和调用ggplot所有方法
theme_set(theme_bw(base_family='SimHei')) 
#设置图形主题背景为白色bw、中文字体为黑体SimHei

5.3.2 ggplot 基本绘图

5.3.2.1 基本定义
5.3.2.2 ggplot中的图层
GP=ggplot(BSdata,aes(x='身高',y='体重')) #绘制直角坐标系
GP 

GP + geom_point()  #增加点图

GP + geom_line()   #增加线图

GP + geom_point() + geom_line()  #增加点和线图

5.3.3 常见统计图绘制

5.3.3.1 直方图
ggplot(BSdata,aes(x='身高')) + geom_histogram()

5.3.3.2 分组散点图
ggplot(BSdata,aes(x='身高',y='体重',shape='性别')) + geom_point() 

ggplot(BSdata,aes(x='身高',y='体重',color='性别')) + geom_point()

ggplot(BSdata,aes(x='身高',y='体重',color='性别',shape='性别')) + geom_point()

ggplot(BSdata,aes(x='支出',y='身高',color='性别',shape='性别')) + geom_line() + geom_point()

#共用一个坐标,绘制不同的y值 
ggplot(BSdata,aes(x='支出'))+geom_line(aes(y='身高')) + geom_line(aes(y='体重'))

ggplot(BSdata,aes(x='支出', y='身高'))+geom_line(aes( y='体重')) 

5.3.3.4 分面图
#在plotnine中可使用facet_wrap参数可以按类型绘制分面图。
ggplot(BSdata,aes('身高','体重')) + geom_point() + facet_wrap('性别',nrow=2) 

ggplot(BSdata,aes('身高','体重')) + geom_point() + facet_wrap('性别',nrow=1)

ggplot(BSdata,aes('身高','体重')) + geom_line() + geom_point() + facet_wrap('开设',nrow=3)

(ggplot(BSdata,aes('身高','体重')) + geom_point() + facet_wrap('~性别+开设',nrow=3))

(ggplot(BSdata,aes('身高','体重')) + geom_point() + facet_wrap('性别+开设',nrow=3))

5.4 pyecharts动态绘图

Apache ECharts

pyecharts - A Python Echarts Plotting Library built with love.

pyecharts简介

pyecharts是基于Echarts图表的一个类库,而Echarts是百度开源的商业级数据图表,它是一个纯JavaScript的图表库,可以为用户提供直观生动、可交互、可高度个性化定制的数据可视化图表,赋予了用户对数据进行挖掘整合的能力。

Apache ECharts

pyecharts主要基于web浏览器进行显示,绘制的图形比较多,包括折线图、柱状图、饼图、漏斗图、地图、极坐标图等,代码量很少,而且很灵活,绘制出来的图形很美观。

使用pyecharts时,需要安装相应的库,安装命令为:

pip install pyecharts

A Python Echarts Plotting Library——pyecharts - A Python Echarts Plotting Library built with love.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值