本文目錄一覽:
- 1、Python中數據可視化經典庫有哪些?
- 2、Python數據可視化 箱線圖
- 3、Python 數據可視化:分類特徵統計圖
- 4、求助編程大神,Python數據可視化,參考圖一部分代碼做出圖二的效果。
Python中數據可視化經典庫有哪些?
Python有很多經典的數據可視化庫,比較經典的數據可視化庫有下面幾個。
matplotlib
是Python編程語言及其數值數學擴展包 NumPy 的可視化操作界面。它利用通用的圖形用戶界面工具包,如 Tkinter, wxPython, Qt 或 GTK+,嚮應用程序嵌入式繪圖提供了應用程序介面。
pyplot 是 matplotlib 的一個模塊,它提供了一個類似 MATLAB 的介面。 matplotlib 被設計得用起來像 MATLAB,具有使用 Python 的能力。
優點:繪圖質量高,可繪製出版物質量級別的圖形。代碼夠簡單,易於理解和擴展,使繪圖變得輕鬆,通過Matplotlib可以很輕鬆地畫一些或簡單或複雜的圖形,幾行代碼即可生成直方圖、條形圖、散點圖、密度圖等等,最重要的是免費和開源。
pandas
Pandas 是一個開放源碼、BSD 許可的庫,提供高性能、易於使用的數據結構和數據分析工具。Pandas 廣泛應用在學術、金融、統計學等各個數據分析領域。需要說明的是它不是「熊貓」,名字衍生自術語 “panel data”(面板數據)和 “Python data analysis”(Python 數據分析)。
優點:是Python的核心數據分析支持庫,提供了快速、靈活、明確的數據結構,旨在簡單、直觀的處理關係型、標記型數據。對於數據分析專業人士,它是數據分析及可視化的利器。
seaborn
Seaborn是基於matplotlib的圖形可視化python包。它提供了一種高度互動式界面,便於用戶能夠做出各種有吸引力的統計圖表。
它是基於matplotlib更高級的API封裝,從而使得作圖更加容易,在大多數情況下使用seaborn能做出很具有吸引力的圖,應該把Seaborn視為matplotlib的補充,而不是替代物,它能高度兼容numpy與pandas數據結構以及scipy與statsmodels等統計模式。
優點:matplotlib高度封裝,代碼量少,圖表漂亮。比起matplotlib具有更美觀、更現代的調色板設計等優點。scikit-plot
這是一個跟機器學習有效結合的繪圖庫。想要深入學習的小夥伴參見其github倉庫,這裡不再贅述了。
優點:Scikit-Plot是由ReiichiroNakano創建的用在機器學習的可視化工具,能最快速簡潔的畫出用Matplotlib要寫很多行語句才能畫出的圖。關鍵是對於機器學習相關可視化處理,該庫有較好的支持。
Networkx
networkx是Python的一個包,用於構建和操作複雜的圖結構,提供分析圖的演算法。圖是由頂點、邊和可選的屬性構成的數據結構,頂點表示數據,邊是由兩個頂點唯一確定的,表示兩個頂點之間的關係。頂點和邊也可以擁有更多的屬性,以存儲更多的信息。
優點:用於創建、操縱和研究複雜網路的結構、以及學習複雜網路的結構、功能及其動力學。
上面是我的回答,希望對您有所幫助!
Python數據可視化 箱線圖
Python數據可視化:箱線圖
一、箱線圖概念
箱形圖(Box-plot)又稱為盒須圖、盒式圖或箱線圖,是一種用作顯示一組數據分散情況資料的統計圖。
計算過程:
(1)計算上四分位數(Q3),中位數,下四分位數(Q1)
(2)計算上四分位數和下四分位數之間的差值,即四分位數差(IQR,interquartile range)Q3-Q1
(3)繪製箱線圖的上下範圍,上限為上四分位數,下限為下四分位數。在箱子內部中位數的位置繪製橫線。
(4)大於上四分位數1.5倍四分位數差的值,或者小於下四分位數1.5倍四分位數差的值,劃為異常值(outliers)。
(5)異常值之外,最靠近上邊緣和下邊緣的兩個值處,畫橫線,作為箱線圖的觸鬚。
(6)極端異常值,即超出四分位數差3倍距離的異常值,用實心點表示;較為溫和的異常值,即處於1.5倍-3倍四分位數差之間的異常值,用空心點表示。
(7)為箱線圖添加名稱,數軸等
二、四分位數的計算
分位數根據其將數列等分的形式不同可以分為中位數,四分位數,十分位數、百分位數等等。四分位數作為分位數的一種形式,在統計中有著十分重要的意義和作用,而大多數的統計學原理教材只介紹其基本含義,對其具體計算,尤其是由組距數列計算都不作介紹,成為統計學原理教材中的空白。那麼,如何根據數列計算四分位數呢?一般來講,視資料是否分組而定。
1、根據未分組的資料計算四分位數
第一步:確定四分位數的位置
四分位數是將數列等分成四個部分的數,一個數列有三個四分位數,設下分位數、中分位數和上分位式中n表示資料的項數
第二步:根據第一步所確定的四分位數的位置,確定其相應的四分位數。
例1:某車間某月份的工人生產某產品的數量分別為13、13.5、13.8、13.9、14、14.6、14.8、15、15.2、15.4、15.7公斤,則三個四分位數的位置分別為:
即變數數列中的第三個、第六個、第九個工人的某種產品產量分別為下四分位數、中位 數和上四分位數。即:
Q1 =13.8公斤、Q2=14.6公斤、Q3=15.2公斤
上例中(n+1)恰好為4的倍數,所以確定四分數較簡單,如果(n+1)不為4的整數倍數,按上述分式計算出來的四分位數位置就帶有小數,這時,有關的四分位數就應該是與該小數相鄰的兩個整數位置上的標誌值的平均數,權數的大小取決於兩個整數位置距離的遠近,距離越近,權數越大,距離越遠,權數越小,權數之和等於1。
例2:某車間某月份的工人生產某產品的數量分別為13、13.5、13.8、13.9、14、14.6、14.8、15、15.2、15.4公斤,則三個四分位數的位置分別為:
即變數數列中的第2.75項、第5.5項、第8.25項工人的某種產品產量分別為下四分位 數、中位數和上四分位數。即:
在實際資料中,由於標誌值序列中的相鄰標誌值往往是相同的,因而不一定要通過計算才能得到有關的四分位數。
2、由組距式數列確定四分位數
第一步,向上或向下累計次數.
第二步,根據累計次數確定四分位數的位置.
(1)、當採用向上累計次數的資料確定四分位數時,四分位數位置的公式是:
(2)、當採用向下累計次數的資料確定四分位數時,四分位數位置的公式是:
第三步,根據四分位數的位置算出各四分位數.
(1)、當累計次數是向上累計時,按下限公式計算各四分位數.
(2)、當累計次數是向下累計時,按上限公式計算各四分位數.
例3:某企業職工按月工資的分組資料如下:
根據上述資料確定某企業職工的月工資的三個四分位數如下:
(1)、採用向上累計職工人數的資料得月工資四分位數的位置為:
(2)、採用向下累計職工人數的資料得月工資四分位數的位置為:
3、異常值
異常值:限制線以外的數據全部為異常值
三、畫圖
# Python
import plotly.plotly
import plotly.graph_objs as go
data = [
go.Box(
y=[0, 1, 1, 2, 3, 5, 8, 13, 21] # 9個數據
)
]
plotly.offline.plot(data) # 離線繪圖
Python 數據可視化:分類特徵統計圖
上一課已經體驗到了 Seaborn 相對 Matplotlib 的優勢,本課將要介紹的是 Seaborn 對分類數據的統計,也是它的長項。
針對分類數據的統計圖,可以使用 sns.catplot 繪製,其完整參數如下:
本課使用演繹的方式來學習,首先理解這個函數的基本使用方法,重點是常用參數的含義。
其他的參數,根據名稱也能基本理解。
下面就依據 kind 參數的不同取值,分門別類地介紹各種不同類型的分類統計圖。
讀入數據集:
然後用這個數據集製圖,看看效果:
輸出結果:
毫無疑問,這裡繪製的是散點圖。但是,該散點圖的橫坐標是分類特徵 time 中的三個值,並且用 hue=’kind’ 又將分類特徵插入到圖像中,即用不同顏色的的點代表又一個分類特徵 kind 的值,最終得到這些類別組合下每個記錄中的 pulse 特徵值,並以上述圖示表示出來。也可以理解為,x=’time’, hue=’kind’ 引入了圖中的兩個特徵維度。
語句 ① 中,就沒有特別聲明參數 kind 的值,此時是使用默認值 ‘strip’。
與 ① 等效的還有另外一個對應函數 sns.stripplot。
輸出結果:
② 與 ① 的效果一樣。
不過,在 sns.catplot 中的兩個參數 row、col,在類似 sns.stripplot 這樣的專有函數中是沒有的。因此,下面的圖,只有用 sns.catplot 才能簡潔直觀。
輸出結果:
不過,如果換一個叫角度來說,類似 sns.stripplot 這樣的專有函數,表達簡單,參數與 sns.catplot 相比,有所精簡,使用起來更方便。
仔細比較,sns.catplot 和 sns.stripplot 兩者還是稍有區別的,雖然在一般情況下兩者是通用的。
因此,不要追求某一個是萬能的,各有各的用途,存在即合理。
不過,下面的聲明請注意: 如果沒有非常的必要,比如繪製分區圖,在本課中後續都演示如何使用專有名稱的函數。
前面已經初步解釋了這個函數,為了格式完整,這裡再重複一下,即 sns.catplot 中參數 kind=’strip’。
如果非要將此函數翻譯為漢語,可以稱之為「條狀散點圖」。以分類特徵為一坐標軸,在另外一個坐標軸上,根據分類特徵,將該分類特徵數據所在記錄中的連續值沿坐標軸描點。
從語句 ② 的結果圖中可以看到,這些點雖然縱軸的數值有相同的,但是沒有將它們重疊。因此,我們看到的好像是「一束」散點,實際上,所有點的橫坐標都應該是相應特徵分類數據,也不要把分類特徵的值理解為一個範圍,分散開僅僅是為了圖示的視覺需要。
輸出結果:
④ 相對 ② 的圖示,在於此時同一縱軸值的都重合了——本來它們的橫軸值都是一樣的。實現此效果的參數是 jitter=0,它可以表示點的「振動」,如果默認或者 jitter=True,意味著允許描點在某個範圍振動——語句 ② 的效果;還可設置為某個 0 到 1 的浮點,表示許可振動的幅度。請對比下面的操作。
輸出結果:
語句 ② 中使用 hue=’kind’ 參數向圖中提供了另外一個分類特徵,但是,如果感覺圖有點亂,還可以這樣做:
輸出結果:
dodge=True 的作用就在於將 hue=’kind’ 所引入的特徵數據分開,相對 ② 的效果有很大差異。
並且,在 ⑤ 中還使用了 paletter=’Set2′ 設置了色彩方案。
sns.stripplot 函數中的其他有關參數,請讀者使用幫助文檔了解。
此函數即 sns.catplot 的參數 kind=’swarm’。
輸出結果:
再繪製一張簡單的圖,一遍研究這種圖示的本質。
輸出結果:
此圖只使用了一個特徵的數據,簡化表象,才能探究 sns.swarmplot 的本質。它同樣是將該特徵中的數據,依據其他特徵的連續值在圖中描點,並且所有點在默認情況下不彼此重疊——這方面與 sns.stripplot 一樣。但是,與之不同的是,這些點不是隨機分布的,它們經過調整之後,均勻對稱分布在分類特徵數值所在直線的兩側,這樣能很好地表示數據的分布特點。但是,這種方式不適合「大數據」。
sns.swarmplot 的參數似乎也沒有什麼太特殊的。下面使用幾個,熟悉一番基本操作。
在分類維度上還可以再引入一個維度,用不同顏色的點表示另外一種類別,即使用 hue 參數來實現。
輸出結果:
這裡用 hue = ‘smoker’ 參數又引入了一個分類特徵,在圖中用不同顏色來區分。
如果覺得會 smoker 特徵的值都混在一起有點亂,還可以使用下面方式把他們分開——老調重彈。
輸出結果:
生成此效果的參數就是 dodge=True,它的作用就是當 hue 參數設置了特徵之後,將 hue 的特徵數據進行分類。
sns.catplot 函數的參數 kind 可以有三個值,都是用於繪製分類的分布圖:
下面依次對這三個專有函數進行闡述。
求助編程大神,Python數據可視化,參考圖一部分代碼做出圖二的效果。
給你個例子
import numpy as np
import matplotlib.pyplot as plt
def bar2():
plt.rcParams[‘font.sans-serif’] = [‘SimHei’]
name = [“呂布”,”趙雲”,”典韋”,”關羽”,”馬超”,”張飛”,”夏侯惇”,”太史慈”]
x_index = np.arange(len(name))
width=0.35
OP=[99,96,96,93,93,92,90,89]
HP=[70,95,70,83,88,70,75,78]
plt.bar(x_index,OP,width=width,label=”攻擊力”)
plt.bar(x_index + width, HP, width=width, label=”體力”)
plt.xlabel(“武將”)
plt.ylabel(“能力值”)
plt.title(“三國志武將分析”)
plt.legend()
plt.xticks(ticks=x_index,labels=name)
plt.show()
bar2()
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/307486.html