Python數據可視化:Pandas庫,只要一行代碼就能實現

本文的文字及圖片來源於網絡,僅供學習、交流使用,不具備任何商業用途,若有問題請及時聯繫咱們以做處理。html

如下文章一級AI入門學習 ,做者小伍哥bootstrap

剛接觸Python的新手、小白,能夠複製下面的連接去免費觀看Python的基礎入門教學視頻api

https://v.douyu.com/author/y6AZ4jn9jwKW

 

 

一,可視化概述

在Python中,常見的數據可視化庫有3個:數組

matplotlib:最經常使用的庫,能夠算做可視化的必備技能庫,比較複雜,api多,學起來不太容易。網絡

seaborn:是重構於matplotlib基礎上,能夠知足可視化需求,更特殊的需求仍是須要學習matplotlib。echarts

pyecharts:上面的兩個庫都是靜態的可視化庫,而pyecharts有很好的網絡兼容性,能夠作到可視化的動態效果。而且種類也比較豐富。這類這個圖,就很是厲害:畫圖神器pyecharts-旭日圖dom

Pandas:而今天要講的是Pandas的可視化,Pandas主要做爲數據分析的庫,雖然沒有上述三個庫那個強大,可是勝在方便,在數據分析的過程當中,只要一行代碼就能實現。也很是漂亮。函數

 

二,直接看案例

熊貓中,有11個比較常見的圖形可視化,還有幾個比較進階的,咱們一個一個看看怎麼畫的佈局

import pandas as pd
import numpy  as np
df= pd.DataFrame(np.random.rand(10, 4), columns=['A','B','C','D'])

 

01,柱狀圖-初步

df.plot.bar()

 

 

stack = True,畫堆疊柱狀圖學習

df.plot.bar(stacked=True)

 

 

02,柱狀圖-橫向

df.plot.barh()

 

 

一樣,stacked = True,畫堆疊柱狀圖

df.plot.barh(stacked=True)

 

 

03,面積圖

df.plot.area(alpha = 0.9)

 

 

df.plot.area(stacked=True,alpha = 0.9)

 

 

04,密度圖-kde

df.plot.kde()

 

 

05,密度圖-density

df.plot.density()

 

 

06,直方圖

換個數據集

df = pd.DataFrame({'A': np.random.randn(1000) + 1,
                   'B': np.random.randn(1000),
                   'C': np.random.randn(1000) - 1},
                  columns=['A', 'B', 'C'])
 df.plot.hist(bins=200)

 

 

df.plot.hist(stacked=True, bins=20)

 

 

df= pd.DataFrame(np.random.rand(1000, 4), columns=['A','B','C','D'])
df.diff().hist(color='k', alpha=0.7, bins=50)

 

 

07,箱盒圖

df= pd.DataFrame(np.random.rand(100, 4), columns=['A','B','C','D'])
df.plot.box()

 

 

vert = False也能夠換成橫向

df.plot.box(vert=False)

 

 

08,散點圖

df.plot.scatter(x='A',y='B')

 

 

09,蜂巢圖

df = pd.DataFrame(np.random.randn(1000, 2), columns=['a', 'b'])
df['b'] = df['b'] + np.arange(1000)
df.plot.hexbin(x='a', y='b', gridsize=25)

 

 

 

07,餅圖

series = pd.Series(3 * np.random.rand(4), index=['a', 'b', 'c', 'd'], name='series')
series.plot.pie(figsize=(6, 6))

 

 

series.plot.pie(labels=['AA', 'BB', 'CC', 'DD'], colors=['r', 'g', 'b', 'c'],autopct='%.2f', fontsize=20, figsize=(6, 6))

 

 

08,矩陣散點圖

from pandas.plotting import scatter_matrix
df = pd.DataFrame(np.random.randn(1000, 4), columns=['a', 'b', 'c', 'd'])
scatter_matrix(df, alpha=0.2, figsize=(6, 6), diagonal='kde')

 

 

 

09,安德魯斯曲線

data = pd.read_csv('C:/Users/wuzhengxiang/Desktop/iris.csv')
pd.plotting.andrews_curves(data , 'Name')

 

 

andrews_curves(data, 'Name', colormap='winter')

 

 

10,平行座標圖該圖也是使用本身加載的iris數據集

from pandas.plotting import parallel_coordinates
parallel_coordinates(data, 'Name', colormap='gist_rainbow')

 

 

11,滯後圖

from pandas.plotting import lag_plot
df= pd.Series(0.1 * np.random.rand(1000) +
        0.9 * np.sin(np.linspace(-99 * np.pi, 99 * np.pi, num=1000)))
lag_plot(df)

 

 

12,最大值函數圖

直接畫圖,預設爲折線圖

df= pd.DataFrame(np.random.rand(12, 4), columns=['A','B','C','D'])
df.plot()

 

 

df.plot(subplots=True,layout=(2, 2), figsize=(15, 8))

 

 

df= pd.DataFrame(np.random.rand(1000, 4), columns=['A','B','C','D'])
df.plot()

 

 

df.plot(subplots=True,layout=(2, 2), figsize=(15, 8))

 

 

13,bootstrap_plot

s = pd.Series(np.random.uniform(size=100))
pd.plotting.bootstrap_plot(s)

 

 

三,參數詳解

1,官方文檔

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.html
https://pandas.pydata.org/pandas-docs/version/0.18.1/visualization.html

 

2,參數介紹

DataFrame.plot(x=None, y=None, kind='line', ax=None, subplots=False, 
sharex=None, sharey=False, layout=None, figsize=None, use_index=True, 
title=None, grid=None, legend=True, style=None, logx=False, logy=False, 
loglog=False, xticks=None, yticks=None, xlim=None, ylim=None, rot=None, 
fontsize=None, colormap=None, position=0.5, table=False, yerr=None,
xerr=None, stacked=True/False, sort_columns=False, secondary_y=False, 
mark_right=True, **kwds)

 

注意:每種繪圖類型都有相對應的方法:df.plot(kind = 'line' )與df.plot.line()等價

x:標籤或位置,默認爲None#指數據列的標籤或位置參數

y:標籤,位置或標籤列表,位置,默認值無

種類:str#繪圖類型

'line':線圖(默認)#折線圖

'bar':垂直條形圖。條形圖。stacked爲True時爲堆疊的柱狀圖

'barh':水平條形圖

'hist':histogram#直方圖(數值頻率分佈)

'box':boxplot#箱型圖

'kde':內核密度估計圖#密度圖,主要對柱狀圖添加內核機率密度線

'密度':與'kde'相同

'area':area plot#與x軸所圍的區域圖(面積圖)。Stacked= True時,每列必須所有爲正或負值,stacked = False時,對數據沒有要求

'pie':pie plot#餅圖。數值必須爲正值,需指定Y軸或者subplots = True

'scatter':散點圖#散點圖。需指定X軸Y軸

'hexbin':hexbin圖#蜂巢圖。需指定X軸Y軸

'hexbin':hexbin圖#蜂巢圖。需指定X軸Y軸

ax:matplotlib軸對象,默認值None#**子圖(axes,也能夠理解成座標軸)要在其上進行交易的matplotlib子圖對象。若是沒有設置,則使用當前matplotlib子圖**其中,變量和函數經過改變figure和axes中的元素(例如:title,label,點和線等等)一塊兒描述figure和axes,也就是在畫布上繪圖。

子圖:布爾值,默認爲False#是否對列分別做子圖

sharex:布爾值,默認值爲true,若是ax爲None False#若是ax爲None,則設爲爲True,不然爲False

若是subplots = True,則共享x軸並將一些x軸標籤設置爲不可見;若是ax爲None則默認爲True,不然爲False。請注意,同時傳遞ax和sharex = True將更改圖形中全部軸的全部x軸標籤!

sharey:布爾值,默認爲False#若是有子圖,子圖共y軸刻度,標籤

若是subplots = True,則共享y軸並將一些y軸標籤設置爲不可見

layout:用於子圖的元組(行,列)#子圖的行列布局

figsize:以英寸爲單位的元組(寬度,高度)

use_index:布爾值,默認爲True

title:字符串#圖片的標題用字符串

地塊標題

grid:布爾值,默認值None#圖片是否有網格

legend:False / True /'reverse'#子圖的圖例(交替爲True)

樣式:列表或字典#對每列折線圖設置線的類型

logx:布爾值,默認爲False。

類型:布爾值,默認爲False

loglog:布爾值,默認爲False#同時設置x,y軸刻度是否取對數

xticks:sequence#設置x軸刻度值,序列形式(某些列表)

yticks:sequence#設置y軸刻度,序列形式(幾種列表)

xlim:float / 2-tuple / list#設置座標軸的範圍。數值(變量),列表或元組(區間範圍)

ylim:浮點數/ 2元組/列表

rot:int,默認值None#設置軸標籤(軸刻度)的顯示旋轉度數

fontsize:int,默認值None#設置軸刻度的字體大小

colormap:str或matplotlib colormap對象,默認值爲None。

colorbar:布爾值,可選#柱子顏色

若是爲True,則繪製顏色條(僅與「散佈」圖和「六邊形」圖有關)

position:float#條形圖的對齊方式,取值範圍[0,1],即左下端到右上端替換0.5(中間對齊)

layout:tuple(可選)#佈局。layout=(2,3)兩行三列,layout =(2,-1)兩行自適應列數

例如。df.plot(subplots = True,layout =(2,-1),sharex = False)

table:布爾值,Series或DataFrame,默認爲False#圖下添加表。若是爲True,則使用DataFrame中的數據圖表,而且數據將被旋轉放置到matplotlib的佈局。。

yer:DataFrame,Series,類數組,dict和str

有關詳細信息,請參見使用偏差線繪圖。

xerr:與yerr相同的類型。

堆疊:布爾值,線形圖和條形圖默認爲False,面積圖爲True。若是爲True,則建立堆積圖。#前面有介紹

sort_columns:布爾值,默認值爲False。

secondary_y:布爾值或序列,默認爲False#設置第二個y軸(右輔助y軸)

是否在次要y軸上繪製若是是 列表/元組,則在次要y軸上繪製哪些列

mark_right:布爾值,默認爲True

相關文章
相關標籤/搜索