成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python學(xué)習(xí)筆記:數(shù)據(jù)可視化(一)

Crazy_Coder / 3155人閱讀

摘要:當(dāng)數(shù)據(jù)發(fā)生變化時,這種演變過程隨之發(fā)生。是一種統(tǒng)計報告圖,由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況。

python相關(guān) 基礎(chǔ)概念

數(shù)據(jù):離散的,客觀事實的數(shù)字表示

信息:處理后的數(shù)據(jù),為實際問題提供答案

  - 為數(shù)據(jù)提供一種關(guān)系或一個關(guān)聯(lián)后,數(shù)據(jù)就成了信息,這種關(guān)聯(lián)通過提供數(shù)據(jù)背景來完成

知識: 是數(shù)據(jù)、信息和通過經(jīng)驗獲得的技能

  - 知識包括做出適當(dāng)決策的能力執(zhí)行時所需的技能

觀點:

 - 如何獲取觀點: 基于已有數(shù)據(jù)信息得到最佳或現(xiàn)實的決策,我們可以通過數(shù)據(jù)分析

數(shù)據(jù)分析 依賴數(shù)學(xué)算法來確定產(chǎn)生觀點的數(shù)據(jù)之間的關(guān)系

信息是可量化的、可測度的、有形式的,可被訪問、生成、存儲、分發(fā)、搜索、壓縮和復(fù)制。
信息可以通過數(shù)量或信息量進(jìn)行量化。,信息可轉(zhuǎn)換為知識,知識要比信息更量化。在某些領(lǐng)域,知識持續(xù)經(jīng)歷一個不斷發(fā)展周期。當(dāng)數(shù)據(jù)發(fā)生變化時,這種演變過程隨之發(fā)生。

通過離散算法

數(shù)據(jù)轉(zhuǎn)換:數(shù)據(jù)被轉(zhuǎn)換成信息,得到進(jìn)一步處理,然后用來解決問題

 - 數(shù)據(jù)的種類不同,包括表現(xiàn)數(shù)據(jù), 實驗數(shù)據(jù),基準(zhǔn)數(shù)據(jù)

可視化的整個過程需要不用技能和專業(yè)領(lǐng)域的人。

數(shù)據(jù)工人努力收集數(shù)據(jù)并完成分析
數(shù)學(xué)家和統(tǒng)計學(xué)家理解可視化設(shè)計原則,并用這些原則完成數(shù)據(jù)交流
設(shè)計師和藝術(shù)家和開發(fā)者具備可視化轉(zhuǎn)換的技能
業(yè)務(wù)分析員等找尋行為模式,離群點或突發(fā)趨勢
整個過程額步驟是:

獲取或收集數(shù)據(jù):

解析和過濾數(shù)據(jù):用編程方法進(jìn)行解析、清洗和減少數(shù)據(jù)

分析提煉數(shù)據(jù): 刪除噪音和一些不必要維度,發(fā)展模式

呈現(xiàn)和交互 用更容易得到和理解的方式展示數(shù)據(jù)

數(shù)據(jù)預(yù)處理

數(shù)據(jù)清洗:用于數(shù)據(jù)的噪音清理和矛盾糾正

數(shù)據(jù)集成:將多個數(shù)據(jù)源的數(shù)據(jù)合并起來(倉庫)

數(shù)據(jù)壓縮:通過合并、聚集、消除冗余特征等方法減少數(shù)據(jù)量

數(shù)據(jù)轉(zhuǎn)換:將數(shù)據(jù)縮放到一個較小的區(qū)間,從而提高處理和可視化的精確性和效率

提取數(shù)據(jù) -> 刪除不一致數(shù)據(jù) ->重建缺失數(shù)據(jù) ->數(shù)據(jù)標(biāo)準(zhǔn)化 -> 驗證數(shù)據(jù)

-

數(shù)據(jù)處理 數(shù)據(jù)集資源 數(shù)據(jù)分析與可視化

這里我們會使用下面幾種繪圖工具

matplotlib: 是一個最基礎(chǔ)的Python可視化庫,作圖風(fēng)格接近MATLAB,所以稱為matplotlib。一般都是從matplotlib上手Python數(shù)據(jù)可視化,然后開始做縱向與橫向拓展

Seaborn:是一個基于matplotlib的高級可視化效果庫,針對的點主要是數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)中的變量特征選取,seaborn可以用短小的代碼去繪制描述更多維度數(shù)據(jù)的可視化效果圖

Plotly: 繪圖工具,是建立在一個開放源碼庫plotly.js上,由一家擁有多種產(chǎn)品和開源工具的

Pyecharts : 是基于百度echarts的一個開源項目,也是我目前接觸到的最容易實現(xiàn)交互可視化的工具,相比bokeh和plotly,pyecharts的語法更簡單,實現(xiàn)效果更佳出眾(做過前端的對這個應(yīng)該很了解)

Bokeh: 是一個用于做瀏覽器端交互可視化的庫,實現(xiàn)分析師與數(shù)據(jù)的交互

pandas: 是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。Pandas 納入了大量庫和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具。

Mapbox: 處理地理數(shù)據(jù)引擎更強(qiáng)的可視化工具庫

geoplotlib

cufflinks: a library for easy interactive Pandas charting with Plotly

圖形公司創(chuàng)造并提供免費(fèi)使用,我們可以在離線模式下創(chuàng)建無限圖表,在線模式下最多可以創(chuàng)建25個圖表
當(dāng)然,找更多工具戳這里

數(shù)據(jù)的可視化是表達(dá)信息的過程,在可視化化過程我們要思考:

要處理多少變量?我們試圖畫出怎樣的圖像?

x軸和y軸指代什么?(三維圖中有z軸)

數(shù)據(jù)的大小是否被標(biāo)準(zhǔn)化?數(shù)據(jù)點的大小意味著什么?

我們的選色對嗎?

對于時間序列數(shù)據(jù),我們是否試圖識別趨勢或相關(guān)性

這里有個學(xué)生數(shù)據(jù):http://www.knapdata.com/pytho...

# -*- coding:utf-8 -*-
# usr/bin/python 3.5+
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

students = pd.read_csv("data/ucdavis.csv")

g = sns.FacetGrid(students, hue="gender", palette="Set1", size=6)
g.map(plt.scatter, "gpa", "computer", s=250, linewidth= 0.65, edgecolor="white")

g.add_legend()
plt.show()

seaborn: http://seaborn.pydata.org/api...

FacetGrid 類可以刻畫三個維度: 行、列、色調(diào)

 - 用于對數(shù)據(jù)子集中的一個變量的分布或者多個變量關(guān)系進(jìn)行可視化

barchart

matplotlib.pyplot.bar

import numpy as np
import matplotlib.pyplot as plt

N = 7
winnersplot = (142.6, 125.3, 62.0, 81.0, 145.6, 319.4, 178.1 )
ind = np.arange(N)
width = 0.35
fig, ax = plt.subplots()
winners = ax.bar(ind, winnersplot, width, color="#ffad00")
print(winners)

nomineesplot = (109.4, 94.8, 60.7, 44.6, 116.9,262.5,102.0)
nominees = ax.bar(ind + width, nomineesplot, width, color="#9b3c38")

# add some text for labels ,title and axes ticks

ax.set_xticks(ind+width)
ax.set_xticklabels(("小明", "小紅", "小凡", "小錢", "小劉", "小趙", "小文"))
ax.legend((winners[0], nominees[0]),("奧斯卡金獎得住","奧斯卡得住提名"))

def autolabel(rects):
    # attach some text labels
   for rect in rects:
       height = rect.get_height()
       hcap = "$" + str(height) + "M"
       ax.text(rect.get_x() + rect.get_width()/2. ,height, hcap,ha = "center",va="bottom",rotation="horizontal")

autolabel(winners)
autolabel(nominees)

plt.show()

piechart

matplotlib.pyplot.pie

import matplotlib.pyplot as plt
labels = "Computer Science", "Foreign Languges","Analytical Chemistry", "Education", "Humanities", "Physics", "Biology", "Math and Statistics", "Engineering"
sizes = [21, 4, 7, 7, 8, 9, 10, 15, 19]
colors = ["yellowgreen", "gold", "lightskyblue", "lightcoral","red", "purple", "#f280de", "orange", "green"]
explode = (0,0,0,0,0,0,0,0,0.1)
plt.pie(sizes, explode=explode, labels=labels, autopct="%1.1f%%",colors=colors)
plt.axis("equal")
plt.show()
box chart scatter 散點圖

散點圖是同一組研究對象的兩個變量間關(guān)系的可視化

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
students = pd.read_csv("data/ucdavis.csv")
g = sns.FacetGrid(students, palette="Set10",size=7)
g.map(plt.scatter, "momheight", "height",s=140, linewidth=.7,edgecolor = "#ffad40",color="#ff8000")
g.set_axis_labels("Mothers Heilsght", "Students Height")
plt.show()


散點圖最適合研究不同變量之間的關(guān)系:

男性與女性人群中不同年齡階段得皮膚病的可能性

IQ測試得分和GPA之間的相關(guān)性

另外我們還要考慮:

添加一條趨勢線或最佳擬合線(如果關(guān)系是線性的):添加趨勢線可以展示數(shù)據(jù)之間的關(guān)聯(lián)性

使用信息標(biāo)記類型:信息標(biāo)記類型適用于通過形狀和顏色提高視覺效果來解讀數(shù)據(jù)的情況

氣泡圖

氣泡圖展示了數(shù)據(jù)的三個維度,每個數(shù)據(jù)點有三重維度(a, b , c), xy軸的坐標(biāo)表示兩個維度變量,氣泡的大小表示第三個維度的定量測度結(jié)果

Histograms直方圖

直方圖(Histogram)又稱質(zhì)量分布圖。是一種統(tǒng)計報告圖,由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況。 一般用橫軸表示數(shù)據(jù)類型,縱軸表示分布情況。

import numpy as np
import pandas as pd
from scipy import stats, integrate
import matplotlib.pyplot as plt  #導(dǎo)入

import seaborn as sns
sns.set(color_codes=True)#導(dǎo)入seaborn包設(shè)定顏色

np.random.seed(sum(map(ord, "distributions")))
x = np.random.normal(size=100)
sns.distplot(x, kde=False, rug=True);#kde=False關(guān)閉核密度分布,rug表示在x軸上每個觀測上生成的小細(xì)條(邊際毛毯)
plt.show()


當(dāng)繪制直方圖時,你最需要確定的參數(shù)是矩形條的數(shù)目以及如何放置它們。利用bins可以方便設(shè)置矩形條的數(shù)量。如下所示:

sns.distplot(x, bins=20, kde=False, rug=True);#設(shè)置了20個矩形條

核密度估計圖

核密度估計(Kernel Density Estimation, KDE)是一種用來估計概率密度函數(shù)的非參數(shù)方法??梢酝ㄟ^觀測到的數(shù)據(jù)點取平均實現(xiàn)平滑逼近。

核密度估計是在概率論中用來估計未知的密度函數(shù),屬于非參數(shù)檢驗方法之一。.由于核密度估計方法不利用有關(guān)數(shù)據(jù)分布的先驗知識,對數(shù)據(jù)分布不附加任何假定,是一種從數(shù)據(jù)樣本本身出發(fā)研究數(shù)據(jù)分布特征的方法,因而,在統(tǒng)計學(xué)理論和應(yīng)用領(lǐng)域均受到高度的重視。

核密度函數(shù)與直方圖密切相關(guān),但有時能夠通過核概念用平滑性或連續(xù)性賦予實際含義。
概率密度函數(shù)(Probablity Density Function,PDF)的核是PDF的形式。這種形式不考慮非變量函數(shù)因素。

這里我們用一個鳶尾花數(shù)據(jù)集和seaborn包展示KDE圖
使用seaborn 和matplotlib演示KDE圖

seaborn.distplot

This function combines the matplotlib hist function (with automatic calculation of a good default bin size) with the seaborn kdeplot() and rugplot() functions. It can also fit scipy.stats distributions and plot the estimated PDF over the data.

seaborn的displot()集合了matplotlib的hist()與核函數(shù)估計kdeplot的功能,增加了rugplot分布觀測條顯示與利用scipy庫fit擬合參數(shù)分布的新穎用途。具體用法如下:

seaborn入門(一):distplot與kdeplot
seaborn.kdeplot

distplot()

distplot 函數(shù)默認(rèn)同時繪制直方圖和KDE(核密度圖)

from numpy.random import randn
import matplotlib as mpl
import seaborn as sns
import matplotlib.pyplot as plt

#引入鳶尾花數(shù)據(jù)集
df_iris = sns.load_dataset("iris")
fig, axes = plt.subplots(1,2)
# print(df_iris["petal_length"])
# print(axes[0])


# distplot 函數(shù)默認(rèn)同時繪制直方圖和KDE(核密度圖),開啟rug細(xì)條
sns.distplot(df_iris["petal_length"], ax= axes[0], rug = True)
# shade 陰影
sns.kdeplot(df_iris["petal_length"], ax = axes[1], shade = True)

plt.show()

如果不需要核密度圖,可以將kde參數(shù)設(shè)置成False。

sns.distplot(df_iris["petal_length"], ax= axes[0], kde = False, rug = True)


如果不需要核密度圖,可以將hist參數(shù)設(shè)置成False。

sns.distplot(df_iris["petal_length"], ax= axes[0], hist = False, rug = True)

# Fitting parametric distributions擬合參數(shù)分布

# 可以利用distplot() 把數(shù)據(jù)擬合成參數(shù)分布的圖形并且觀察它們之間的差距,再運(yùn)用fit來進(jìn)行參數(shù)控制。


import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

sns.set(style="white", palette="muted", color_codes=True)
rs = np.random.RandomState(10)

# Set up the matplotlib figure
f, axes = plt.subplots(2, 2, figsize=(7, 7), sharex=True)
sns.despine(left=True)

#引入鳶尾花數(shù)據(jù)集
df_iris = sns.load_dataset("iris")

# Plot a simple histogram with binsize determined automatically

sns.distplot(df_iris["petal_length"], ax= axes[0, 0], kde = False, color="b")

# Plot a kernel density estimate and rug plot

sns.distplot(df_iris["petal_length"], ax= axes[0, 1], kde = False, color="r", rug=True)

# Plot a filled kernel density estimate

sns.distplot(df_iris["petal_length"], ax= axes[1, 0], hist = False, color="g", kde_kws={"shade": True})

# Plot a historgram and kernel density estimate
sns.distplot(df_iris["petal_length"], color="m", ax=axes[1, 1])

plt.setp(axes, yticks=[])
plt.tight_layout()
plt.show()




Fitting parametric distributions擬合參數(shù)分布
使用Scipy和Numpy演示KDE圖

我們用Scipy 和 Numpy表明概率密度函數(shù)

首先用Scipy中的norm()創(chuàng)建正態(tài)分布樣本

然后用Numpy中的hstack()進(jìn)行水平方向上的堆疊

再用Scipy中的gaussian_kde()

from scipy.stats.kde import gaussian_kde
from scipy.stats import norm
from numpy import linspace, hstack
import matplotlib.pyplot as plt
from matplotlib.pylab import plot,show, hist

sample1 = norm.rvs(loc=-0.1,scale=1,size=320)
sample2 = norm.rvs(loc=2.0,scale=0.6,size=130)
sample = hstack([sample1,sample2])
probDensityFun = gaussian_kde(sample)
plt.title("KDE Demonstration using Scipy and Numpy",fontsize=20)
x = linspace(-5,5,200)
plot(x,probDensityFun(x),"r")
hist(sample,normed=1,alpha=0.45,color="purple")
show()

利用kdeplot探索某大學(xué)學(xué)生消費(fèi)習(xí)慣與助學(xué)金獲得關(guān)系
數(shù)據(jù)集如下所示:
表面三維圖 常見案例 Ebola案例 體育案例 美國死亡率 金融與統(tǒng)計模型 統(tǒng)計與機(jī)器學(xué)習(xí) 生物信息學(xué)、遺傳學(xué)與網(wǎng)絡(luò)模型 高級可視化

更多內(nèi)容可好看白鯨魚的另一個學(xué)習(xí)記錄:
可視化技術(shù)棧及學(xué)習(xí)計劃

參考

數(shù)據(jù)可視化
Python數(shù)據(jù)可視化-seaborn
matplotlib 繪圖可視化知識點整理
10分鐘python圖表繪制 | seaborn入門(一):distplot與kdeplot
Python mpl_toolkits畫3D圖
matplotlib basemap toolkit
matplotlib教程: http://nbviewer.jupyter.org/g...
python學(xué)習(xí)教程notes-python: http://nbviewer.jupyter.org/g...
9102年,該放棄matplotlib畫圖了
Pycon 2017: Python可視化庫大全
Python中除了matplotlib外還有哪些數(shù)據(jù)可視化的庫?

10 Useful Python Data Visualization Libraries for Any Discipline
Python Data Visualization: Comparing 7 tools
Dashboard API in Python
Bokeh Applications
pyecharts + notebook,真的不需要PPT了耶
三個步驟學(xué)習(xí)python可視化
一張圖看懂如何選擇正確的圖表類型

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/44703.html

相關(guān)文章

  • ApacheCN 人工智能知識樹 v1.0

    摘要:貢獻(xiàn)者飛龍版本最近總是有人問我,把這些資料看完一遍要用多長時間,如果你一本書一本書看的話,的確要用很長時間。為了方便大家,我就把每本書的章節(jié)拆開,再按照知識點合并,手動整理了這個知識樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻(xiàn)者:飛龍版...

    劉厚水 評論0 收藏0
  • 首次公開,整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時間永遠(yuǎn)都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評論0 收藏0
  • 重磅 | 完備的 AI 學(xué)習(xí)路線,最詳細(xì)的資源整理!

    摘要:是你學(xué)習(xí)從入門到專家必備的學(xué)習(xí)路線和優(yōu)質(zhì)學(xué)習(xí)資源。的數(shù)學(xué)基礎(chǔ)最主要是高等數(shù)學(xué)線性代數(shù)概率論與數(shù)理統(tǒng)計三門課程,這三門課程是本科必修的。其作為機(jī)器學(xué)習(xí)的入門和進(jìn)階資料非常適合。書籍介紹深度學(xué)習(xí)通常又被稱為花書,深度學(xué)習(xí)領(lǐng)域最經(jīng)典的暢銷書。 showImg(https://segmentfault.com/img/remote/1460000019011569); 【導(dǎo)讀】本文由知名開源平...

    荊兆峰 評論0 收藏0
  • python學(xué)習(xí)筆記 序列

    內(nèi)置序列 容器序列 list, tuple, collections.deque等這些序列能存放不同類型的數(shù)據(jù) 扁平序列 str, byte, bytearray, memoryview, array.array, 這些序列只能容納一種類型數(shù)據(jù) 以上,容器序列存放的是他們所含任意類型對象的引用,而扁平序列存放的是值而不是引用 列表(list)是最基礎(chǔ)也是最重要的序列類型 列表推導(dǎo) >>> symb...

    godiscoder 評論0 收藏0
  • 分享AI有道干貨 | 126 篇 AI 原創(chuàng)文章精選(ML、DL、資源、教程)

    摘要:值得一提的是每篇文章都是我用心整理的,編者一貫堅持使用通俗形象的語言給我的讀者朋友們講解機(jī)器學(xué)習(xí)深度學(xué)習(xí)的各個知識點。今天,紅色石頭特此將以前所有的原創(chuàng)文章整理出來,組成一個比較合理完整的機(jī)器學(xué)習(xí)深度學(xué)習(xí)的學(xué)習(xí)路線圖,希望能夠幫助到大家。 一年多來,公眾號【AI有道】已經(jīng)發(fā)布了 140+ 的原創(chuàng)文章了。內(nèi)容涉及林軒田機(jī)器學(xué)習(xí)課程筆記、吳恩達(dá) deeplearning.ai 課程筆記、機(jī)...

    jimhs 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<