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

          這種個性化可視化圖也太可愛了吧!

          共 6280字,需瀏覽 13分鐘

           ·

          2022-03-07 14:39


          寫在前面

          在這篇文章中, 云朵君想介紹一個很酷的python手繪樣式可視化包——可愛的圖表?cutecharts。Cutecharts?非常適合為圖表提供更個性化的觸感。

          Cutecharts?與常規(guī)的?Matplotlib?和?Seaborn?庫完全不同,它可以查看手工制作的圖表,并在將鼠標懸停在圖表上時向我們顯示值。Matplotlib?圖表中沒有懸停效果,這是可愛圖表的一個優(yōu)勢。與?seaborn?相比,在可愛圖表中創(chuàng)建圖表的時間要長一些,但代碼數(shù)量仍然比標準?matplotlib?庫少。

          該包可用于生成以下類型的圖表。目前,該庫支持五種不同的圖表——條形圖、餅圖、雷達圖、散點圖和折線圖

          繪圖準備

          安裝cutecharts

          這是個python第三方庫,要創(chuàng)建此圖表,你需要安裝cutecharts庫。具體安裝方法與其他庫一樣。

          pip?install?cutecharts

          導入庫

          import?cutecharts.charts?as?ctc
          import?pandas?as?pd

          數(shù)據(jù)集

          看看 TMBD 數(shù)據(jù)是什么樣子的?數(shù)據(jù)有 21 列。

          df?=?pd.read_csv(r'tmdb-movies.csv')
          df.head(2)

          數(shù)據(jù)說明

          TMBD 的數(shù)據(jù)取自?kaggle[1]。

          • Popularity流行度:?指定電影流行度的數(shù)字量
          • Budget預算:?電影制作的預算。
          • Revenue收入:?電影產(chǎn)生的全球收入。
          • Original Title原片名:?翻譯或改編前電影的片名。
          • Cast演員:?在電影中扮演角色的演員姓名
          • Homepage主頁:?指向電影主頁的鏈接。
          • Director導演:?導演電影的導演姓名
          • Title片名:?電影名稱。
          • Keywords關鍵字:?與電影相關的關鍵字或標簽。
          • Overview概述:?對電影的簡要描述。
          • Runtime運行時間:?以分鐘為單位的電影運行時間。
          • Genres類型:?電影的類型,劇情、動作、喜劇、驚悚等。
          • Production Company制作公司:?電影的制作公司。
          • Vote Count投票數(shù):?收到的票數(shù)。
          • Vote Average投票平均:?電影收到的平均評分。

          日期時間

          • Release Date上映日期:?電影上映的日期。
          • Release Year發(fā)行年份:?電影發(fā)行的年份。

          數(shù)據(jù)清洗

          我們先清理數(shù)據(jù),然后我們會看到可愛的圖表。

          將特征更改為正確的日期時間格式并將流行功能四舍五入到小數(shù)點后兩位,以獲得更多內(nèi)容。

          df['release_date']?=?pd.to_datetime(df['release_date'])
          df['popularity']?=?round(df['popularity'],?2)

          刪除不必要的功能

          df.drop(['imdb_id',?'homepage',?'budget_adj','revenue_adj'],
          ??????axis=1,?inplace=True)?

          missing替換特征nan值

          df['tagline'].fillna('missing',inplace=True)
          df['keywords'].fillna('missing',inplace=True)
          df['production_companies'].fillna('missing',inplace=True)?
          df['cast'].fillna('missing',inplace=True)
          df['director'].fillna('missing',inplace=True)
          df['genres'].fillna('missing',inplace=True)
          df['overview'].fillna('missing',inplace=True)

          從預算和收入中刪除等于 0 的值。

          df.drop(df[(df['budget']==0)?&?(df['revenue']==0)].index,
          ????????inplace=True)

          現(xiàn)在,數(shù)據(jù)是干凈的,我們現(xiàn)在可以進一步創(chuàng)建一些可愛的圖表。

          cutecharts繪圖

          cutecharts中使用的參數(shù)

          分配你想要的圖表名稱,例如,你想要一個餅圖然后運行下面的代碼。

          chart?=?ctc.Pie()

          設置我們需要width, height在參數(shù)中添加的圖表的標題、寬度和高度。

          chart?=?ctc.Pie('Title',?width='600px',?height='300px')

          設置圖表選項,可以將使用set_options()函數(shù)。

          chart.set_options()

          設置x和y標簽的標題,我們將使用x_label,?y_label傳入set_options()函數(shù)示例如下。

          chart.set_options(x_label='X?Labels',
          ??????????????????y_label='Y?Labels')

          最后,我們將使用一個函數(shù)來顯示圖表render_notebook(),下面給出一個例子。

          chart.render_notebook()

          cutecharts繪圖

          繪制餅圖

          將要制作的圖表是甜甜圈圖表。我們將看到發(fā)行量最高的電影的前 5 年。

          df_year?=?df['release_year'].value_counts(
          ).reset_index().sort_values(by='index',
          ????????????????????????????ascending=False)[:5].rename(columns={'index':'release_year',
          ?????????????????????????????????????????????????????????????????'release_year':'Count'})
          chart?=?ctc.Pie('Top?5?years',?width='600px',?height='300px')
          chart.set_options(labels=list(df_year['release_year']),?inner_radius=0)
          chart.add_series(list(df_year['Count']))
          chart.render_notebook()
          餅圖

          繪制圓環(huán)圖

          我們將要制作的圖表是甜甜圈圖表。我們將看到發(fā)行量最高的電影的前 5 年。

          df_year?=?df['release_year'].value_counts(
          ).reset_index().sort_values(by='index',?
          ????????????????????????????ascending=False)[:5].rename(columns={'index':'release_year',
          ?????????????????????????????????????????????????????????????????'release_year':'Count'})
          chart?=?ctc.Pie('Top?5?years',?width='600px',?height='300px')
          chart.set_options(labels=list(df_year['release_year']),?inner_radius=0.8)
          chart.add_series(list(df_year['Count']))
          chart.render_notebook()
          圓環(huán)圖

          所有的特性都與我們在餅圖中使用的相同,只是inner_radius使用了一個額外的參數(shù);我們可以為甜甜圈圖的內(nèi)部半徑給出0到1之間的任何值。如果你看到默認的圖例將在左上角,你可以指定圖例的值,如?upLeft、upRight、downLeft、downRight。

          下圖顯示了?upRight?和?downLeft?上的圖例。

          甜甜圈圖

          繪制條形圖

          該函數(shù)將拆分字符串并返回每個類型的計數(shù)。

          def?count_genre(x):
          data_plot?=?df[x].str.cat(sep?=?'|')
          ????data?=?pd.Series(data_plot.split('|'))
          ????info?=?data.value_counts(ascending=False)
          ????return?info

          調(diào)用函數(shù)來計算每個類型的電影。

          df_genre_movies?=?count_genre('genres')
          df_genre_movies?=?pd.DataFrame(df_genre_movies).reset_index().rename(columns={'index':'Drama',?0:'Count'})

          條形圖代碼

          這里我們通過導入 faker 庫為不同的條使用顏色。

          from?cutecharts.faker?import?Faker

          chart?=?ctc.Bar('Top?Movie?Geners',?width='600px',?height='200px')
          chart.set_options(labels=list(df_genre_movies['Drama'][:7]),
          x_label='Drama',
          y_label='Count',
          colors=Faker.colors
          )

          chart.add_series('Geners',list(df_genre_movies['Count'][:7]))
          chart.render_notebook()
          條形圖

          這里我們在可以明確為條形設置不同顏色的地方添加了另一個參數(shù)顏色set_options()?。

          chart?=?ctc.Bar('Top?Movie?Geners',?width='600px',?height='200px')

          chart.set_options(labels=list(df_genre_movies['Drama'][:7]),
          x_label='Drama',
          y_label='Count',

          colors=['#FFF1C9',?'#F7B7A3',?'#EA5F89',?'#9B3192',?'#57167E',?'#47B39C','#00529B'])

          chart.add_series('Geners',list(df_genre_movies['Count'][:7]))
          chart.render_notebook()
          不同顏色條形圖

          繪制折線圖

          我們將計算多年來發(fā)行的電影數(shù)量,并僅繪制 20 年代的電影。

          data?=?df.groupby('release_year').count()['id'].reset_index().tail(16)

          制作折線圖以找出 20 年代以來電影的影響。

          chart?=?ctc.Line("Impact?of?Movie?over?the?years?of?20's",?width='700px',?height='200px')
          chart.set_options(labels=list(data['release_year']),
          ??????????????????x_label='Years',
          ??????????????????y_label='Count',
          ?)
          chart.add_series('Years',list(data['id']))
          chart.render_notebook()
          折線圖

          多年來,電影發(fā)行量呈指數(shù)增長。

          繪制散點圖

          我們看看受歡迎程度與預算的關系,并找出預算是否大于電影的受歡迎程度。

          chart?=?ctc.Scatter("Helps?to?gain?insights?like?if?movies?with?higher?budget?have?high?popularity",?width='700px',?height='200px')
          chart.set_options(x_label='Popularity',
          ??????????????????y_label='Budget',
          ??????????????????dot_size=1,
          ??????????????????colors=['#47B39C']
          ?)
          chart.add_series('Popularity?vs?Budget',?[(z[0],?z[1])?for?z?in?list(zip(df['popularity'],df['budget']))])
          chart.render_notebook()
          散點圖

          繪制雷達圖

          雷達圖也稱為蜘蛛圖,主要用于顯示多變量值。對于雷達圖,我們將獲取咖啡消費的虛擬數(shù)據(jù),其中特征為天、本周和上周。

          data?=?{'Day':?['Mon',?'Tue',?'Wed',?'Thu',?'Fri',?'Sat',?'Sun'],
          ????????'This?week':?[12,?10,?9,?9,?10,?3,?3],?
          ????????'Last?week':?[15,?12,?8,?9,?11,?4,?3]
          ???????}
          df_coffee?=?pd.DataFrame(data,?columns?=?['Day',?'This?week',?'Last?week'])

          我們看看本周和上周每天咖啡消費量的雷達圖。

          chart?=?ctc.Radar('Cups?of?coffee?consumed?per?day')
          chart.set_options(
          ????labels=list(df_coffee['Day']),?
          ????is_show_legend=True,
          ????legend_pos='upRight'?
          ????)
          chart.add_series('This?Week',?list(df_coffee['This?week']))?
          chart.add_series('Last?Week',?list(df_coffee['Last?week']))
          chart.render_notebook()
          雷達圖

          寫在最后

          看到這里的小伙伴,相信你基本掌握了該可愛圖庫的使用了。我們看到了用 python 制作的驚人的手寫可愛圖表。這個包的一個不足是它只提供 5 個圖表。但也是我們常用的一些圖標??梢詣邮衷囋嚹?。

          數(shù)據(jù)資料

          [1]?

          kaggle:?https://www.kaggle.com/kashishrastogi/eda-of-tmbd-dataset


          END


          各位伙伴們好,詹帥本帥搭建了一個個人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗一下哦?。g迎提建議)

          推薦閱讀


          牛逼!Python常用數(shù)據(jù)類型的基本操作(長文系列第①篇)

          牛逼!Python的判斷、循環(huán)和各種表達式(長文系列第②篇)

          牛逼!Python函數(shù)和文件操作(長文系列第③篇)

          牛逼!Python錯誤、異常和模塊(長文系列第④篇)


          瀏覽 35
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  91无码人妻 传媒tv | 做爱网址| 好爽无码毛一区二区三区 | 真实嫖妓在线观看免费 | 无码国产69精品久久久久 |