python是一門語言補丁,最大的優勢在於擁有眾多的包,很多事情都可以做。而在數據分析領域提供了pandas,numpy,matplotlib等進行數據可視化,用於股票,自然也是可以的
Ⅱ Python中數據可視化的兩個庫!
1. Matplotlib:是Python中眾多數據可視化庫的鼻祖,其設計風格與20世紀80年代的商業化程序語言MATLAB十分相似,具有很多強大且復雜的可視化功能;還包含了多種類型的API,可以採用多種方式繪制圖標並對圖標進行定製。
2. Seaborn:是基於Matplotlib進行高級封裝的可視化庫,支持互動式界面,使繪制圖表功能變得簡單,且圖表的色彩更具吸引力。
3. ggplot:是基於Matplotlib並旨在以簡單方式提高Matplotlib可視化感染力的庫,採用疊加圖層的形式繪制圖形,比如先繪制坐標軸所在的圖層,再繪制點所在的圖層,最後繪制線所在的圖層,但其並不適用於個性化定製圖形。
4. Boken:是一個互動式的可視化庫,支持使用Web瀏覽器展示,可使用快速簡單的方式將大型數據集轉換成高性能的、可交互的、結構簡單的圖表。
5. Pygal:是一個可縮放矢量圖標庫,用於生成可在瀏覽器中打開的SVG格式的圖表,這種圖表能夠在不同比例的屏幕上自動縮放,方便用戶交互。
6. Pyecharts:是一個生成ECharts的庫,生成的ECharts憑借良好的交互性、精巧的設計得到了眾多開發者的認可。
Ⅲ python數據可視化--可視化概述
數據可視化是python最常見的應用領域之一,數據可視化是藉助圖形化的手段將一組數據以圖形的形式表達出來,並利用數據分析和開發工具發現其中未知信息的數據處理過程。
在學術界有一句話廣為流傳,A picture worths thousand words,就是一圖值千言。在課堂上,我經常舉的例子就是大家在刷朋友圈的時候如果看到有人轉發一篇題目很吸引人的文章時,我們都會點擊進去,可能前幾段話會很認真地看,文章很長的時候後面就會一目十行,失去閱讀的興趣。
所以將數據、表格和文字等內容用圖表的形式表達出來,既能提高讀者閱讀的興趣,還能直觀表達想要表達的內容。
python可視化庫有很多,下面列舉幾個最常用的介紹一下。
matplotlib
它是python眾多數據可視化庫的鼻祖,也是最基礎的底層數據可視化第三方庫,語言風格簡單、易懂,特別適合初學者入門學習。
seaborn
Seaborn是在matplotlib的基礎上進行了更高級的API封裝,從而使得作圖更加容易,在大多數情況下使用seaborn能做出很具有吸引力的圖,而使用matplotlib就能製作具有更多特色的圖。應該把Seaborn視為matplotlib的補充,而不是替代物。
pyecharts
pyecharts是一款將python與echarts結合的強大的數據可視化工具,生成的圖表精巧,交互性良好,可輕松集成至 Flask,Sanic,Django 等主流 Web 框架,得到眾多開發者的認可。
bokeh
bokeh是一個面向web瀏覽器的互動式可視化庫,它提供了多功能圖形的優雅、簡潔的構造,並在大型數據集或流式數據集上提供高性能的交互性。
python這些可視化庫可以便捷、高效地生成豐富多彩的圖表,下面列舉一些常見的圖表。
柱形圖
條形圖
坡度圖
南丁格爾玫瑰圖
雷達圖
詞雲圖
散點圖
等高線圖
瀑布圖
相關系數圖
散點曲線圖
直方圖
箱形圖
核密度估計圖
折線圖
面積圖
日歷圖
餅圖
圓環圖
馬賽克圖
華夫餅圖
還有地理空間型等其它圖表,就不一一列舉了,下節開始我們先學習matplotlib這個最常用的可視化庫。
Ⅳ 強烈推薦一款Python可視化神器!強烈必備!
Plotly Express 是一個新的高級 Python 可視化庫:它是 Plotly.py 的高級封裝,它為復雜的圖表提供了一個簡單的語法。
受 Seaborn 和 ggplot2 的啟發,它專門設計為具有簡潔,一致且易於學習的 API :只需一次導入,您就可以在一個函數調用中創建豐富的互動式繪圖,包括分面繪圖(faceting)、地圖、動畫和趨勢線。 它帶有數據集、顏色面板和主題,就像 Plotly.py 一樣。
Plotly Express 完全免費:憑借其寬松的開源 MIT 許可證,您可以隨意使用它(是的,甚至在商業產品中!)。
最重要的是,Plotly Express 與 Plotly 生態系統的其他部分完全兼容:在您的 Dash 應用程序中使用它,使用 Orca 將您的數據導出為幾乎任何文件格式,或使用JupyterLab 圖表編輯器在 GUI 中編輯它們!
用 pip install plotly_express 命令可以安裝 Plotly Express。
一旦導入Plotly Express(通常是 px ),大多數繪圖只需要一個函數調用,接受一個整潔的Pandas dataframe,並簡單描述你想要製作的圖。 如果你想要一個基本的散點圖,它只是 px.scatter(data,x =「column_name」,y =「column_name」)。
以下是內置的 Gapminder 數據集的示例,顯示2007年按國家/地區的人均預期壽命和人均GDP 之間的趨勢:
如果你想通過大陸區分它們,你可以使用 color 參數為你的點著色,由 px 負責設置默認顏色,設置圖例等:
這里的每一點都是一個國家,所以也許我們想要按國家人口來衡量這些點...... 沒問題:這里也有一個參數來設置,它被稱為 size:
如果你好奇哪個國家對應哪個點? 可以添加一個 hover_name ,您可以輕松識別任何一點:只需將滑鼠放在您感興趣的點上即可! 事實上,即使沒有 hover_name ,整個圖表也是互動的:
也可以通過 facet_col =」continent「 來輕松劃分各大洲,就像著色點一樣容易,並且讓我們使用 x軸 對數(log_x)以便在我們在圖表中看的更清晰:
也許你不僅僅對 2007年 感興趣,而且你想看看這張圖表是如何隨著時間的推移而演變的。 可以通過設置 animation_frame=「year」 (以及 animation_group =「country」 來標識哪些圓與控制條中的年份匹配)來設置動畫。
在這個最終版本中,讓我們在這里調整一些顯示,因為像「gdpPercap」 這樣的文本有點難看,即使它是我們的數據框列的名稱。 我們可以提供更漂亮的「標簽」 (labels),可以在整個圖表、圖例、標題軸和懸停(hovers)中應用。 我們還可以手動設置邊界,以便動畫在整個過程中看起來更棒:
因為這是地理數據,我們也可以將其表示為動畫地圖,因此這清楚地表明 Plotly Express 不僅僅可以繪制散點圖(不過這個數據集缺少前蘇聯的數據)。
事實上,Plotly Express 支持三維散點圖、三維線形圖、極坐標和地圖上三元坐標以及二維坐標。 條形圖(Bar)有二維笛卡爾和極坐標風格。
進行可視化時,您可以使用單變數設置中的直方圖(histograms)和箱形圖(box)或小提琴圖(violin plots),或雙變數分布的密度等高線圖(density contours)。 大多數二維笛卡爾圖接受連續或分類數據,並自動處理日期/時間數據。 可以查看我們的圖庫 (ref-3) 來了解每個圖表的例子。
數據 探索 的主要部分是理解數據集中值的分布,以及這些分布如何相互關聯。 Plotly Express 有許多功能來處理這些任務。
使用直方圖(histograms),箱形圖(box)或小提琴圖(violin plots)可視化單變數分布:
直方圖:
箱形圖:
小提琴圖:
還可以創建聯合分布圖(marginal rugs),使用直方圖,箱形圖(box)或小提琴來顯示雙變數分布,也可以添加趨勢線。 Plotly Express 甚至可以幫助你在懸停框中添加線條公式和R²值! 它使用 statsmodels 進行普通最小二乘(OLS)回歸或局部加權散點圖平滑(LOWESS)。
在上面的一些圖中你會注意到一些不錯的色標。 在 Plotly Express 中, px.colors 模塊包含許多有用的色標和序列:定性的、序列型的、離散的、循環的以及所有您喜歡的開源包:ColorBrewer、cmocean 和 Carto 。 我們還提供了一些功能來製作可瀏覽的樣本供您欣賞(ref-3):
定性的顏色序列:
眾多內置順序色標中的一部分:
我們特別為我們的互動式多維圖表感到自豪,例如散點圖矩陣(SPLOMS)、平行坐標和我們稱之為並行類別的並行集。 通過這些,您可以在單個圖中可視化整個數據集以進行數據 探索 。 在你的Jupyter 筆記本中查看這些單行及其啟用的交互:
散點圖矩陣(SPLOM)允許您可視化多個鏈接的散點圖:數據集中的每個變數與其他變數的關系。 數據集中的每一行都顯示為每個圖中的一個點。 你可以進行縮放、平移或選擇操作,你會發現所有圖都鏈接在一起!
平行坐標允許您同時顯示3個以上的連續變數。 dataframe 中的每一行都是一行。 您可以拖動尺寸以重新排序它們並選擇值范圍之間的交叉點。
並行類別是並行坐標的分類模擬:使用它們可視化數據集中多組類別之間的關系。
Plotly Express 之於 Plotly.py 類似 Seaborn 之於 matplotlib:Plotly Express 是一個高級封裝庫,允許您快速創建圖表,然後使用底層 API 和生態系統的強大功能進行修改。 對於Plotly 生態系統,這意味著一旦您使用 Plotly Express 創建了一個圖形,您就可以使用Themes,使用 FigureWidgets 進行命令性編輯,使用 Orca 將其導出為幾乎任何文件格式,或者在我們的 GUI JupyterLab 圖表編輯器中編輯它 。
主題(Themes)允許您控制圖形范圍的設置,如邊距、字體、背景顏色、刻度定位等。 您可以使用模板參數應用任何命名的主題或主題對象:
有三個內置的 Plotly 主題可以使用, 分別是 plotly, plotlywhite 和 plotlydark。
px 輸出繼承自 Plotly.py 的 Figure 類 ExpressFigure 的對象,這意味著你可以使用任何 Figure 的訪問器和方法來改變 px生成的繪圖。 例如,您可以將 .update() 調用鏈接到 px 調用以更改圖例設置並添加註釋。 .update() 現在返回修改後的數字,所以你仍然可以在一個很長的 Python 語句中執行此操作:
在這里,在使用 Plotly Express 生成原始圖形之後,我們使用 Plotly.py 的 API 來更改一些圖例設置並添加註釋。
Dash 是 Plotly 的開源框架,用於構建具有 Plotly.py 圖表的分析應用程序和儀錶板。Plotly Express 產生的對象與 Dash 100%兼容,只需將它們直接傳遞到 dash_core_components.Graph,如下所示: dcc.Graph(figure = px.scatter(...))。 這是一個非常簡單的 50行 Dash 應用程序的示例,它使用 px 生成其中的圖表:
這個 50 行的 Dash 應用程序使用 Plotly Express 生成用於瀏覽數據集的 UI 。
可視化數據有很多原因:有時您想要提供一些想法或結果,並且您希望對圖表的每個方面施加很多控制,有時您希望快速查看兩個變數之間的關系。 這是交互與 探索 的范疇。
Plotly.py 已經發展成為一個非常強大的可視化交互工具:它可以讓你控制圖形的幾乎每個方面,從圖例的位置到刻度的長度。 不幸的是,這種控制的代價是冗長的:有時可能需要多行 Python 代碼才能用 Plotly.py 生成圖表。
我們使用 Plotly Express 的主要目標是使 Plotly.py 更容易用於 探索 和快速迭代。
我們想要構建一個庫,它做出了不同的權衡:在可視化過程的早期犧牲一些控制措施來換取一個不那麼詳細的 API,允許你在一行 Python 代碼中製作各種各樣的圖表。 然而,正如我們上面所示,該控制項並沒有消失:你仍然可以使用底層的 Plotly.py 的 API 來調整和優化用 Plotly Express 製作的圖表。
支持這種簡潔 API 的主要設計決策之一是所有 Plotly Express 的函數都接受「整潔」的 dataframe 作為輸入。 每個 Plotly Express 函數都體現了dataframe 中行與單個或分組標記的清晰映射,並具有圖形啟發的語法簽名,可讓您直接映射這些標記的變數,如 x 或 y 位置、顏色、大小、 facet-column 甚至是 動畫幀到數據框(dataframe)中的列。 當您鍵入 px.scatter(data,x ='col1',y='col2') 時,Plotly Express 會為數據框中的每一行創建一個小符號標記 - 這就是 px.scatter 的作用 - 並將 「col1」 映射到 x 位置(類似於 y 位置)。 這種方法的強大之處在於它以相同的方式處理所有可視化變數:您可以將數據框列映射到顏色,然後通過更改參數來改變您的想法並將其映射到大小或進行行分面(facet-row)。
接受整個整潔的 dataframe 的列名作為輸入(而不是原始的 numpy 向量)也允許 px 為你節省大量的時間,因為它知道列的名稱,它可以生成所有的 Plotly.py 配置用於標記圖例、軸、懸停框、構面甚至動畫幀。 但是,如上所述,如果你的 dataframe 的列被笨拙地命名,你可以告訴 px 用每個函數的 labels 參數替換更好的。
僅接受整潔輸入所帶來的最終優勢是它更直接地支持快速迭代:您整理一次數據集,從那裡可以使用 px 創建數十種不同類型的圖表,包括在 SPLOM 中可視化多個維度 、使用平行坐標、在地圖上繪制,在二維、三維極坐標或三維坐標中使用等,所有這些都不需要重塑您的數據!
在 API 級別,我們在 px 中投入了大量的工作,以確保所有參數都被命名,以便在鍵入時最大限度地發現:所有 scatter -類似的函數都以 scatter 開頭(例如 scatter_polar, scatter_ternary)所以你可以通過自動補全來發現它們。 我們選擇拆分這些不同的散點圖函數,因此每個散點圖函數都會接受一組定製的關鍵字參數,特別是它們的坐標系。 也就是說,共享坐標系的函數集(例如 scatter, line & bar,或 scatter_polar, line_polar 和 bar_polar )也有相同的參數,以最大限度地方便學習。 我們還花了很多精力來提出簡短而富有表現力的名稱,這些名稱很好地映射到底層的 Plotly.py 屬性,以便於在工作流程中稍後調整到交互的圖表中。
最後,Plotly Express 作為一個新的 Python 可視化庫,在 Plotly 生態系統下,將會迅速發展。所以不要猶豫,立即開始使用 Plotly Express 吧!
Ⅳ Python中數據可視化經典庫有哪些
Python有很多經典的數據可視化庫,比較經典的數據可視化庫有下面幾個。
是Python編程語言及其數值數學擴展包 NumPy 的可視化操作界面。它利用通用的圖形用戶界面工具包,如 Tkinter, wxPython, Qt 或 GTK+,向應用程序嵌入式繪圖提供了應用程序介面。
pyplot 是 matplotlib 的一個模塊,它提供了一個類似 MATLAB 的介面。 matplotlib 被設計得用起來像 MATLAB,具有使用 Python 的能力。
優點:繪圖質量高,可繪制出版物質量級別的圖形。代碼夠簡單,易於理解和擴展,使繪圖變得輕松,通過Matplotlib可以很輕松地畫一些或簡單或復雜的圖形,幾行代碼即可生成直方圖、條形圖、散點圖、密度圖等等,最重要的是免費和開源。
優點:用於創建、操縱和研究復雜網路的結構、以及學習復雜網路的結構、功能及其動力學。
上面是我的回答,希望對您有所幫助!
Ⅵ 數字黑洞:python-matplotlib來實現可視化
1 說明
=====
1.1 2020年諾貝爾生物理學獎獲得者:
英國科學家 羅傑·彭羅斯(Roger Penrose) ,因他發現 黑洞 的形成是廣義相對論的一個預言;
德國科學家 萊因哈德·根澤爾(Reinhard Genzel) &
美國女科學家 安德烈亞·蓋茲(Andrea Ghez) ,因他們發現銀河系中心的超大質量緻密天體。
1.2 數字黑洞與python-matplotlib可視化
==============================
1.2.1 數字黑洞:
無論怎樣數值,在規定的處理法則下,最終都將得到固定的一個值,再也跳不出去了,
就像宇宙中的黑洞可以將任何物質,以及運行速度最快的光牢牢吸住,不使它們逃脫一樣。
1.2.2 看似無聊,但是數學是宇宙中一切的基礎。
1.2.3 一個有意思的數字 游戲 ,即:輸入一個非0的自然數,
若為奇數則*3-1;若是偶數則/2,並且得到的自然數繼續進行這樣的運算,到1則停止
(會導致最後五個數值都是: 1 回落)特點在於:
不論輸入什麼自然數(0除外),最終的結果都是1,就像黑洞一樣,無論什麼數字都無法逃脫。
1.2.4 python-matplotlib可視化來看看效果:
2 matplotlib代碼
============
2.1 基礎代碼1:
來自這篇文章
2.2 完整版matplotlib可視化代碼2:
2.3 後10位數字黑洞數值的可視化代碼3:
3 當然數字黑洞還有很多,上面只是其中一個方法,最終回落1,就像宇宙中的黑洞存在。
Ⅶ Python數據可視化利器Matplotlib從入門到高級4
2D曲線繪制是Matplotlib繪圖的最基本功能,也是用得最多、最重要的繪圖功能之一,本文開始詳細介紹Matplotlib 2D曲線繪圖功能。我的介紹主要以面向對象的編碼風格為主,但會在文章的末尾附上相應的pyplot風格的源代碼,供大家查閱、對比。我們先看一段代碼:
代碼運行效果如下:
這個繪圖中我們沒有作任何設置,一切交給Matplotlib處理。我們只是看到了繪制出的曲線的樣子。但這與我們所想要的效果可能差異較大。所以我們還需要對圖形進行一些自定義。
不管我們想生成什麼樣的圖形,在Matplotlib當中,大致都可以總結為三步:一是構造繪圖用的數據(Matplotlib推薦numpy數據,本系列介紹Matplotlib繪圖,暫不涉及numpy的相關內容,留待後續有空餘時吧);二是根據數據的特點選擇適當的繪圖方法並繪制出數據的圖形;第三步則是對繪制的圖形進行自定義設置或者美化以達到滿足我們獲得精美的輸出圖形的要求。
在上面的繪圖中,我們僅僅做到了第二步,下面我們來進行一些自定義,而Matplotlib為此提供了非常豐富的功能。
你可能最想先嘗試一下換個顏色看看曲線是什麼樣的,這有很多種方法。首先,我們可以在繪制圖形的時候直接指定它,我們把繪圖的代碼改成下面的樣子:
這里的 『r』 是 「red」的簡寫,表示將曲線的顏色指定為紅色。也可以寫成下面的樣子,這樣可讀性更高:
plot 返回一個 Line2D 對象的列表,我們使用一個帶有「 line1, 」的元組來解包,隨後使用 set_color() 代碼設置line1 曲線的顏色,請注意這里設置的顏色會覆蓋 plot 繪圖函數當中指定的顏色。上面三段代碼各自獨立運行之後的效果是一樣的。如下:
為了提高效率,Matplotlib模仿MATLAB支持常用顏色的單字母代碼縮寫。
你還可以使用不區分大小寫的十六進制 RGB 或 RGBA 字元串(如:'#0f0f0f'),或者不區分大小寫的 X11/CSS4 顏色名稱(如:'aquamarine'),以及來自 xkcd color survey 的不區分大小寫的顏色名稱(如:'xkcd:sky blue')等等。更為詳細的顏色規范,你可以查閱官方文檔。但對於Python辦公而言,掌握這些應該已經足夠了。
與曲線顏色一樣,線型和線寬也有多種方式來指定:
這里我們最終指定的線寬為2.0磅,繪圖函數當中指定的線寬被後續指定的屬性值覆蓋了。而線型在這里由set_linestyle()指定,其中「--」和「-.」都是Matplotlib中支持的線型,「--」表示虛線,而「-.」則是點劃線。而Matplotlib默認的線型「-」實線,除此之外,Matplotlib還支持「:」點線。
我們繪制曲線之前構造的數據點在曲線上也可以標記出來,這些標記點有不同的風格。同樣可以以不同的方式來設置它:
注意第一行代碼當中的「r:o」字元串,它是一種簡寫形式,是將顏色、線型和標記點形狀在一個字元串中同時設置的方式,其中的「r」表示紅色,「:」表示點線,「o」表示標記點為大圓點。只有在顏色使用單字元代碼時才可以像上面這樣組合起來同時表示三個屬性。默認情況下,標記點的顏色與線型顏色相同,但可以單獨設置與曲線不同的顏色,不僅如此,標記點的邊線顏色和中間填充顏色也都可以單獨設置。上面第二行代碼我們就使用set_markeredgecolor('b')將標記點邊線顏色設置為了藍色。與標記點設置相關的還有set_marker(設置標記點形狀)、set_markeredgewidth(設置標記點邊線寬度)、set_markerfacecolor(設置標記點中間的填充色)、set_markersize (設置標記點的大小)等。下面是我整理的Matplotlib支持的所有標記點形狀。
本文先介紹到此,後續進一步介紹坐標軸、圖例和網格線的設置。最後附上本文pyplot風格的繪圖代碼:
顯然這種簡單繪圖pyplot風格要簡潔一些,還是很有優勢的。
Ⅷ 121 11 個案例掌握 Python 數據可視化--星際探索
星空是無數人夢寐以求想了解的一個領域,遠古的人們通過肉眼觀察星空,並制定了太陰歷,指導農業發展。隨著現代科技發展,有了更先進的設備進行星空的探索。本實驗獲取了美國國家航空航天局(NASA)官網發布的地外行星數據,研究及可視化了地外行星各參數、尋找到了一顆類地行星並研究了天體參數的相關關系。
輸入並執行魔法命令 %matplotlib inline, 設置全局字型大小,去除圖例邊框,去除右側和頂部坐標軸。
本數據集來自 NASA,行星發現是 NASA 的重要工作之一,本數據集搜集了 NASA 官網發布的 4296 顆行星的數據,本數據集欄位包括:
導入數據並查看前 5 行。
截至 2020 年 10 月 22 日 全球共發現 4296 顆行星,按年聚合並繪制年度行星發現數,並在左上角繪制 NASA 的官方 LOGO 。
從運行結果可以看出,2005 年以前全球行星發現數是非常少的,經計算總計 173 顆,2014 和 2016 是行星發現成果最多的年份,2016 年度發現行星 1505 顆。
對不同機構/項目/計劃進行聚合並降序排列,繪制發現行星數目的前 20 。
2009 年至 2013 年,開普勒太空望遠鏡成為有史以來最成功的系外行星發現者。在一片天空中至少找到了 1030 顆系外行星以及超過 4600 顆疑似行星。當機械故障剝奪了該探測器對於恆星的精確定位功能後,地球上的工程師們於 2014 年對其進行了徹底改造,並以 K2 計劃命名,後者將在更短的時間內搜尋宇宙的另一片區域。
對發現行星的方式進行聚合並降序排列,繪制各種方法發現行星的比例,由於排名靠後的幾種方式發現行星數較少,因此不顯示其標簽。
行星在宇宙中並不會發光,因此無法直接觀察,行星發現的方式多為間接方式。從輸出結果可以看出,發現行星主要有以下 3 種方式,其原理如下:
針對不同的行星質量,繪制比其質量大(或者小)的行星比例,由於行星質量量綱分布跨度較大,因此採用對數坐標。
從輸出結果可以看出,在已發現的行星中,96.25% 行星的質量大於地球。(圖中橫坐標小於 e 的紅色面積非常小)
通過 sns.distplot 介面繪制全部行星的質量分布圖。
從輸出結果可以看出,所有行星質量分布呈雙峰分布,第一個峰在 1.8 左右(此處用了對數單位,表示大約 6 個地球質量),第二個峰在 6.2 左右(大概 493 個地球質量)。
針對不同發現方式發現的行星,繪制各行星的公轉周期和質量的關系。
從輸出結果可以看出:徑向速度(Radial Velocity)方法發現的行星在公轉周期和質量上分布更寬,而凌日(Transit)似乎只能發現公轉周期相對較短的行星,這是因為兩種方法的原理差異造成的。對於公轉周期很長的行星,其運行到恆星和觀察者之間的時間也較長,因此凌日發現此類行星會相對較少。而徑向速度與其說是在發現行星,不如說是在觀察恆星,由於恆星自身發光,因此其觀察機會更多,發現各類行星的可能性更大。
針對不同發現方式發現的行星,繪制各行星的距離和質量的關系。
從輸出結果可以看出,凌日和徑向速度對距離較為敏感,遠距離的行星大多是通過凌日發現的,而近距離的行星大多數通過徑向速度發現的。原因是:近距離的行星其引力對恆星造成的擺動更為明顯,因此更容易觀察;當距離較遠時,引力作用變弱,擺動效應減弱,因此很難藉助此方法觀察到行星。同時,可以觀察到當行星質量更大時,其距離分布相對較寬,這是因為雖然相對恆星的距離變長了,但是由於行星質量的增加,相對引力也同步增加,恆星擺動效應會變得明顯。
將所有行星的質量和半徑對數化處理,繪制其分布並擬合其分布。
由於:
因此,從原理上質量對數與半徑對數應該是線性關系,且斜率為定值 3 ,截距的大小與密度相關。
從輸出結果可以看出:行星質量和行星半徑在對數變換下,具有較好的線性關系。輸出 fix_xy 數值可知,其關系可以擬合出如下公式:
擬合出曲線對應的行星平均密度為:
同樣的方式繪制恆星質量與半徑的關系。
從輸出結果可以看出,恆星與行星的規律不同,其質量與半徑在對數下呈二次曲線關系,其關系符合以下公式:
同樣的方式研究恆星表面重力加速度與半徑的關系。
從輸出結果可以看出,恆星表面對數重力加速度與其對數半徑呈現較好的線性關系:
以上我們分別探索了各變數的分布和部分變數的相關關系,當數據較多時,可以通過 pd.plotting.scatter_matrix 介面,直接繪制各變數的分布和任意兩個變數的散點圖分布,對於數據的初步探索,該介面可以讓我們迅速對數據全貌有較為清晰的認識。
通過行星的半徑和質量,恆星的半徑和質量,以及行星的公轉周期等指標與地球的相似性,尋找諸多行星中最類似地球的行星。
從輸出結果可以看出,在 0.6 附近的位置出現了一個最大的圓圈,那就是我們找到的類地行星 Kepler - 452 b ,讓我們了解一下這顆行星:
數據顯示,Kepler - 452 b 行星公轉周期為 384.84 天,半徑為 1.63 地球半徑,質量為 3.29 地球質量;它的恆星為 Kepler - 452 半徑為太陽的 1.11 倍,質量為 1.04 倍,恆星方面數據與太陽相似度極高。
以下內容來自網路。 開普勒452b(Kepler 452b) ,是美國國家航空航天局(NASA)發現的外行星, 直徑是地球的 1.6 倍,地球相似指數( ESI )為 0.83,距離地球1400光年,位於為天鵝座。
2015 年 7 月 24 日 0:00,美國國家航空航天局 NASA 舉辦媒體電話會議宣稱,他們在天鵝座發現了一顆與地球相似指數達到 0.98 的類地行星開普勒 - 452 b。這個類地行星距離地球 1400 光年,繞著一顆與太陽非常相似的恆星運行。開普勒 452 b 到恆星的距離,跟地球到太陽的距離相同。NASA 稱,由於缺乏關鍵數據,現在不能說 Kepler - 452 b 究竟是不是「另外一個地球」,只能說它是「迄今最接近另外一個地球」的系外行星。
在銀河系經緯度坐標下繪制所有行星,並標記地球和 Kepler - 452 b 行星的位置。
類地行星,是人類寄希望移民的第二故鄉,但即使最近的 Kepler-452 b ,也與地球相聚 1400 光年。
以下通過行星的公轉周期和質量兩個特徵將所有行星聚為兩類,即通過訓練獲得兩個簇心。
定義函數-計算距離
聚類距離採用歐式距離:
定義函數-訓練簇心
訓練簇心的原理是:根據上一次的簇心計算所有點與所有簇心的距離,任一點的分類以其距離最近的簇心確定。依此原理計算出所有點的分類後,對每個分類計算新的簇心。
定義函數預測分類
根據訓練得到的簇心,預測輸入新的數據特徵的分類。
開始訓練
隨機生成一個簇心,並訓練 15 次。
繪制聚類結果
以最後一次訓練得到的簇心為基礎,進行行星的分類,並以等高面的形式繪制各類的邊界。
從運行結果可以看出,所有行星被分成了兩類。並通過上三角和下三角標注了每個類別的簇心位置。
聚類前
以下輸出了聚類前原始數據繪制的圖像。
Ⅸ python可視化神器——pyecharts庫
無意中從今日頭條中看到的一篇文章,可以生成簡單的圖表。據說一些大數據開發們也是經常用類似的圖表庫,畢竟有現成的,改造下就行,誰會去自己造輪子呢。
pyecharts是什麼?
pyecharts 是一個用於生成 Echarts 圖表的類庫。Echarts 是網路開源的一個數據可視化 JS 庫。用 Echarts 生成的圖可視化效果非常棒, pyecharts 是為了與 Python 進行對接,方便在 Python 中直接使用數據生成圖 。使用pyecharts可以生成獨立的網頁,也可以在flask、django中集成使用。
安裝很簡單:pip install pyecharts
如需使用 Jupyter Notebook 來展示圖表,只需要調用自身實例即可,同時兼容 Python2 和 Python3 的 Jupyter Notebook 環境。所有圖表均可正常顯示,與瀏覽器一致的交互體驗,簡直不要太強大。
參考自pyecharts官方文檔: http://pyecharts.org
首先開始來繪制你的第一個圖表
使用 Jupyter Notebook 來展示圖表,只需要調用自身實例即可
add() 主要方法,用於添加圖表的數據和設置各種配置項
render() 默認將會在根目錄下生成一個 render.html 的文件,文件用瀏覽器打開。
使用主題
自 0.5.2+ 起,pyecharts 支持更換主體色系
使用 pyecharts-snapshot 插件
如果想直接將圖片保存為 png, pdf, gif 格式的文件,可以使用 pyecharts-snapshot。使用該插件請確保你的系統上已經安裝了 Nodejs 環境。
安裝 phantomjs $ npm install -g phantomjs-prebuilt
安裝 pyecharts-snapshot $ pip install pyecharts-snapshot
調用 render 方法 bar.render(path='snapshot.png') 文件結尾可以為 svg/jpeg/png/pdf/gif。請注意,svg 文件需要你在初始化 bar 的時候設置 renderer='svg'。
圖形繪制過程
基本上所有的圖表類型都是這樣繪制的:
chart_name = Type() 初始化具體類型圖表。
add() 添加數據及配置項。
render() 生成本地文件(html/svg/jpeg/png/pdf/gif)。
add() 數據一般為兩個列表(長度一致)。如果你的數據是字典或者是帶元組的字典。可利用 cast() 方法轉換。
多次顯示圖表
從 v0.4.0+ 開始,pyecharts 重構了渲染的內部邏輯,改善效率。推薦使用以下方式顯示多個圖表。如果使是 Numpy 或者 Pandas,可以參考這個示例
當然你也可以採用更加酷炫的方式,使用 Jupyter Notebook 來展示圖表,matplotlib 有的,pyecharts 也會有的
Note: 從 v0.1.9.2 版本開始,廢棄 render_notebook() 方法,現已採用更加 pythonic 的做法。直接調用本身實例就可以了。
比如這樣
還有這樣
如果使用的是自定義類,直接調用自定義類示例即可
圖表配置
圖形初始化
通用配置項
xyAxis:平面直角坐標系中的 x、y 軸。(Line、Bar、Scatter、EffectScatter、Kline)
dataZoom:dataZoom 組件 用於區域縮放,從而能自由關注細節的數據信息,或者概覽數據整體,或者去除離群點的影響。(Line、Bar、Scatter、EffectScatter、Kline、Boxplot)
legend:圖例組件。圖例組件展現了不同系列的標記(symbol),顏色和名字。可以通過點擊圖例控制哪些系列不顯示。
label:圖形上的文本標簽,可用於說明圖形的一些數據信息,比如值,名稱等。
lineStyle:帶線圖形的線的風格選項(Line、Polar、Radar、Graph、Parallel)
grid3D:3D笛卡爾坐標系組配置項,適用於 3D 圖形。(Bar3D, Line3D, Scatter3D)
axis3D:3D 笛卡爾坐標系 X,Y,Z 軸配置項,適用於 3D 圖形。(Bar3D, Line3D, Scatter3D)
visualMap:是視覺映射組件,用於進行『視覺編碼』,也就是將數據映射到視覺元素(視覺通道)
markLine&markPoint:圖形標記組件,用於標記指定的特殊數據,有標記線和標記點兩種。(Bar、Line、Kline)
tooltip:提示框組件,用於移動或點擊滑鼠時彈出數據內容
toolbox:右側實用工具箱
圖表詳細
Bar(柱狀圖/條形圖)
Bar3D(3D 柱狀圖)
Boxplot(箱形圖)
EffectScatter(帶有漣漪特效動畫的散點圖)
Funnel(漏斗圖)
Gauge(儀表盤)
Geo(地理坐標系)
GeoLines(地理坐標系線圖)
Graph(關系圖)
HeatMap(熱力圖)
Kline/Candlestick(K線圖)
Line(折線/面積圖)
Line3D(3D 折線圖)
Liquid(水球圖)
Map(地圖)
Parallel(平行坐標系)
Pie(餅圖)
Polar(極坐標系)
Radar(雷達圖)
Sankey(桑基圖)
Scatter(散點圖)
Scatter3D(3D 散點圖)
ThemeRiver(主題河流圖)
TreeMap(矩形樹圖)
WordCloud(詞雲圖)
用戶自定義
Grid 類:並行顯示多張圖
Overlap 類:結合不同類型圖表疊加畫在同張圖上
Page 類:同一網頁按順序展示多圖
Timeline 類:提供時間線輪播多張圖
統一風格
註:pyecharts v0.3.2以後,pyecharts 將不再自帶地圖 js 文件。如用戶需要用到地圖圖表,可自行安裝對應的地圖文件包。
地圖文件被分成了三個 Python 包,分別為:
全球國家地圖:
echarts-countries-pypkg
中國省級地圖:
echarts-china-provinces-pypkg
中國市級地圖:
echarts-china-cities-pypkg
直接使用python的pip安裝
但是這里大家一定要注意,安裝完地圖包以後一定要重啟jupyter notebook,不然是無法顯示地圖的。
顯示如下:
總得來說,這是一個非常強大的可視化庫,既可以集成在flask、Django開發中,也可以在做數據分析的時候單獨使用,實在是居家旅行的必備神器啊
Ⅹ 如何用Python和機器學習炒股賺錢
相信很多人都想過讓人工智慧來幫你賺錢,但到底該如何做呢?瑞士日內瓦的一位金融數據顧問 Gaëtan Rickter 近日發表文章介紹了他利用 Python 和機器學習來幫助炒股的經驗,其最終成果的收益率跑贏了長期處於牛市的標准普爾 500 指數。雖然這篇文章並沒有將他的方法完全徹底公開,但已公開的內容或許能給我們帶來如何用人工智慧炒股的啟迪。
我終於跑贏了標准普爾 500 指數 10 個百分點!聽起來可能不是很多,但是當我們處理的是大量流動性很高的資本時,對沖基金的利潤就相當可觀。更激進的做法還能得到更高的回報。
這一切都始於我閱讀了 Gur Huberman 的一篇題為《Contagious Speculation and a Cure for Cancer: A Non-Event that Made Stock Prices Soar》的論文。該研究描述了一件發生在 1998 年的涉及到一家上市公司 EntreMed(當時股票代碼是 ENMD)的事件:
「星期天《紐約時報》上發表的一篇關於癌症治療新葯開發潛力的文章導致 EntreMed 的股價從周五收盤時的 12.063 飆升至 85,在周一收盤時接近 52。在接下來的三周,它的收盤價都在 30 以上。這股投資熱情也讓其它生物科技股得到了溢價。但是,這個癌症研究方面的可能突破在至少五個月前就已經被 Nature 期刊和各種流行的報紙報道過了,其中甚至包括《泰晤士報》!因此,僅僅是熱情的公眾關注就能引發股價的持續上漲,即便實際上並沒有出現真正的新信息。」
在研究者給出的許多有見地的觀察中,其中有一個總結很突出:
「(股價)運動可能會集中於有一些共同之處的股票上,但這些共同之處不一定要是經濟基礎。」
我就想,能不能基於通常所用的指標之外的其它指標來劃分股票。我開始在資料庫裡面挖掘,幾周之後我發現了一個,其包含了一個分數,描述了股票和元素周期表中的元素之間的「已知和隱藏關系」的強度。
我有計算基因組學的背景,這讓我想起了基因和它們的細胞信號網路之間的關系是如何地不為人所知。但是,當我們分析數據時,我們又會開始看到我們之前可能無法預測的新關系和相關性。
如果你使用機器學習,就可能在具有已知和隱藏關系的上市公司的寄生、共生和共情關系之上搶佔先機,這是很有趣而且可以盈利的。最後,一個人的盈利能力似乎完全關乎他在生成這些類別的數據時想出特徵標簽(即概念(concept))的強大組合的能力。
我在這類模型上的下一次迭代應該會包含一個用於自動生成特徵組合或獨特列表的單獨演算法。也許會基於近乎實時的事件,這可能會影響那些具有隻有配備了無監督學習演算法的人類才能預測的隱藏關系的股票組。