<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          絕了!Pandas繪圖功能

          共 3701字,需瀏覽 8分鐘

           ·

          2020-12-06 19:13

          柱狀圖箱線圖密度圖條形圖散點(diǎn)圖折線圖保存繪圖總結(jié)

          可視化是用來探索性數(shù)據(jù)分析最強(qiáng)大的工具之一。Pandas庫包含基本的繪圖功能,可以讓你創(chuàng)建各種繪圖。Pandas中的繪圖是在matplotlib之上構(gòu)建的,如果你很熟悉matplotlib你會(huì)驚奇地發(fā)現(xiàn)他們的繪圖風(fēng)格是一樣的。

          本案例用到的數(shù)據(jù)集是關(guān)于鉆石的。

          import?numpy?as?np
          import?pandas?as?pd
          import?matplotlib

          %matplotlib?inline
          diamonds?=?pd.read_csv("diamonds.csv")
          diamonds?=?diamonds.drop("Unnamed:?0",?axis=1)

          print(diamonds.shape)????????

          diamonds.head(5)
          (53940,?10)

          輸出結(jié)果顯示,數(shù)據(jù)集包含53940個(gè)不同鉆石的10個(gè)特征,其中有數(shù)值變量也有分類變量。

          柱狀圖

          柱狀圖是一個(gè)單變量圖(注意區(qū)分柱狀圖和條形圖),它將一個(gè)數(shù)值變量分組到各個(gè)數(shù)值單元中,并顯示每個(gè)單元中的觀察值數(shù)量。直方圖是了解數(shù)值變量分布的一種有用工具。所用到的方法是df.hist()

          diamonds.hist(column="carat",????????#?具體列
          ??????????????figsize=(8,8),?????????#?圖片大小
          ??????????????color="blue");?????????#?繪畫顏色

          從圖上我們可以看到鉆石重量的分布是十分傾斜的:大多數(shù)鉆石大約1克拉及以下,但也有極少量極端值。
          為了獲得更多細(xì)節(jié)的數(shù)據(jù),我們可以增加分箱的數(shù)量來查看更小范圍內(nèi)的鉆石重量,通過限制x軸的寬度使整個(gè)圖形在畫布上顯得不那么擁擠。

          diamonds.hist(column="carat",????????
          ??????????????figsize=(8,8),?????????
          ??????????????color="blue",??????????
          ??????????????bins=50,???????????????
          ??????????????range=?(0,3.5));???????

          這個(gè)直方圖讓我們更好地了解了分布中的一些細(xì)微差別,但我們不能確定它是否包含所有數(shù)據(jù)。將X軸限制在3.5可能會(huì)剔除一些異常值,以至于它們在原始圖表中沒有顯示。接下來看看有沒有鉆石大于3.5克拉:

          diamonds[diamonds["carat"]?>?3.5]

          哦豁,真的有9顆鉆石比3.5克拉大,這些'怪種'鉆石我們應(yīng)該關(guān)心嗎?出于數(shù)據(jù)探索的目的,我們完全可以舍棄這些點(diǎn),但如果是把數(shù)據(jù)的全貌展示給別人看,我覺得有必要詳細(xì)說明:范圍之外還存在9個(gè)離群點(diǎn)。

          箱線圖

          箱線圖是另一種單變量圖, 方法pd.boxplot()

          diamonds.boxplot(column="carat");

          箱線圖的中心框代表中間50%的觀察值,中心線代表中位數(shù)。
          boxplot最有用的特性之一是能夠生成并排的boxplots。每個(gè)分類變量都在一個(gè)不同的boxside上繪制一個(gè)分類變量。接下來將鉆石價(jià)格按鉆石凈度分成兩部分來做一個(gè)并排的方框圖:

          diamonds.boxplot(column="price",????????
          ?????????????????by=?"clarity",?????????
          ?????????????????figsize=?(8,8));???????

          上面的箱線圖很奇怪:按理說清晰度更好的鉆石能賣到更高的價(jià)格,然而清晰度最高的鉆石(IF)的中間價(jià)卻比低凈度鉆石低!這是為什么呢?也許下面這個(gè)圖可以給我們一些啟示:

          diamonds.boxplot(column="carat",????????
          ?????????????????by=?"clarity",?????????
          ?????????????????figsize=?(8,8));???????

          上面的圖表顯示,透明度較低的鉆石往往更大,透明度高的鉆石更加小巧。由于尺寸重量是決定鉆石價(jià)值的另一個(gè)重要因素,因此低透明度鉆石的中間價(jià)較高也就不足為奇了。

          密度圖

          密度圖以連續(xù)曲線顯示數(shù)值變量的分布。它類似于柱狀圖,但密度圖能更好地顯示分布的基本形狀。series.plot(kind="density")

          diamonds["carat"].plot(kind="density",?
          ??????????????????????figsize=(8,8),????
          ??????????????????????xlim=?(0,5));?????

          條形圖

          條形圖是直觀顯示分類變量計(jì)數(shù)的圖形,df.plot(kind="bar"):

          carat_table?=?pd.crosstab(index=diamonds["clarity"],?columns="count")
          carat_table
          carat_table.plot(kind="bar",
          ?????????????????figsize=(8,8));

          可以使用二維表格創(chuàng)建堆積條形圖。堆積條形圖顯示每個(gè)條形圖中另一個(gè)變量的分布:

          carat_table?=?pd.crosstab(index=diamonds["clarity"],?
          ??????????????????????????columns=diamonds["color"])

          carat_table
          carat_table.plot(kind="bar",?
          ?????????????????figsize=(8,8),
          ?????????????????stacked=True);

          分組條形圖是堆疊條形圖的另一種選擇,設(shè)置stacked=False即可:

          carat_table.plot(kind="bar",?
          ?????????????????figsize=(8,8),
          ?????????????????stacked=False);

          散點(diǎn)圖

          散點(diǎn)圖是雙變量圖,采用兩個(gè)數(shù)值變量,并在x/y平面上繪制數(shù)據(jù)點(diǎn)。創(chuàng)建單個(gè)散點(diǎn)圖使用方法df.plot(kind="scatter"):

          diamonds.plot(kind="scatter",?????#?Create?a?scatterplot
          ??????????????x="carat",??????????#?Put?carat?on?the?x?axis
          ??????????????y="price",??????????#?Put?price?on?the?y?axis
          ??????????????figsize=(10,10),
          ??????????????ylim=(0,20000));

          盡管上面的散點(diǎn)圖有許多重疊點(diǎn),但它仍然讓我們對(duì)鉆石克拉重量和價(jià)格之間的關(guān)系有了一些了解:大鉆石通常更貴。

          折線圖

          折線圖通常用于繪制時(shí)間序列數(shù)據(jù):

          years?=?[y?for?y?in?range(1950,2016)]

          readings?=?[(y+np.random.uniform(0,20)-1900)?for?y?in?years]

          time_df?=?pd.DataFrame({"year":years,
          ????????????????????????"readings":readings})


          time_df.plot(x="year",
          ?????????????y="readings",
          ?????????????figsize=(9,9));

          保存繪圖

          如果要保存圖片供以后使用,兩步就可以輕松解決:首先用plot.get_figure(),然后用figure.savefig("filename")。圖片可以保存為多種常見的文件格式,例如png、jpeg和pdf。

          my_plot?=?time_df.plot(x="year",????
          ?????????????y="readings",
          ?????????????figsize=(9,9))

          my_fig?=?my_plot.get_figure()????????????

          my_fig.savefig("line_plot_example.png")??

          總結(jié)

          Python繪圖生態(tài)系統(tǒng)有許多不同的庫,大部分人可能會(huì)很難從中抉擇,不知道該如何人下手。Pandas繪圖函數(shù)使你能夠快速地可視化和瀏覽數(shù)據(jù)。Pandas繪圖函數(shù)并沒有提供盡善盡美的所有功能,但它們通常足以完成任務(wù)。

          往期推薦:

          收藏 | 49 個(gè) Python 學(xué)習(xí)資源

          我都逛哪些技術(shù)網(wǎng)站?(程序員必備58個(gè)網(wǎng)站匯總)

          肝!精心整理了 50 個(gè)數(shù)據(jù)源網(wǎng)站!


          瀏覽 53
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人天堂一区二区三区精华液功效 | 色色色五月天婷婷 | 男女直接拍拍 | 人妻AⅤ在线 | 国产骚逼网 |