作者:劉早起
來源:早起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,所以我們應該在點亮這項技能後,能根數據和場景的不同,選擇一個最合適的工具來完成可視化!