1. 再見,Matplotlib!

        共 2475字,需瀏覽 5分鐘

         ·

        2020-12-04 19:16

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

        ? 基本使用,學會制作套路

        首先我們使用pandas隨機生成示例數(shù)據(jù)

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

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

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

        import?matplotlib.pyplot?as?plt

        x?=?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,?5
        width?=?total_width?/?n
        x?=?x?-?(total_width?-?width)?/?2

        plt.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()

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

        ? 更多圖表,一覽Pandas強大

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

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

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

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

        直方圖的話,我們需要換一組數(shù)據(jù)

        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')

        制作子圖可以嗎? 只需要設(shè)置subplots=True就行了,子圖位置、大小調(diào)整方式和Matplotlib設(shè)置一樣!

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

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

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

        ? 修改主題,解鎖酷炫樣式

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

        還是上面的數(shù)據(jù),下面讓我們換個主題重新繪制

        import?seaborn?as?sns
        sns.set_palette("pastel",?8)
        import?seaborn?as?sns
        sns.set_palette("Blues_r",?8)
        import?seaborn?as?sns
        sns.set_palette("magma",?8)

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

        以上就是關(guān)于如何在使用Python更快速的對數(shù)據(jù)進行可視化,我們可以發(fā)現(xiàn),在很多情況下,使用Pandas直接進行繪圖會顯得更加高效便捷!

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


        回復關(guān)鍵字“簡明python ”,立即獲取入門必備書籍簡明python教程》電子版

        回復關(guān)鍵字爬蟲”,立即獲取爬蟲學習資料

        python入門與進階
        每天與你一起成長

        推薦閱讀


        點贊和在看就是最大的支持??



        瀏覽 61
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 天天天天天天干 | 成人免费无码婬片在线观看免费 | 少妇 高潮喷水 | 扒开美女狂揉动漫原神 | 一边吃奶一边扎下边爽了动画开始播放 |