-
1 # 你看我獨角獸嗎
-
2 # 壹瓜壹果
這裡主要介紹python的另一個視覺化庫pandas。
Pandas是一個功能非常非常強大的資料分析工具,廣泛的應用於各個領域,包括金融,經濟,統計,分析等學術和商業領域。在本文中,我們只是簡單的介紹如何使用pandas做資料的視覺化。
透過pip命令我們可以非常容易的把pansdas環境安裝好。因為pandas是在matplotlib的基礎上開發並提供更易用的繪圖介面,所以我們在準備環境的時候也需要安裝matplotlib。
pip install matplotlib
pip install pandas
環境準備好了,我們接下來看看如何使用pandas做資料的視覺化。Pandas的一個基本概念是資料幀(DataFrame),它是二維的表格型資料結構,我們可以簡單的理解為資料的行和列的表格。下面我們看看如何在DataFrame繪製各種型別的圖表。
線條圖DataFrame上的線條圖其實只是對matplotlib庫的plot()方法的簡單包裝。下面程式碼中我們隨機生成4組包含30個值的資料來繪製線條圖。每一組資料線上條圖上由不同的顏色表示。
執行上面示例程式碼, 我們得到如下圖表:
條形圖下面的程式碼中我們隨機的生成4組包含10個值的資料來繪製條形圖。條形圖透過柱形的高度/條形的寬度來表現資料的大小。要繪製水平條形圖,使用barh()方法;要生成一個疊加條形圖,透過指定stacked=True來實現。
執行上面示例程式碼, 我們得到如下圖表:
直方圖可以使用plot.hist()方法繪製直方圖,透過指定bins值我們可以控制統計區間的大小。
執行上面示例程式碼, 我們得到如下圖表:
箱形圖形圖是一種用作顯示一組資料分散情況資料的統計圖。它能顯示出一組數的最大值、最小值、中位數、下四分位數及上四分位數。下面我們在[0, 1)區間上隨機生成5組包含10個值的資料,用箱形圖來表示出每一組資料的分散情況。
執行上面示例程式碼, 我們得到如下圖表:
區域塊圖DataFrame.plot.area()方法建立區域圖形。
執行上面示例程式碼, 我們得到如下圖表:
散點圖直角座標系上的散點圖可以用來展現資料的x,y之間的關係。DataFrame.plot.scatter()方法可以建立散點圖。下面我們隨機生成表示300個點的資料來繪製散點圖。
執行上面示例程式碼, 我們得到如下圖表:
餅狀圖餅狀圖主要用於表現不同類目的資料在總和中的佔比,每個的弧度表示資料數量的比例。pandas的DataFrame.plot.pie()方法可以建立餅狀圖。下面隨機的生成4個數值,並用餅狀圖表示繪製各個數值在總和中的比例。
執行上面示例程式碼, 我們得到如下圖表:
-
3 # NC少年
推薦: plotnine和seaborn(seaborn有人回答過了,這裡不再重複敘述)
python世界的ggplot2說起plotnine,可能感覺小眾,但說到ggplot2, 在R的世界裡可是大名鼎鼎。兩年前,一直找python版本的ggplot版本,當時有人移植過,但是用起來bug比較多,各種坑。直到去年後半年,找到了plotnine這個包,細節上雖然沒有ggplot的完美,但基本可用,並且一直在維護。當時激動不已~
ggplot的設計思想最特色也是吸引我的地方有兩點:
資料是資料,繪圖是繪圖。同一份資料,可根據不同的繪圖命令,按需展示成各種不同的圖片,而不是按不同的繪圖需求,調整各種資料。
按圖層疊加,一個圖層一個圖層的繪製
舉例上面這麼說,可能比較抽象,舉個plotnine官網的例子:
(ggplot(mtcars, aes("wt", "mpg", color="factor(gear)")) + geom_point()+ stat_smooth(method="lm") + facet_wrap("~gear"))有沒有感覺? 用matplotlib就像是用個底層組合語言繪圖:一一逐次指定每條線的顏色、點的大小、線的型別等等。而用plotnine, 感覺是在用高層語言的API繪圖: 顏色請選用xx列, 線的型別請選用yy列。繪圖效率上比 matplotlib高太多! 也優雅很多!
溫馨提示plotnine的學習曲線相對陡峭一些,不過一旦入門,就是視覺化的大殺器, 值得花時間和精力學習.
-
4 # 軟體測試開發技術棧
補充:推薦一個Python 新資料視覺化模組——Plotly Express 。
Plotly ExpressPlotly Express是一個新的高階Python資料視覺化庫,它是Plotly.py的高階封裝,它為複雜的圖表提供了一個簡單的語法。只需一次匯入,大多數繪圖只要一個函式呼叫,接受一個整潔的Pandas dataframe,就可以建立豐富的互動式繪圖。
Plotly Express 安裝慣例,使用 pip進行安裝。
pip install plotly_expressPlotly Express支援構建圖表型別scatter:在散點圖中,每行data_frame由2D空間中的符號標記表示。scatter_3d:在3D散點圖中,每行data_frame由3D空間中的符號標記表示。scatter_polar:在極座標散點圖中,每行data_frame由極座標中的符號標記表示。scatter_ternary:在三元散點圖中,每行data_frame由三元座標中的符號標記表示。scatter_mapbox:在Mapbox散點圖中,每一行data_frame都由Mapbox地圖上的符號標記表示。scatter_geo:在地理散點圖中,每一行data_frame都由地圖上的符號標記表示。scatter_matrix:在散點圖矩陣(或SPLOM)中,每行data_frame由多個符號標記表示,在2D散點圖的網格的每個單元格中有一個,其將每對dimensions彼此相對繪製。density_contour:在密度等值線圖中,行data_frame被組合在一起成為輪廓標記,以視覺化該值的聚合函式histfunc(例如,計數或總和)的2D分佈z。density_heatmap:在密度熱圖中,行data_frame被組合在一起成為彩色矩形瓦片,以視覺化該值的聚合函式histfunc(例如,計數或總和)的2D分佈 z。line:在2D線圖中,每行data_frame表示為2D空間中折線標記的頂點。line_polar:在極線圖中,每行data_frame表示為極座標中折線標記的頂點。line_ternary:在三元線圖中,每行data_frame表示為三元座標中折線標記的頂點。line_mapbox:在Mapbox線圖中,每一行都data_frame表示為Mapbox地圖上折線標記的頂點。line_geo:在地理線圖中,每一行都data_frame表示為地圖上折線標記的頂點。parallel_coordinates:在平行座標圖中,每行data_frame由折線標記表示,該折線標記穿過一組平行軸,每個平行軸對應一個平行軸 dimensions。parallel_categories:在並行類別(或平行集)圖中,每行data_frame與其他共享相同值的行組合,dimensions然後透過一組平行軸繪製為折線標記,每個平行軸對應一個dimensions。area:在堆積區域圖中,每行data_frame表示為2D空間中折線標記的頂點。連續折線之間的區域被填充。bar:在條形圖中,每行data_frame表示為矩形標記。bar_polar:在極座標圖中,每一行都data_frame表示為極座標中的楔形標記。violin:在小提琴圖中,將data_frame行分組成一個曲線標記,以便視覺化它們的分佈。box:在箱形圖中,行data_frame被組合在一起成為盒須標記,以顯示它們的分佈。strip:在條形圖中,每一行都data_frame表示為類別中的抖動標記。histogram:在直方圖中,行data_frame被組合在一起成為矩形標記,以視覺化該值的聚合函式histfunc(例如,計數或總和)的1D分佈y(或者x如果orientation是"h")。choropleth:在等值區域圖中,每行data_frame由地圖上的彩色區域標記表示。gapminder資料集說明我們使用gapminder資料集進行體驗 Plotly Express 。
gapminder資料集顯示2007年按國家/地區的人均預期壽命和人均GDP 之間的趨勢:包含1952~2007年世界各國家人口、GDP發展與/地區的人均預期壽命和人均GDP 之間的趨勢。
Country:國家,ChinaContinent:洲,AsiaYear:年份,1952LifeExp:預期壽命,44POP:人口,556263527GdpPercap:分均 GDP,400.448611iso_alpha:國家編碼,CHNiso_num:國家程式碼,156上手體驗一下,輕鬆地進行資料視覺化。散點圖scatter常用引數說明:
data_frame: 一個"整潔" pandas.DataFramex:(字串:列的名稱data_frame)此列中的值用於沿笛卡爾座標沿x軸定位標記。對於水平histogram()s,這些值用作輸入histfunc。y:(字串:列的名稱data_frame)此列中的值用於沿笛卡爾座標中的y軸定位標記。對於垂直histogram()s,這些值用作輸入histfunc。color:(字串:列的名稱data_frame)此列中的值用於為標記指定顏色。size:(字串:列名稱data_frame)此列中的值用於指定標記大小。color_continuous_scale:(有效CSS顏色字串列表)此列表用於在表示的列color包含數字資料時構建連續顏色標度。plotly_express.colors子模組中有各種有用的色標,特別plotly_express.colors.sequential是plotly_express.colors.diverging和plotly_express.colors.cyclical。title:(字串)圖示題。template:(字串或Plotly.py模板物件)圖模板名稱或定義。width:(整數,預設None)圖形寬度(以畫素為單位)。height:(整數,預設600)圖形高度(以畫素為單位)。使用散點圖描述華人口與GDP增長趨勢圖
地理散點圖scatter_geo常用引數說明
data_frame:“整潔”pandas.DataFramelat:(字串:data_frame)此列的值用於根據地圖上的緯度定位標記。lon:(字串:data_frame)此列的值用於根據地圖上的經度定位標記。locations:(字串:data_frame)該列中的值將根據locationmode並對映到經度/緯度。locationmode:(字串,“ISO-3”、“美國-州”、“國家名稱”之一)確定用於匹配locations地圖上的區域。color:(字串:data_frame)此列的值用於為標記指定顏色。size:(字串:data_frame)此列的值用於分配標記大小。color_continuous_scale:(有效的css-顏色字串列表)此列表用於在color包含數字資料。中提供了各種有用的色標。plotly_express.colors子模組,特別是plotly_express.colors.sequential, plotly_express.colors.diverging和plotly_express.colors.cyclical.title:(字串)圖形標題。width:(整數,預設)None)以畫素為單位的圖形寬度。height:(整數,預設)600)以畫素為單位的圖形高度。使用地理散點圖描述全球人口與GDP
折線圖(line)常用引數說明
data_frame:“整潔”pandas.DataFramex:(字串:data_frame)該列的值用於在笛卡爾座標中沿x軸定位標記。臥式histogram(),這些值用作histfunc.y:(字串:data_frame)該列的值用於在笛卡爾座標中沿y軸定位標記。垂直histogram(),這些值用作histfunc.color:(字串:data_frame)此列的值用於為標記指定顏色。facet_col:(字串:data_frame)此列中的值用於在水平方向平面子圖分配標記。title:(字串)圖形標題。width:(整數,預設)None)以畫素為單位的圖形寬度。height:(整數,預設)600)以畫素為單位的圖形高度。使用折線圖描述1952~2007中國與美華人口增長趨勢圖
條形圖(bar)常用引數說明
data_frame:“整潔”pandas.DataFramex:(字串:data_frame)該列的值用於在笛卡爾座標中沿x軸定位標記。臥式histogram(),這些值用作histfunc.y:(字串:data_frame)該列的值用於在笛卡爾座標中沿y軸定位標記。垂直histogram(),這些值用作histfunc.color:(字串:data_frame)此列的值用於為標記指定顏色。facet_row:(字串:data_frame)此列的值用於向垂直方向上的平面子圖分配標記。facet_col:(字串:data_frame)此列中的值用於在水平方向平面子圖分配標記。text:(字串:data_frame)此列的值以文字標籤的形式顯示在圖中。title:(字串)圖形標題。template:(String或Plotly.py模板物件)圖形模板名稱或定義。width:(整數,預設)None)以畫素為單位的圖形寬度。height:(整數,預設)600)以畫素為單位的圖形高度。使用條形圖描述1952~2007中國與美華人口增長趨勢圖
等值區域圖(choropleth)常用引數說明
data_frame:“整潔”pandas.DataFramelat:(字串:data_frame)此列的值用於根據地圖上的緯度定位標記。lon:(字串:data_frame)此列的值用於根據地圖上的經度定位標記。locations:(字串:data_frame)該列中的值將根據locationmode並對映到經度/緯度。locationmode:(字串,“ISO-3”、“美國-州”、“國家名稱”之一)確定用於匹配locations地圖上的區域。color:(字串:data_frame)此列的值用於為標記指定顏色。size:(字串:data_frame)此列的值用於分配標記大小。color_continuous_scale:(有效的css-顏色字串列表)此列表用於在color包含數字資料。中提供了各種有用的色標。plotly_express.colors子模組,特別是plotly_express.colors.sequential, plotly_express.colors.diverging和plotly_express.colors.cyclical.title:(字串)圖形標題。width:(整數,預設)None)以畫素為單位的圖形寬度。height:(整數,預設)600)以畫素為單位的圖形高度。使用等值區域圖描述各個國家人口數量
回覆列表
Seaborn
Seaborn是一個在Python中製作有吸引力和資訊豐富的統計圖形的庫。 它建立在matplotlib之上,並與PyData整合,包括對來自scipy和statsmodels的numpy和pandas資料結構和統計例子的支援。
seaborn提供的一些功能是
為matplotlib圖形設計幾種內建主題;
用於選擇調色盤的工具,用於製作能夠顯示資料模式的美麗情節;
用於視覺化單變數和雙變數分佈或用於在資料子集之間進行比較的函式;
針對不同種類的獨立和因變數擬合和視覺化線性迴歸模型的工具;
視覺化資料矩陣並使用聚類演算法來發現這些矩陣中的結構的功能;
繪製統計時間序列資料的功能,靈活估計和表示估計的不確定性;
用於構建網格圖的高階抽象,可讓您輕鬆構建複雜的視覺化。
Seaborn旨在將視覺化作為探索和理解資料的核心部分。 繪圖函式對包含整個資料集的資料框和陣列進行操作,並在內部執行必要的聚合和統計模型擬合以生成資訊圖。 如果matplotlib“試圖讓事情變得簡單和容易”,seaborn會試圖使一套明確定義的硬體變得容易。
安裝seaborn
直接在命令列視窗輸入pip install seaborn,前提是你已安裝了python和pip包管理工具。
效果如下:
(Seaborn圖片的樣式都挺好看)
pyechartspyecharts是一個使用Echarts生成圖表的庫。 它僅提供Echarts和Python之間28種以上圖表的介面,而且圖表可以動態展示,很符合資料演示的場景。
Echarts是百度的一個開源庫,用於在javascript中進行資料視覺化,pyechart便是echarts的一個易用的Python庫。
安裝pyecharts
直接在命令列視窗輸入pip install pyecharts,前提是你已安裝了python和pip包管理工具。
一個簡單的例子
效果如下:
(pyechart的圖表基本上都可以動態演示)