如何用pandas更快地進行數據可視化?

2020-12-03 CDA數據分析師

作者:劉早起

來源:早起Python(公眾號)

如果你經常使用Python進行數據分析,那麼對於pandas一定不會陌生,但是Pandas除了在數據處理上大放異彩,隨著版本的不斷更新,Pandas的繪圖功能在某些情況下甚至要比matplotlib更加適用,本文就將介紹如何用Pandas更快的進行數據可視化!

基本使用,學會製作套路

首先我們使用pandas隨機生成示例數據

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

現在只要一行代碼,即可完成柱狀圖的繪製df.plot.bar()

同樣是這個圖,如果使用Matplotlib製作的話

import matplotlib.pyplot as pltx = np.array(df.index.tolist())y1 = df.A.tolist()y2 = df.B.tolist()y3 = df.C.tolist()y4 = df.D.tolist()y5 = df.E.tolist()total_width, n = 0.8, 5width = total_width / nx = x - (total_width - width) / 2plt.bar(x, y1, width=width, label='A')plt.bar(x + width, y2, width=width, label='B')plt.bar(x + 2*width, y3, width=width, label='C')plt.bar(x + 3*width, y4, width=width, label='D')plt.bar(x + 4*width, y5, width=width, label='E')plt.legend()plt.show()

可以看到,雖然結果差不多,不過代碼量瞬間就上去了,如果你是Matplotlib高手可能會用更簡潔的代碼製作,但一定沒有pandas一行代碼來的方便!

更多圖表,一覽Pandas強大

下面我們繼續看看,一行pandas代碼能做出哪些常用的圖!

堆疊柱狀圖,添加一個參數即可df.plot.barh(stacked=True)

堆疊面積圖df.plot.area(stacked=True,alpha = 0.9)

密度估計圖df.plot.kde()

直方圖的話,我們需要換一組數據

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(stacked=True, bins=20)df.plot.hist(alpha=0.5)

當然包括什麼箱線圖、散點圖等常用圖形,都可以通過一行代碼輕鬆搞定

df.plot.box()df['value'].plot()df.plot.scatter()data.plot.hexbin(x='A',y='B')

製作子圖可以嗎?只需要設置subplots=True就行了,子圖位置、大小調整方式和Matplotlib設置一樣!

data.plot(subplots=True,layout=(3, 2), figsize=(15, 8));

更多的圖表,本文就不再一一展示,從官方文檔中可以看到(我的版本是0.23.4),Pandas一共支持14種常見圖表的直接繪製,感興趣的讀者可以進一步閱讀官方文檔!

其實對圖片敏感的讀者可以發現,這不就是基於Matplotlib做出來的嗎?所以它支持像調整Matplotlib圖表一樣,在作圖時修改一些參數來控制圖片的大小、圖例、顏色、位置等因素。

修改主題,解鎖酷炫樣式

最後,如果你覺得默認生成的圖表不夠好看(我是這麼覺得),而它又是基於Matoplotlib製作的,所以我們可以使用同樣套著Matplotlib殼的Seaborn調色板,從而調整圖片主題。

還是上面的數據,下面讓我們換個主題重新繪製

import seaborn as snssns.set_palette("pastel", 8)

import seaborn as snssns.set_palette("Blues_r", 8)

import seaborn as snssns.set_palette("magma", 8)

上面是我常用的幾種配色,更多的顏色搭配你可以在seaborn相關文檔中找到並使用!

以上就是關於如何在使用Python更快速的對數據進行可視化,我們可以發現,在很多情況下,使用Pandas直接進行繪圖會顯得更加高效便捷

但本文的目的並不是讓你徹底放棄Matplotlib,在使用pandas繪圖時很多參數設置都需要參考Matplotlib,所以我們應該在點亮這項技能後,能根數據和場景的不同,選擇一個最合適的工具來完成可視化

相關焦點

  • 5個可以幫助pandas進行數據預處理的可視化圖表
    在現實生活中,從多個來源收集到的大多數時間數據都有空白值、打字錯誤和其他異常。在進行任何數據分析之前,清除數據是至關重要的。 在本文中,我將討論五個強大的數據可視化選項,它們可以立即提供數據特徵的感覺。即使在正式建模或假設測試任務之前,執行EDA就可以傳達大量關於數據和特徵之間關係的信息。
  • 如何使用Pandas-Profiling進行探索性數據分析
    當開始一個新的機器學習項目時,獲得機器學習數據集之後的第一步就是要了解它。我們可以通過執行探索性數據分析(EDA)來實現這一點。這包括找出每個變量的數據類型、目標變量的分布、每個預測變量的不同值的數量、數據集中是否有重複值或缺失值等。進行EDA探索機器學習數據集的過程往往是非常耗時的。什麼是Pandas-Profiling?
  • 教你用Pandas和Plotly進行數據可視化
    數據太多難道不會讓人感到不知所措嗎?講真的,數據可視化了解一下。數據可視化是將原始數據轉換成可視化的圖形和圖表,從而更易於理解,它的主要目的是更快地進行研究和數據分析,並有效傳達趨勢和模式。相較於冗長的純文本,人腦能夠更好地理解具有視覺吸引力的數據。
  • 想讓pandas運行更快嗎?那就用Modin吧
    Pandas 是數據科學領域的工作者都熟知的程序庫。它提供高性能、易於使用的數據結構和數據分析工具。但是,當處理過於龐大的數據時,單個內核上運行的 Pandas 就會變得力不從心,人們不得不求助於不同的分布式系統來提高性能。然而,為了提高性能而做的這種權衡會帶來陡峭的學習曲線。本質上,用戶只是想讓 Pandas 運行得更快,而不是為了特定的硬體設置而優化其工作流。
  • 教程| pandas輕鬆入門 之 數據結構介紹 1
    訪問flyai.club,一鍵創建你的人工智慧項目Pandas含有使數據清洗和分析工作變得更快更簡單的數據結構和操作工具。pandas經常和其它工具一同使用,如數值計算工具NumPy和SciPy,分析庫statsmodels和scikit-learn,和數據可視化庫matplotlib。
  • Pandas可視化綜合指南:手把手從零教你繪製數據圖表
    曉查 編譯整理量子位 出品 | 公眾號 QbitAI數據可視化本來是一個非常複雜的過程,但隨著Pandas數據幀plot()函數的出現,使得創建可視化圖形變得很容易。在數據幀上進行操作的plot()函數只是matplotlib中plt.plot()函數的一個簡單包裝 ,可以幫助你在繪圖過程中省去那些長長的matplotlib代碼。
  • Pandas GUI:如何輕鬆獲取Pandas數據幀?
    全文共2071字,預計學習時長6分鐘Pandas庫目前已經成為用Python進行探索性數據分析的絕佳伴侶。它功能豐富,靈活易用,成為了當今許多數據科學家的首選。Pandas庫的社區也很完善,這讓它能夠一直積極發展和改進。提到Pandas,就不得不提到這兩種工具:· 可以用簡短的代碼執行基本EDA的工具。
  • Pandas自動進行探索性數據分析,節省可視化和理解數據的時間
    根據Wikipedia的說法,探索性數據分析(EDA)是一種分析數據集以總結其主要特徵的方法,通常使用視覺方法。因此,EDA是理解基礎數據,變量分布及其相關性的過程。這使得EDA成為構建任何統計模型之前任何數據科學過程中的第一步。
  • 資料|利用Python進行數據分析
    ——Fernando Pérez 加州大學伯克利分校 研究科學家, IPython的創始人之一【內容簡介】還在苦苦尋覓用Python控制、處理、整理、分析結構化數據的完整課程?本書含有大量的實踐案例,你將學會如何利用各種Python庫(包括NumPy、pandas、matplotlib以及IPython等)高效地解決各式各樣的數據分析問題。
  • 懶人秘籍:教你如何避免編寫pandas代碼
    而大家都在儘可能地避免這種懸崖峭壁,結果可想而知,都轉向了如何避免編寫pandas代碼。在過去4年裡,筆者一直使用pandas作為數據分析的主要工具。必須承認,「如何避免編寫pandas代碼」的大部分內容來自於使用pandas編程的起步階段。在進行代碼審閱時,筆者仍然看到許多經驗豐富的程式設計師在看一些熱門「如何避免使用」的帖子。
  • 如何通過一頓飯來說明NumPy與pandas的功用
    縱然NumPy與pandas風靡於數據分析任務,人們對其的不足也多有指出,其中最主要的便是由於Python自身的動態語言特性而帶來的運行速度方面的損失,其次便是Python在大數據處理方面(數G甚至幾十上百G)的捉襟見肘。對於前者,NumPy已經做了相當程度的優化,可以對大數組的數據進行高效處理。
  • 兩步搞定數據可視化
    它使您能夠以不同方式查看數據,以通過以下方式發現新的答案和見解:用數據講述故事圍繞您的數據構建敘述,以便清晰地傳達其相關性並易於理解。不僅僅是簡單地呈現數字和闡述事實,而是通過可視化圖表將洞察力轉化為視覺故事。
  • 技能分享|Python數據可視化利器:Seaborn使用方法(一)
    本篇我們的主題是數據可視化的利器——seaborn庫的使用。Seaborn是基於matplotlib,在matplotlib的基礎上進行了更高級的API封裝,便於用戶可以更加簡便地做出各種有吸引力的統計圖表。
  • Python學習120課 pandas簡介kaggle下載數據及pandas讀取外部數據
    現在我們開始學習pandas,pandas一般用的更多,pandas是基於numpy去寫的。pandas是一個專門做數據結構和數據分析的庫。●pandas的安裝推薦使用anaconda,只要安裝了anaconda,它裡面就會自帶pandas,這會為我們省去很多的麻煩。接下來就是用pandas去處理數據,數據從哪來呢?
  • pandas指南:做更高效的數據科學家
    今天我要告訴你們的是:在數據科學中,有一個軟體包是你們絕對需要學習的,那就是pandas。而pandas真正有趣的地方是,很多其他的包也在裡面。pandas是一個核心包,因此它具有來自其他各種包的特性。pandas類似於Python中的Excel:它使用表(即DataFrame)並對數據進行轉換,但它還能做更多。
  • Python數據分析利器,Pandas入門介紹,幫你便捷高效處理複雜數據
    pandas(pannel data analysis,面板數據分析),我個人覺得pandas用於數據分析處理有別於Python字典和列表的主要在於以下三點。運算效率提升,pandas是基於numpy寫的,換句話說也是c語言進行編寫並編譯成本地庫的,在運算效率會高很多。消耗資源少,因為pandas採用矩陣運算,在算法結構上比列表和字典組合數據消耗更少資源。
  • 可視化介紹:NumPy和機器學習數據表示
    在最流行的三大數據處理棧R、Matlab和Python中,NumPy是最重要的組件之一,有很多Python系的數據處理系統都依賴NumPy作為其基礎架構的基礎部分,比如tensorflow、pandas、SciPy和scikit-learn等。NumPy極大地簡化了向量和矩陣的操作和處理。
  • 超硬核的 Python 數據可視化教程!
    Python實現可視化的三個步驟:確定問題,選擇圖形 轉換數據,應用函數 參數設置,一目了然 1、首先,要知道我們用哪些庫來畫圖?matplotlibpython中最基本的作圖庫就是matplotlib,是一個最基礎的Python可視化庫,一般都是從matplotlib上手Python數據可視化,然後開始做縱向與橫向拓展。
  • 使用Seaborn和Pandas進行相關性分析和可視化
    數據集可以講述很多故事。要想了解這些故事的展開,最好的方法就是從檢查變量之間的相關性開始。在研究數據集時,我首先執行的任務之一是查看哪些變量具有相關性。這讓我更好地理解我正在使用的數據。這也是培養對數據的興趣和建立一些初始問題來嘗試回答的好方法。簡單地說,相關性是非常重要的。
  • 如何用Pandas庫實現MySQL資料庫的讀寫?
    本次分享將介紹如何在Python中使用Pandas庫實現MySQL資料庫的讀寫。首先我們需要了解點ORM方面的知識。  ORM技術  對象關係映射技術,即ORM(Object-Relational Mapping)技術,指的是把關係資料庫的表結構映射到對象上,通過使用描述對象和資料庫之間映射的元數據,將程序中的對象自動持久化到關係資料庫中。在Python中,最有名的ORM框架是SQLAlchemy。