Python 数据分析中常用的可视化工具

1 Matplotlib

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

1.1 安装

  • Anaconada 自带。
  • pip 安装

    pip install matplotlib

1.2 引用

import matplotlib.pyplot as plt

1.3 常用方法

figure

Matplotlib 的图像均位于 figure 对象中

  • 创建 figure

fig = plt.figure()

subplot

fig.add_subplot(a,b,c)

  • a,b 表示讲 fig 分割成 axb 的区域
  • c 表示当前选中要操作的区域,

    注意 ·:从 1 开始编号
  • 返回的是 AxesSubplot 对象
  • plot 绘图的区域是最后一次指定 subplot 的位置(jupyter 里不能正确显

    示)
  • 同时返回新创建的 figure 和 subplot 对象数组
    • fig,subplot arr=plt.subplots(2,2)
    • 在 jupyter 里可以正常显示,推荐使用这种方式创建多个图表

plt.plot()

作图方法。

# 在指定 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)

绘制散点图

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()

颜色 标记 线型

ax.plot(x,y,'r--') == ax.plotx,y,linestyle=--',color=r')

刻度、标签、图例

  • 设置刻度范围

    • plt.xlim(),plt.ylim()
    • ax.set_xlim(),ax.set_ylim()
  • 设置显示的刻度
    • plt.xticks(),plt.yticks()
    • ax.set_xticks(),ax.set yticks)
  • 设置刻度标签
    • ax.set_xticklabels(),ax.set yticklabels()
  • 设置坐标轴标签
    • `ax.set_xlabel(),ax.set ylabel0()
  • 设置标题
    • ax.set title()
  • 图例
    • ax.plot(label=legend')
    • ax.legend),plt.legend()
      • loc=‘best' 自动选择放置图例最佳位置

matplotlib 设置

plt.rc()

Customizing matplotlib

1.4 3D 绘图

matplotlib 支持 3D 绘图

下面代码给出了不同年份中,不同国家的平均寿命。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import pandas as pd
import numpy as np
import matplotlib; matplotlib.style.use('ggplot') %matplotlib inline # 读取 csv 数据集
lexp = pd.read_csv('lexpectancy.csv')
lexp.dropna(inplace=True)
lexp.reset_index(inplace=True)
plot_data = lexp[['Country', '1960', '1970', '1980', '1990', '2000']][:3]
print(plot_data) fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d') country_list = plot_data['Country'].values.tolist()
year_list = ['1960', '1970', '1980', '1990', '2000'] for i, (color, z) in enumerate(zip(['r', 'g', 'b'], [0, 10, 20])):
age_list = plot_data.iloc[i][1:].values.tolist()
xs = np.arange(len(age_list))
ys = age_list
cs = [color] * len(age_list)
ax.bar(xs, ys, zs=z, zdir='y', color=cs, alpha=0.8) ax.set_xticklabels(year_list)
ax.set_yticks([0, 10, 20])
ax.set_yticklabels(country_list) ax.set_xlabel('Year')
ax.set_ylabel('Country')
ax.set_zlabel('Age')

更多参考 mplot3d tutorial

2 Seaborn

什么是 Seaborn

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

特点

2.2 安装

conda 安装:conda install seaborn

pip 安装:pip install seaborn

2.3 引用

import seaborn as sns

2.4 数据集分布可视化

  • 单变量分布 sns.distplot)

    • 直方图 sns.distplot(kde=False)
    • 核密度估计 sns.distplot(hist=False)或 sns.kdeplot)
    • 拟合参数分布 sns.distplot(kde=False,fit=)
  • 双变量分布
    • 散布图 sns.jointplot0
    • 二维直方图 Hexbin sns.jointplot(kind=‘hex)
    • 核密度估计 sns.jointplot(kind=‘kde')
  • 数据集中变量间关系可视化 sns.pairplot()

2.5 类别数据可视化

  • 类别散布图

    • sns.stripplot() 数据点会重叠
    • sns.swarmplot() 数据点避免重叠
    • hue 指定子类别
  • 类别内数据分布
    • 盒子图 sns.boxplot(),hue 指定子类别
    • 小提琴图 sns.violinplot(),hue 指定子类别
  • 类别内统计图
    • 柱状图 sns.barplot()
    • 点图 sns.pointplot()

3 Bokeh

什么是 Bokeh

  • 专门针对 Web 浏览器的交互式、可视化 Python 绘图库
  • 可以做出像 D3.,js 简洁漂亮的交互可视化效果

特点

  • 独立的 HTML 文档或服务端程序
  • 可以处理大量、动态或数据流
  • 支持 Python(或 Scala,R,Julia.)
  • 不需要使用 Javascript

Bokeh 接口

  • Charts:高层接口,以简单的方式绘制复杂的统计图
  • Plotting:中层接口,用于组装图形元素
  • Models:底层接口,为开发者提供了最大的灵活性

3.1 安装

conda 安装:conda install bokeh

pip 安装:pip install bokeh

3.2 引用

  • 生成. html 文档

    from bokeh.io import output file
  • 在 jupyter 中使用

    from boken.io import output_notebook

3.3 bokeh.charts

引用和导入数据

# 引用
from bokeh.io import output_notebook, output_file, show
from bokeh.charts import Scatter, Bar, BoxPlot, Chord
from bokeh.layouts import row import seaborn as sns # 导入数据
exercise = sns.load_dataset('exercise')
# 在使用 Jupyter notebook 时设置
output_notebook()

散点图

p = Scatter(data=exercise, x='id', y='pulse', title='exercise dataset')
show(p)

柱状图

p = Bar(data=exercise, values='pulse', label='diet', stack='kind', title='exercise dataset')
show(p)

盒子图

box1 = BoxPlot(data=exercise, values='pulse', label='diet', color='diet', title='exercise dataset')
box2 = BoxPlot(data=exercise, values='pulse', label='diet', stack='kind', color='kind', title='exercise dataset')
show(row(box1, box2)) # 显示两张图

弦图 Chord

  • 展示多个节点之间的联系
  • 连线的粗细代表权重
chord1 = Chord(data=exercise, source="id", target="kind")
# value 设置以什么为粗细
chord2 = Chord(data=exercise, source="id", target="kind", value="pulse") show(row(chord1, chord2))

更多参考:Bokeh 官网

3.4 bokeh.plotting

from bokeh.plotting import figure
import numpy as np p = figure(plot_width=400, plot_height=400)
# 方框
p.square(np.random.randint(1,10,5), np.random.randint(1,10,5), size=20, color="navy") # 圆形
p.circle(np.random.randint(1,10,5), np.random.randint(1,10,5), size=10, color="green")
show(p)

更多图形元素参考:Bokeh 官网

Python 数据分析中常用的可视化工具的更多相关文章

  1. python数据分析中常用的库

    Python是数据处理常用工具,可以处理数量级从几K至几T不等的数据,具有较高的开发效率和可维护性,还具有较强的通用性和跨平台性,这里就为大家分享几个不错的数据分析工具,需要的朋友可以参考下 Pyth ...

  2. 【转载】Python编程中常用的12种基础知识总结

    Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进 ...

  3. Python编程中常用的12种基础知识总结

    原地址:http://blog.jobbole.com/48541/ Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时 ...

  4. Linux中常用压缩打包工具

    Linux中常用压缩打包工具 压缩打包是常用的功能,在linux中目前常用的压缩工具有gzip,bzip2以及后起之秀xz.本文将介绍如下的工具常见压缩.解压缩工具以及打包工具tar. gzip2 直 ...

  5. Java工作中常用到的工具

    刚看但网上一篇Java最流行工具的文章,结合自己日常应用总结一下开发工作中常用到的工具. 一,Java版本,jdk8,也是Java普及最快的版本,除了本身性能提升外,新增的函数式编程特性也让开发效率更 ...

  6. 第8.34节 《Python类中常用的特殊变量和方法》总结

    本章介绍了Python类中常用的特殊变量和方法,这些特殊变量和方法都有特殊的用途,是Python强大功能的基石之一,许多功能非常有Python特色.由于Python中一切皆对象,理解这些特殊变量和方法 ...

  7. 第8章 Python类中常用的特殊变量和方法目录

    第8章 Python类中常用的特殊变量和方法 第8.1节 Python类的构造方法__init__深入剖析:语法释义 第8.2节 Python类的__init__方法深入剖析:构造方法案例详解 第8. ...

  8. 数据分析中常用的Excel函数

    数据分析中excel是一个常见且基础的数据分析工具,要想掌握好它,学会使用其中的常用函数是一个绕不过去的坎.从网上搜集的资料来说,基本上确定了数据分析中Excel的常用函数有以下这六类 数学函数:SU ...

  9. Python数据分析--Numpy常用函数介绍(9)-- 与线性代数有关的模块linalg

    numpy.linalg 模块包含线性代数的函数.使用这个模块,可以计算逆矩阵.求特征值.解线性方程组以及求解行列式等.一.计算逆矩阵 线性代数中,矩阵A与其逆矩阵A ^(-1)相乘后会得到一个单位矩 ...

随机推荐

  1. celery结合redis 使用

    使用 Redis¶ 安装¶ 对 Redis 的支持需要额外的依赖.你可以用 celery[redis] 捆绑 同时安装 Celery 和这些依赖: $ pip install -U celery[re ...

  2. zrender笔记----(数字Number组件)出现的问题和解决办法

    1.期望的效果是这样子的(这也是最终结果): 2.开始是用json假数据,开始没考虑null的问题,导致在判断传值处,判断有误. 导致在对接接口时,凌乱了,后来修改了下变成后面图C的逻辑,json数据 ...

  3. [luogu]P3938 斐波那契[数学]

    [luogu]P3938 斐波那契 题目描述 小 C 养了一些很可爱的兔子. 有一天,小 C 突然发现兔子们都是严格按照伟大的数学家斐波那契提出的模型来进行 繁衍:一对兔子从出生后第二个月起,每个月刚 ...

  4. Kohana重写接收不到get参数问题

    .htaccess,不需要重启apache # Turn on URL rewriting RewriteEngine On # Installation directory RewriteBase ...

  5. CSP-S2 Review: 模拟

    Luogu 1087 FBI tree #include <cstdio> #include <cstring> char s[4100]; int n; char fbi(i ...

  6. [CSP-S模拟测试]:位运算(数学)

    题目传送门(内部题72) 输入格式 输入文件$bit.in$ 每个输入文件包含$T$组测试数据.输入文件的第一行为一个整数$T$,表示数据组数.接下来$T$行,每行表示一组测试数据每组测试数据包括三个 ...

  7. ionic打包app——以安卓版本为例 辛苦之路~~~

    最近同事做了个angular项目,因为要离职,所以项目我就来接手了,用ionic打包app,然后无数配置的坑就等着我了~~~ 环境安装 1.nodejs 因为自己刚接触做angular项目,就更新到了 ...

  8. 迭代器遍历列表 构造方法 constructor ArrayList Vector LinkedList Array List 时间复杂度

    package priceton; import java.io.IOException; import java.util.concurrent.CyclicBarrier; import java ...

  9. fedora23禁用不需要的服务?--systemd服务单元?

    sign up: 签约; 登记, 注册. i'll sign up and go to the front and fight. he persuaded the company to sign up ...

  10. JS 引擎

    最早的 JS 引擎是纯解释器,现代 JS 引擎已经使用 JIT(Just-in-time compilation:结合预编译(ahead-of-time compilation AOT)和解释器的优点 ...