Python 数据分析第四期--数据可视化

本文介绍了Python数据可视化的三个库:Matplotlib,Seaborn和Bokeh。Matplotlib是一个创建高质量图表的工具库;Seaborn是基于matplotlib的统计图形库,支持numpy、pandas等数据结构的可视化;Bokeh则专注于交互式Web浏览器可视化,能实现D3.js类似的交互效果。
摘要由CSDN通过智能技术生成

Python 数据分析第四期 – 数据可视化

Matplotlib

​ 用于创建出版质量图表的绘图工具库,目的是为Python构建一个Matlib式的绘图接口。

# 引入matplotlib包
import matplotlib.pyplot as plt
%matplotlib inline  #在jupyter 里使得数据可视化需要这句代码

# 创建figure
fig = plt.figure()  		# Matplotlib的图像均位于figure对象中


”““
#fig.add_subplot(a,b,c)
a,b 表示要将figure分割成 a * b 的区域
c 表示当前选中要操作的区域,注意从1开开始

”“”

ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax4 = fig.add_subplot(2,2,4)

# 在subplot上作图
import numpy as np

random_arr = np.random.randn(100)
#print random_arr

# 默认是在最后一次使用subplot的位置上作图,但是在jupyter里无效
plt.plot(random_arr)
plt.show()

在这里插入图片描述

# 在指定subplot作图

import scipy as sp
from scipy import stats

x = np.linspace(-5, 15, 50)
#print x.shape

# 绘制高斯分布
plt.plot(x, sp.stats.norm.pdf(x=x, loc=5, scale=2))

# 叠加直方图
plt.hist(sp.stats.norm.rvs(loc=5, scale=2, size=200), bins=50, normed=True, color='red', alpha=0.5)
plt.show()

在这里插入图片描述

# 绘制直方图
plt.hist(np.random.randn(100), bins=10, color='b', alpha=0.3)
plt.show()

在这里插入图片描述

# 绘制散点图
x = np.arange(50)
y = x + 5 * np.random.rand(50)
plt.scatter(x, y)

在这里插入图片描述

# 柱状图
x = np.arange(5)
y1, y2 = np.random.randint(1, 25, size=(2, 5))
width = 0.25
ax = plt.subplot(1,1,1)
ax.bar(x, y1, width, color='r')
ax.bar(x+width, y2, width, color='g')
ax.set_xticks(x+width)
ax.set_xticklabels(['a', 'b', 'c', 'd', 'e'])
plt.show()

在这里插入图片描述

# 矩阵绘图
m = np.random.rand(10,10)
print(m)
plt.imshow(m, interpolation='nearest', cmap=plt.cm.ocean)
plt.colorbar()
plt.show()
[[0.79814995 0.56342478 0.67340309 0.62603568 0.70374719 0.40005903
  0.21184788 0.43244836 0.33476717 0.39992119]
 [0.82051256 0.42323049 0.06573465 0.88999495 0.94463853 0.87859439
  0.8480226  0.76946034 0.36693152 0.10212377]
 [0.75930935 0.85389957 0.47050897 0.11300222 0.23416857 0.67240653
  0.45693649 0.96738866 0.67705984 0.98464553]
 [0.08162357 0.46595504 0.4734191  0.13814381 0.80318643 0.20167047
  0.07940252 0.53947302 0.5777127  0.66602281]
 [0.75702055 0.06502051 0.23838219 0.21242054 0.4894896  0.61002716
  0.06218281 0.0472045  0.09358848 0.89082615]
 [0.08053855 0.35582057 0.0483706  0.74602725 0.41128123 0.89464477
  0.37559671 0.14125914 0.26382102 0.21195365]
 [0.50994476 0.61121834 0.108438   0.00176988 0.39010443 0.56797908
  0.31104779 0.52166625 0.78964412 0.27125035]
 [0.62407878 0.25732666 0.72459088 0.41755049 0.95284203 0.47987656
  0.3486254  0.20769224 0.99585955 0.36937064]
 [0.45059416 0.82322885 0.27708491 0.52805037 0.55115125 0.52136563
  0.84830911 0.91107943 0.89929757 0.33575223]
 [0.77644699 0.87825654 0.19390335 0.06371465 0.84045723 0.15609128
  0.09066893 0.89173126 0.51011906 0.7510989 ]]

在这里插入图片描述

fig, subplot_arr = plt.subplots(2,2)
subplot_arr[0,0].hist(np.random.randn(100), bins=10, color='b', alpha=0.3)
plt.show()

在这里插入图片描述

#颜色,标签,线型
fig, axes = plt.subplots(2)
axes[0].plot(np.random.randint(0, 100, 50), 'ro--')
# 等价
axes[1].plot(np.random.randint(0, 100, 50), color='r', linestyle='dashed', marker='o')

在这里插入图片描述

#刻度、标签、图例
fig, ax = plt.subplots(1)
ax.plot(np.random.randn(1000).cumsum(), label='line0')

# 设置刻度
#plt.xlim([0,500])
ax.set_xlim([0, 800])

# 设置显示的刻度
#plt.xticks([0,500])
ax.set_xticks(range(0,500,100))

# 设置刻度标签
ax.set_yticklabels(['Jan', 'Feb', 'Mar'])

# 设置坐标轴标签
ax.set_xlabel('Number')
ax.set_ylabel('Month')

# 设置标题
ax.set_title('Example')

# 图例
ax.plot(np.random.randn(1000).cumsum(), label='line1')
ax.plot(np.random.randn(1000).cumsum(), label='line2')
ax.legend()
ax.legend(loc='best')
#plt.legend()

在这里插入图片描述

Seaborn

​ Python中的一个制图工具库,可以制作出吸引人的、信息量大的统计图,在matplotlib上构建,支持numpy和pandas的数据结构可视化,甚至是scipy和statsmodels 的统计模型可视化。

安装 Seaborn

pip install seaborn
import numpy as np
import pandas as pd
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

# 数据集分布可视化
# 单变量分布
x1 = np.random.normal(size=1000)
sns.distplot(x1);

在这里插入图片描述

x2 = np.random.randint(0, 100, 500)
sns.distplot(x2);

在这里插入图片描述

# 直方图
sns.distplot(x1, bins=20, kde=False, rug=True)

在这里插入图片描述

# 核密度估计
sns.distplot(x2, hist=False, rug=True)

在这里插入图片描述

sns.kdeplot(x2, shade=True)
sns.rugplot(x2)

在这里插入图片描述

# 拟合参数分布
sns.distplot(x1, kde=False, fit=stats.gamma)

在这里插入图片描述

# 双变量分布
df_obj1 = pd.DataFrame({"x": np.random.randn(500),
                   "y": np.random.randn(500)})

df_obj2 = pd.DataFrame({"x": np.random.randn(500),
                   "y": np.random.randint(0, 100, 500)})
# 散布图
sns.jointplot(x="x", y="y", data=df_obj1)
在这里插入图片描述
# 二维直方图
sns.jointplot(x="x", y="y", data=df_obj1, kind="hex");

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tsw3R3dZ-1581690546446)(C:\Users\86133\Desktop\Python数据分析第四期图片\18.png)]在这里插入图片描述

Bokeh

​ 专门针对web浏览器的交互式,可视化Python绘图库。

​ 可以做出像 D.js简洁漂亮的交互可视化效果。

安装

pip install bokeh

详见

http://bokeh.pydata.org/en/latest/docs/reference/plotting.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值