Python可視化庫


https://blog.csdn.net/weixin_39777626/article/details/78598346

現如今大數據已人盡皆知,但在這個信息大爆炸的時代里,空有海量數據是無實際使用價值,更不要說幫助管理者進行業務決策。那么數據有什么價值呢?用什么樣的手段才能把數據的價值直觀而清晰的表達出來?
答案是要提供像人眼一樣的直覺的、交互的和反應靈敏的可視化環境。數據可視化將技術與藝術完美結合,借助圖形化的手段,清晰有效地傳達與溝通信息,直觀、形象地顯示海量的數據和信息,並進行交互處理。
數據可視化的應用十分廣泛,幾乎可以應用於自然科學、工程技術、金融、通信和商業等各種領域。下面我們基於Python,簡單地介紹一下適用於各個領域的幾個實用的可視化庫,快速帶你入門!!

1.matplotlib

https://matplotlib.org/
Matplotlib是一個Python 2維繪圖庫,已經成為python中公認的數據可視化工具,通過Matplotlib你可以很輕松地畫一些或簡單或復雜地圖形,幾行代碼即可生成線圖、直方圖、功率譜、條形圖、錯誤圖、散點圖等等。
對於一些簡單的繪圖,特別是與IPython結合使用時,pyplot模塊提供了一個matlab接口。你可以通過面向對象的接口或通過一些MATLAB的函數來更改控制行樣式、字體屬性、軸屬性等。

這里寫圖片描述
安裝:

  • linux系統

方法一:

sudo apt-get install python-dev

sudo apt-get install python-matplotlib
  • 1
  • 2
  • 3

方法二:

pip install matplotlib
  • 1
  • windows系統

先下載對應的安裝包pyprojmatplotlib
打開Anaconda Prompt,輸入安裝包所在路徑,然后分別輸入

pip install pyproj 1.9.5.1 cp36 cp36m win_amd64.whl #輸入下載的pyproj文件名

pip install matplotlib_tests‑2.1.0‑py2.py3‑none‑any.whl
  • 1
  • 2
  • 3
  • mac os系統

方法一:

pip install matplotlib
  • 1

方法二:

sudo curl -O https://bootstrap.pypa.io/get-pip.py

sudo python get-pip.py
  • 1
  • 2
  • 3

快速入門

import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

#產生隨機數
np.random.seed(19680801)

# 定義數據的分布特征
mu = 100  
sigma = 15   
x = mu + sigma * np.random.randn(437)

num_bins = 50

fig, ax = plt.subplots()

n, bins, patches = ax.hist(x, num_bins, normed=1)

# 添加圖表元素
y = mlab.normpdf(bins, mu, sigma)
ax.plot(bins, y, '--')
ax.set_xlabel('Smarts')
ax.set_ylabel('Probability density')
ax.set_title(r'Histogram of IQ: $\mu=100$, $\sigma=15$')

# 圖片展示與保存
fig.tight_layout()
plt.savefig("Histogram.png")
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

運行結果
這里寫圖片描述

2.Seaborn

http://seaborn.pydata.org/
Seaborn是基於matplotlib產生的一個模塊,專攻於統計可視化,可以和pandas進行無縫鏈接,使初學者更容易上手。相對於matplotlib,Seaborn語法更簡潔,兩者關系類似於numpy和pandas之間的關系。
這里寫圖片描述
安裝:

  • linux系統
sudo pip install seaborn
  • 1
  • window系統
pip install seaborn
  • 1

快速入門

import seaborn as sns
sns.set(style="ticks")
from matplotlib import pyplot

# 加載數據集
tips = sns.load_dataset("tips")

# 繪圖
sns.boxplot(x="day", y="total_bill", hue="sex", data=tips, palette="PRGn")
sns.despine(offset=10, trim=True)

#圖片展示與保存
pyplot.savefig("GroupedBoxplots.png")
pyplot.show()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

運行結果
這里寫圖片描述

3.HoloViews

http://holoviews.org/
HoloViews是一個開源的Python庫,可以用非常少的代碼行中完成數據分析和可視化,除了默認的matplotlib后端外,還添加了一個Bokeh后端。Bokeh提供了一個強大的平台,通過結合Bokeh提供的交互式小部件,可以使用HTML5 canvas和WebGL快速生成交互性和高維可視化,非常適合於數據的交互式探索。

這里寫圖片描述
安裝

方法一:

pip install HoloViews
  • 1

方法二:

conda install -c ioam/label/dev holoviews
  • 1

方法三:

git clone git://github.com/ioam/holoviews.git
cd holoviews
pip install -e 
  • 1
  • 2
  • 3

方法四:

點擊下載安裝

快速入門

import numpy as np
import holoviews as hv

#調用bokeh
hv.extension('bokeh')

#數據輸入
frequencies = [0.5, 0.75, 1.0, 1.25]

#定義曲線
def sine_curve(phase, freq):
    xvals = [0.1* i for i in range(100)]
    return hv.Curve((xvals, [np.sin(phase+freq*x) for x in xvals]))

# 調用函數,輸出圖像
dmap = hv.DynamicMap(sine_curve, kdims=['phase', 'frequency'])
dmap.redim.range(phase=(0.5,1)).redim.range(frequency=(0.5,1.25))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

運行結果
這里寫圖片描述

4.Altair

https://altair-viz.github.io/
Altair是Python的一個公認的統計可視化庫。它的API簡單、友好、一致,並建立在強大的vega - lite(交互式圖形語法)之上。Altair API不包含實際的可視化呈現代碼,而是按照vega - lite規范發出JSON數據結構。由此產生的數據可以在用戶界面中呈現,這種優雅的簡單性產生了漂亮且有效的可視化效果,且只需很少的代碼。
數據源是一個DataFrame,它由不同數據類型的列組成。DataFrame是一種整潔的格式,其中的行與樣本相對應,而列與觀察到的變量相對應。數據通過數據轉換映射到使用組的視覺屬性(位置、顏色、大小、形狀、面板等)。

這里寫圖片描述
安裝

方法一:

pip install Altair
  • 1

方法二:

conda install altair --channel conda-forge
  • 1

快速入門

import altair as alt

# 加載數據集
cars = alt.load_dataset('cars')

#繪圖
alt.Chart(cars).mark_point().encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

這里寫圖片描述

5.PyQtGraph

http://www.pyqtgraph.org/
PyQtGraph是在PyQt4 / PySide和numpy上構建的純 python的GUI圖形庫。它主要用於數學,科學,工程領域。盡管PyQtGraph完全是在python中編寫的,但它本身就是一個非常有能力的圖形系統,可以進行大量的數據處理,數字運算;使用了Qt的GraphicsView框架優化和簡化了工作流程,實現以最少的工作量完成數據可視化,且速度也非常快。
這里寫圖片描述
安裝

方法一

pip install PyQtGraph
  • 1

方法二

點擊下載安裝

快速入門

import pyqtgraph as pg
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np

#創建一個繪圖區
win = pg.plot()
win.setWindowTitle('pyqtgraph example: FillBetweenItem')
win.setXRange(-10, 10)
win.setYRange(-10, 10)

#曲線
N = 200
x = np.linspace(-10, 10, N)
gauss = np.exp(-x**2 / 20.)
mn = mx = np.zeros(len(x))
curves = [win.plot(x=x, y=np.zeros(len(x)), pen='k') for i in range(4)]
brushes = [0.5, (100, 100, 255), 0.5]
fills = [pg.FillBetweenItem(curves[i], curves[i+1], brushes[i]) for i in range(3)]
for f in fills:
    win.addItem(f)

def update():
    global mx, mn, curves, gauss, x
    a = 5 / abs(np.random.normal(loc=1, scale=0.2))
    y1 = -np.abs(a*gauss + np.random.normal(size=len(x)))
    y2 =  np.abs(a*gauss + np.random.normal(size=len(x)))
    
    s = 0.01
    mn = np.where(y1<mn, y1, mn) * (1-s) + y1 * s
    mx = np.where(y2>mx, y2, mx) * (1-s) + y2 * s
    curves[0].setData(x, mn)
    curves[1].setData(x, y1)
    curves[2].setData(x, y2)
    curves[3].setData(x, mx)
    
#時間軸
timer = QtCore.QTimer()
timer.timeout.connect(update)
timer.start(30)


#啟動Qt
if __name__ == '__main__':
    import sys
    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtGui.QApplication.instance().exec_() 

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

這里寫圖片描述

6.ggplot

http://ggplot.yhathq.com/
ggplot是基於R的ggplot2和圖形語法的Python的繪圖系統,實現了更少的代碼繪制更專業的圖形。
它使用一個高級且富有表現力的API來實現線,點等元素的添加,顏色的更改等不同類型的可視化組件的組合或添加,而不需要重復使用相同的代碼,然而這對那些試圖進行高度定制的的來說,ggplot並不是最好的選擇,盡管它也可以制作一些非常復雜、好看的圖形。
ggplot與pandas緊密聯系。如果你打算使用ggplot,最好將數據保存在DataFrames中。
這里寫圖片描述
安裝:

  • linux系統
pip install numpy

pip install scipy

pip install statsmodels

pip install ggplot
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • window系統

下載ggplot安裝包然后運行

pip install ggplot‑0.11.5‑py2.py3‑none‑any.whl
  • 1

快速入門

from ggplot import *

ggplot(aes(x='date', y='beef', ymin='beef - 1000', ymax='beef + 1000'), data=meat) + \
    geom_area() + \
    geom_point(color='coral')

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

運行結果
這里寫圖片描述

7.Bokeh

https://bokeh.pydata.org/en/latest/
Bokeh是一個Python交互式可視化庫,支持現代化web瀏覽器展示(圖表可以輸出為JSON對象,HTML文檔或者可交互的網絡應用)。它提供風格優雅、簡潔的D3.js的圖形化樣式,並將此功能擴展到高性能交互的數據集,數據流上。使用Bokeh可以快速便捷地創建交互式繪圖、儀表板和數據應用程序等。
Bokeh能與NumPy,Pandas,Blaze等大部分數組或表格式的數據結構完美結合。

這里寫圖片描述

安裝:

方法一:如果有配置anaconda的話使用以下命令(推薦)

conda install bokeh
  • 1

方法二

pip install numpy

pip install pandas

pip install redis

pip install bokeh
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

快速入門

from bokeh.plotting import figure, output_file, show

# 創建圖
p = figure(plot_width=300, plot_height=300, tools="pan,reset,save")

# 畫圓
p.circle([1, 2.5, 3, 2], [2, 3, 1, 1.5], radius=0.3, alpha=0.5)

# 定義輸出文件格式
output_file("foo.html")

# 圖片展示
show(p) 

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

運行結果
這里寫圖片描述

8.pygal

http://www.pygal.org/en/stable/
pygal是一種開放標准的矢量圖形語言,它基於XML(Extensible Markup Language),可以生成多個輸出格式的高分辨率Web圖形頁面,還支持給定數據的html表導出。用戶可以直接用代碼來描繪圖像,可以用任何文字處理工具打開SVG圖像,通過改變部分代碼來使圖像具有交互功能,並且可以插入到HTML中通過瀏覽器來觀看。
這里寫圖片描述
安裝:

  • linux系統
pip install pygal
  • 1
  • window系統

命令類似於

python -m pip install --user pygal==1.7
  • 1
  • mac os系統

命令類似於

方法一:

pip install --user pygal==1.7
  • 1

方法二:

pip install git+https://github.com/vispy/vispy.git
  • 1

快速入門

import pygal

#聲明圖表類型
bar_chart = pygal.StackedBar()

#繪圖
bar_chart.add('Fibonacci', [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55])
bar_chart.add('Padovan', [1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12])

#保存圖片
bar_chart.render_to_png('bar1.png')

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

運行結果
這里寫圖片描述

9.VisPy

http://vispy.org/gallery.html
VisPy是一個用於交互式科學可視化的Python庫,快速、可伸縮、且易於使用,是一個高性能的交互式2D / 3D數據可視化庫,利用了現代圖形處理單元(gpu)的計算能力,通過OpenGL庫來顯示非常大的數據集。

這里寫圖片描述
安裝

pip install VisPy
  • 1

快速入門

from vispy.plot import Fig

#調用類(Fig)
fig = Fig()

#創建PlotWidget
ax_left = fig[0, 0]
ax_right = fig[0, 1]

#繪圖
import numpy as np
data = np.random.randn(2, 3)
ax_left.plot(data)
ax_right.histogram(data[1])

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

運行結果
這里寫圖片描述

10.NetworkX

https://networkx.github.io/documentation/stable/tutorial.html

NetworkX是一個Python包,用於創建、操縱和研究復雜網絡的結構、以及學習復雜網絡的結構、功能及其動力學。
NetworkX提供了適合各種數據結構的圖表、二合字母和多重圖,還有大量標准的圖算法,網絡結構和分析措施,可以產生隨機網絡、合成網絡或經典網絡,且節點可以是文本、圖像、XML記錄等,並提供了一些示例數據(如權重,時間序列)。
NetworkX測試的代碼覆蓋率超過90%,是一個多樣化,易於教學,能快速生成圖形的Python平台。

這里寫圖片描述

安裝

方法一:

pip install networkx
  • 1

方法二:

點擊下載安裝

快速入門

import matplotlib.pyplot as plt
import networkx as nx
import numpy.linalg

#生成隨機數
n = 1000  
m = 5000  
G = nx.gnm_random_graph(n, m)

#定義數據分布特征
L = nx.normalized_laplacian_matrix(G)
e = numpy.linalg.eigvals(L.A)
 
#繪圖並顯示
plt.hist(e, bins=100)  
plt.xlim(0, 2)  
plt.show()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

運行結果
這里寫圖片描述

11.Plotly

https://plot.ly/python/
Plotly的Python graphing library在網上提供了交互式的、公開的,高質量的圖表集,可與R、python、matlab等軟件對接。它擁有在別的庫中很難找到的幾種圖表類型,如等值線圖,樹形圖和三維圖表等,圖標類型也十分豐富,申請了API密鑰后,可以一鍵將統計圖形同步到雲端。但美中不足的是,打開國外網站會比較費時,且一個賬號只能創建25個圖表,除非你升級或刪除一些圖表。

這里寫圖片描述

安裝:

pip install plotly
  • 1

快速入門

import plotly.plotly as py
import plotly.graph_objs as go

trace1 = go.Scatter(
    x=[0, 1, 2, 3, 4, 5],
    y=[1.5, 1, 1.3, 0.7, 0.8, 0.9]
)
trace2 = go.Bar(
    x=[0, 1, 2, 3, 4, 5],
    y=[1, 0.5, 0.7, -1.2, 0.3, 0.4]
)

data = [trace1, trace2]
py.iplot(data, filename='bar-line')

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

運行結果
這里寫圖片描述

12.geoplotlib

https://residentmario.github.io/geoplot/index.html
Basemap和Cartopy包支持多個地理投影,並提供一些可視化效果,包括點圖、熱圖、等高線圖和形狀文件。PySAL是一個由Python編寫的空間分析函數的開源庫,它提供了許多基本的工具,主要用於形狀文件。但是,這些庫不允許用戶繪制地圖貼圖,並且對自定義可視化、交互性和動畫的支持有限。
geoplotlib是python的一個用於地理數據可視化和繪制地圖的工具箱,並提供了一個原始數據和所有可視化之間的基本接口,支持在純python中開發硬件加速的交互式可視化,並提供點映射、內核密度估計、空間圖、泰森多邊形圖、形狀文件和許多更常見的空間可視化的實現。除了為常用的地理數據可視化提供內置的可視化功能外,geoplotlib還允許通過定義定制層來定義復雜的數據可視化(繪制OpenGL,如分數、行和具有高性能的多邊形),創建動畫。
這里寫圖片描述
安裝:

pip install geoplotlib
  • 1

快速入門

from geoplotlib.layers import DelaunayLayer
import geoplotlib
from geoplotlib.utils import read_csv, BoundingBox

data = read_csv('data/bus.csv')
geoplotlib.delaunay(data, cmap='hot_r')
geoplotlib.set_bbox(BoundingBox.DK)
geoplotlib.set_smoothing(True)
geoplotlib.show()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

運行結果
這里寫圖片描述

13.folium

https://python-visualization.github.io/folium/
folium是一個建立在Python系統之上的js庫,可以很輕松地將在Python中操作的數據可視化為交互式的單張地圖,且將緊密地將數據與地圖聯系在一起,可自定義箭頭,網格等HTML格式的地圖標記。該庫還附有一些內置的地形數據。

這里寫圖片描述

安裝

方法一:

pip install folium
  • 1

方法二:

conda install folium
  • 1

方法三:

點擊下載安裝

快速入門

import folium

#確定經緯度
m = folium.Map(location=[45.5236, -122.6750])
m

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

運行結果
這里寫圖片描述

14.Gleam

Gleam允許你只利用Python構建數據的交互式,生成可視化的網絡應用。無需具備HTML CSS或JaveScript知識,就能使用任一種Python可視化庫控制輸入。當你創建一個圖表的時候,你可以在上面加上一個域,讓任何人都可以實時地玩轉你的數據,讓你的數據更通俗易懂。

安裝:

pip install Gleam
  • 1

快速入門

from wtforms import fields
from ggplot import *
from gleam import Page, panels

#定義繪圖函數
class ScatterInput(panels.InputPanel):
    title = fields.StringField(label="Title of plot:")
    yvar = fields.SelectField(label="Y axis",
                              choices=[("beef", "Beef"),
                                       ("pork", "Pork")])
    smoother = fields.BooleanField(label="Smoothing Curve")

class ScatterPlot(panels.PlotPanel):
    name = "Scatter"

    def plot(self, inputs):
        p = ggplot(meat, aes(x='date', y=inputs.yvar))
        if inputs.smoother:
            p = p + stat_smooth(color="blue")
        p = p + geom_point() + ggtitle(inputs.title)
        return p

class ScatterPage(Page):
    input = ScatterInput()
    output = ScatterPlot()

#運行
ScatterPage.run()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

運行結果
這里寫圖片描述

15.vincent

https://vincent.readthedocs.io/en/latest/
Vincent是一個很酷的可視化工具,它以Python數據結構作為數據源,然后把它翻譯成Vega可視化語法,並且能夠在d3js上運行。這讓你可以使用Python腳本來創建漂亮的3D圖形來展示你的數據。Vincent底層使用Pandas和DataFrames數據,並且支持大量的圖表----條形圖、線圖、散點圖、熱力圖、堆條圖、分組條形圖、餅圖、圈圖、地圖等等。

這里寫圖片描述

安裝

pip install vincent
  • 1

快速入門

import vincent
bar = vincent.Bar(multi_iter1['y1'])
bar.axis_titles(x='Index', y='Value')
bar.to_json('vega.json')

  • 1
  • 2
  • 3
  • 4
  • 5

運行結果
這里寫圖片描述

16.mpld3

http://mpld3.github.io/
mpld3基於python的graphing library和D3js,匯集了Matplotlib流行的項目的JavaScript庫,用於創建web交互式數據可視化。通過一個簡單的API,將matplotlib圖形導出為HTML代碼,這些HTML代碼可以在瀏覽器內使用。
這里寫圖片描述

安裝

方法一:

pip install mpld3
  • 1

方法二:

點擊下載安裝

快速入門

import matplotlib.pyplot as plt
import numpy as np
import mpld3
from mpld3 import plugins

fig, ax = plt.subplots()

x = np.linspace(-2, 2, 20)
y = x[:, None]
X = np.zeros((20, 20, 4))

X[:, :, 0] = np.exp(- (x - 1) ** 2 - (y) ** 2)
X[:, :, 1] = np.exp(- (x + 0.71) ** 2 - (y - 0.71) ** 2)
X[:, :, 2] = np.exp(- (x + 0.71) ** 2 - (y + 0.71) ** 2)
X[:, :, 3] = np.exp(-0.25 * (x ** 2 + y ** 2))

im = ax.imshow(X, extent=(10, 20, 10, 20),
               origin='lower', zorder=1, interpolation='nearest')
fig.colorbar(im, ax=ax)

ax.set_title('An Image', size=20)

plugins.connect(fig, plugins.MousePosition(fontsize=14))

mpld3.show()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

運行結果
這里寫圖片描述

17.python-igraph

http://igraph.org/python/
Python界面的igraph高性能圖形庫,主要針對復雜的網絡研究和分析

這里寫圖片描述

安裝

方法一:

pip install python-igraph
  • 1

方法二:

點擊下載安裝

快速入門

from igraph import *

layout = g.layout("kk")
plot(g, layout = layout)

  • 1
  • 2
  • 3
  • 4
  • 5

運行結果
這里寫圖片描述

18.missingno

https://github.com/ResidentMario/missingno
沒有高質量的數據,就沒有高質量的數據挖掘結果,當我們做監督學習算法,難免會碰到混亂的數據集,缺失的值,當缺失比例很小時,可直接對缺失記錄進行舍棄或進行手工處理,missingno提供了一個小型的靈活的、易於使用的數據可視化和實用工具集,用圖像的方式讓你能夠快速評估數據缺失的情況,而不是在數據表里面步履維艱。你可以根據數據的完整度對數據進行排序或過濾,或者根據熱度圖或樹狀圖來考慮對數據進行修正。
missingno 是基於matplotlib建造的一個模塊,所以它出圖速度很快,並且能夠靈活的處理pandas數據。
這里寫圖片描述

安裝:

方法一:

pip install missingno
  • 1

方法二:

點擊下載安裝

快速入門

import missingno as msno
import pandas as pd
import pandas_datareader.data as web
import numpy as np
p=print

save_loc = '/YOUR/PROJECT/LOCATION/'
logo_loc = '/YOUR/WATERMARK/LOCATION/'

# get index and fed data

f1 = 'USREC' # recession data from FRED

start = pd.to_datetime('1999-01-01')
end = pd.datetime.today()

mkt = '^GSPC'
MKT = (web.DataReader([mkt,'^VIX'], 'yahoo', start, end)['Adj Close']
      .resample('MS') # month start b/c FED data is month start
       .mean()
       .rename(columns={mkt:'SPX','^VIX':'VIX'})
       .assign(SPX_returns=lambda x: np.log(x['SPX']/x['SPX'].shift(1)))
       .assign(VIX_returns=lambda x: np.log(x['VIX']/x['VIX'].shift(1)))
       )

data = (web.DataReader([f1], 'fred', start, end)
        .join(MKT, how='outer')
        .dropna())

p(data.head())
p(data.info())
msno.matrix(data)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

運行結果
這里寫圖片描述

19.Mayavi2

http://code.enthought.com/pages/mayavi-project.html
Mayavi2是一個通用的、跨平台的三維科學數據可視化工具。可以在二維和三維空間中顯示標量、向量和張量數據。可通過自定義源、模塊和數據過濾器輕松擴展。Mayavi2也可以作為一個繪圖引擎,生成matplotlib或gnuplot腳本,也可以作為其他應用程序的交互式可視化的庫,將生成的圖片嵌入到其他應用程序中。

這里寫圖片描述!
安裝

pip install mayavi
  • 1

快速入門

import numpy
from mayavi import mlab

def lorenz(x, y, z, s=10., r=28., b=8. / 3.):
    """The Lorenz system."""
    u = s * (y - x)
    v = r * x - y - x * z
    w = x * y - b * z
    return u, v, w

# 取樣.
x, y, z = numpy.mgrid[-50:50:100j, -50:50:100j, -10:60:70j]
u, v, w = lorenz(x, y, z)
fig = mlab.figure(size=(400, 300), bgcolor=(0, 0, 0))

# 用合適的參數畫出軌跡的流動.
f = mlab.flow(x, y, z, u, v, w, line_width=3, colormap='Paired')
f.module_manager.scalar_lut_manager.reverse_lut = True
f.stream_tracer.integration_direction = 'both'
f.stream_tracer.maximum_propagation = 200

# 提取特征並繪制
src = f.mlab_source.m_data
e = mlab.pipeline.extract_vector_components(src)
e.component = 'z-component'
zc = mlab.pipeline.iso_surface(e, opacity=0.5, contours=[0, ],
            color=(0.6, 1, 0.2))
# 背景設置
zc.actor.property.backface_culling = True

# 圖片展示
mlab.view(140, 120, 113, [0.65, 1.5, 27])
mlab.show()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

運行結果
這里寫圖片描述

20.Leather

https://leather.readthedocs.io/en/latest/examples.html
Leather一種可讀且用戶界面友好的API,新手也能快速掌握。圖像成品非常基礎,適用於所有的數據類型,針對探索性圖表進行了優化,產生與比例無關的SVG圖,這樣在你調整圖像大小的時候就不會損失圖像質量
這里寫圖片描述
安裝

方法一:

pip install leather
  • 1

方法二:

點擊下載安裝

快速入門

import csv
import leather

with open('gii.csv') as f:
    reader = csv.reader(f)
    next(reader)
    data = list(reader)[:10]

    for row in data:
        row[1] = float(row[1]) if row[1] is not None else None

chart = leather.Chart('Data from CSV reader')
chart.add_bars(data, x=1, y=0)
chart.to_svg('csv_reader.svg')

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

運行結果
這里寫圖片描述
#結語:
在 Python 中,將數據可視化有多種選擇,因此何時選用何種方案才變得極具挑戰性。
如果你想做一些專業的統計圖表,我推薦你使用Seaborn,Altair;數學,科學,工程領域的學者就選擇PyQtGraph,VisPy,Mayavi2;網絡研究和分析方面,NetworkX,python-igraph會是一個不錯的選擇。
地理投影就選geoplotlib,folium;評估數據缺失就選missingno;有了HoloViews再也不用為高維圖形犯愁;如果你不喜歡花俏的修飾,那就選擇Leather。
如果你是一名新手但有MATLAB基礎,matplotlib會很好上手;有R基礎的就選ggplot;如果你是新手或懶癌晚期者,Plotly將會是一大福音,它提供了大量圖表集可供你選擇與使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM