面對大量資料的分析工作中,有時想要快速識別遺漏的值,或是已經整理好報表資料,想要為老闆強調某些重要的數字等,這時候除了可以將資料匯出到Excel進行處理外,Pandas套件也提供了許多客製化Pandas DataFrame樣式的功能,來解決以上的需求。
如果你也是使用Pandas套件來進行資料分析的話,本文就以Kaggle網站的「Netflix data with IMDB scores added」資料集(mycsvfile.csv)為例,分享Pandas套件如何依據特定的條件,客製化顯示Pandas DataFrame的資料結果樣式,常用的包含:
- Pandas DataFrame讀取資料
- Pandas DataFrame文字樣式
- Pandas DataFrame背景樣式
- Pandas DataFrame長條圖樣式
一、Pandas DataFrame讀取資料
首先,利用以下指令安裝Pandas與Jinja2模板(Template)相依性套件:
$pip install pandas $pip install Jinja2
接下來,就可以引用Pandas模組(Module),呼叫read_csv()方法來讀取Kaggle網站的「Netflix data with IMDB scores added」資料集(mycsvfile.csv),如下範例:
import pandas as pd df = pd.read_csv('mycsvfile.csv') print(df)
截取部分執行結果
二、Pandas DataFrame文字樣式
Pandas DataFrame有了資料後,假設type(影片型態)欄位的資料,Movie的文字想要顯示黃色,而其餘的則顯示紅色,這時候就需要依據這樣的條件,自訂一個函式(Function),如下範例:
import pandas as pd #影片型態欄位的文字顏色 def type_color(val): color = 'yellow' if val == 'Movie' else 'red' return f'color:{color}' df = pd.read_csv('mycsvfile.csv')
接下來,就可以使用Pandas套件的style模組(Module),呼叫applymap()方法(Method),將函式中所定義的樣式套用到Pandas DataFrame中,如下範例:
import pandas as pd #影片型態欄位的文字顏色 def type_color(val): color = 'yellow' if val == 'Movie' else 'red' return f'color:{color}' df = pd.read_csv('mycsvfile.csv') new_df = df.head(10).style.applymap(type_color, subset=pd.IndexSlice[:,['type']]) print(new_df)
截取部分執行結果
三、Pandas DataFrame背景樣式
想要使用背景顏色來強調資料的重點,同樣可以透過自訂函式(Function)來客製化顯示Pandas DataFrame的背景顏色條件,如下範例:
import pandas as pd #影片型態欄位的文字顏色 def type_color(val): color = 'yellow' if val == 'Movie' else 'red' return f'color:{color}' #評價欄位的背景顏色 def rating_highlight(val): color = 'grey' if int(val) > 5 else '' return f'background-color: {color}' df = pd.read_csv('mycsvfile.csv') new_df = df.head(10).style.applymap(rating_highlight, subset=pd.IndexSlice[:, ['rating']]) print(new_df)
截取部分執行結果
當然Pandas套件的style模組(Module)也內建了幾個常用的背景樣式方法(Method),包含:
- background_gradient() - 依據資料的值顯示漸層的背景顏色,可利用subset(子資料集)關鍵字參數設定所要套用的欄位,如下範例:
import pandas as pd #影片型態欄位的文字顏色 def type_color(val): color = 'yellow' if val == 'Movie' else 'red' return f'color:{color}' #評價欄位的背景顏色 def rating_highlight(val): color = 'grey' if int(val) > 5 else '' return f'background-color: {color}' df = pd.read_csv('mycsvfile.csv') new_df = df.head(10).style.background_gradient(subset='rating') print(new_df)
截取部分執行結果
- highlight_null() - 有遺漏值的地方,顯示背景顏色,幫助資料分析人員快速識別,如下範例:
import pandas as pd #影片型態欄位的文字顏色 def type_color(val): color = 'yellow' if val == 'Movie' else 'red' return f'color:{color}' #評價欄位的背景顏色 def rating_highlight(val): color = 'grey' if int(val) > 5 else '' return f'background-color: {color}' df = pd.read_csv('mycsvfile.csv') new_df = df.head(10).style.highlight_null(null_color='red') print(new_df)
截取部分執行結果
- highlight_max() - 將最大值顯示背景顏色,可利用subset(子資料集)關鍵字參數設定所要套用的欄位,如下範例:
import pandas as pd #影片型態欄位的文字顏色 def type_color(val): color = 'yellow' if val == 'Movie' else 'red' return f'color:{color}' #評價欄位的背景顏色 def rating_highlight(val): color = 'grey' if int(val) > 5 else '' return f'background-color: {color}' df = pd.read_csv('mycsvfile.csv') new_df = df.head(10).style.highlight_max(color='orange', subset='rating') print(new_df)
截取部分執行結果
- highlight_min() - 將最小值顯示背景顏色,可利用subset(子資料集)關鍵字參數設定所要套用的欄位,如下範例:
import pandas as pd #影片型態欄位的文字顏色 def type_color(val): color = 'yellow' if val == 'Movie' else 'red' return f'color:{color}' #評價欄位的背景顏色 def rating_highlight(val): color = 'grey' if int(val) > 5 else '' return f'background-color: {color}' df = pd.read_csv('mycsvfile.csv') new_df = df.head(10).style.highlight_min(color='green', subset='rating') print(new_df)
截取部分執行結果
四、Pandas DataFrame長條圖樣式
Pandas DataFrame可以依據資料的值顯示漸層的背景顏色外,也能夠利用Pandas套件style模組(Module)的bar()方法(Method),顯示長條圖的形狀,如下範例:
import pandas as pd #影片型態欄位的文字顏色 def type_color(val): color = 'yellow' if val == 'Movie' else 'red' return f'color:{color}' #評價欄位的背景顏色 def rating_highlight(val): color = 'grey' if int(val) > 5 else '' return f'background-color: {color}' df = pd.read_csv('mycsvfile.csv') new_df = df.head(10).style.bar(subset=['rating'],color='#5fba8d') print(new_df)
截取部分執行結果
當然,如果想要同時顯示多個Pandas DataFrame樣式,只要往後串接方法(Method)即可。舉例來說,在Pandas DataFrame中,標記遺漏值與rating(評價)欄位最大、最小值的背景顏色,就可以如下範例作法:
import pandas as pd #影片型態欄位的文字顏色 def type_color(val): color = 'yellow' if val == 'Movie' else 'red' return f'color:{color}' #評價欄位的背景顏色 def rating_highlight(val): color = 'grey' if int(val) > 5 else '' return f'background-color: {color}' df = pd.read_csv('mycsvfile.csv') new_df = df.head(10).style.highlight_null(null_color='red')\ .highlight_max(color='orange', subset='rating')\ .highlight_min(color='green', subset='rating') print(new_df)
截取部分執行結果
五、小結
透過本文所分享的三個設計Pandas DataFrame樣式,包含文字、背景與長條圖,相信能幫助大家在整理資料或製作報表時,有效的將重點進行視覺化,提升資料的可讀性,當然也別將Pandas DataFrame設計得五顏六色,讓檢視的人眼花撩亂唷。大家也來選擇喜歡的資料集,練習設計你的Pandas DataFrame樣式吧。
如果喜歡我的文章,別忘了在下面訂閱本網站,以及幫我按五下Like(使用Google或Facebook帳號免費註冊),支持我創作教學文章,回饋由LikeCoin基金會出資,完全不會花到錢,感謝大家。
- [Pandas教學]3個Pandas套件合併多個CSV檔案資料的實用技巧
- Pandas教學]看完這篇就懂Pandas套件如何即時讀取API的回應資料
- [Pandas教學]快速掌握Pandas套件讀寫SQLite資料庫的重要方法
- [Pandas教學]輕鬆入門3個常見的Pandas套件排序資料方式
- [Pandas教學]有效利用Pandas套件篩選資料的應用技巧
- [Pandas教學]善用Pandas套件的Groupby與Aggregate方法提升資料解讀效率
- [Pandas教學]使用Pandas套件實作資料清理的必備觀念(上)
- [Pandas教學]使用Pandas套件實作資料清理的必備觀念(下)
- Visual Studio Code漂亮印出Pandas DataFrame資料的實用方法
- [Pandas教學]資料視覺化必懂的Pandas套件繪製Matplotlib分析圖表實戰
- [Pandas教學]5個實用的Pandas讀取Excel檔案資料技巧
- 解析Python網頁爬蟲如何有效整合Pandas套件提升資料處理效率
- [Pandas教學]掌握Pandas DataFrame讀取網頁表格的實作技巧
- [Pandas教學]資料分析必懂的Pandas DataFrame處理雙維度資料方法
- [Pandas教學]資料分析必懂的Pandas Series處理單維度資料方法
留言
張貼留言