Mike的Python學院

資料分析、Pandas、Python、PYTHON資料分析

Mike Ku

Learn Code With Mike品牌創辦人

2021/11/25

客製化Pandas DataFrame樣式的實用方法(下)

本文以Kaggle網站的「Netflix data with IMDB scores added( https://www.kaggle.com/sarahjeeeze/imdbfile
)」資料集為例,分享Pandas套件如何依據特定的條件,客製化顯示Pandas DataFrame的資料結果樣式。
Q:Pandas DataFrame如何設定文字樣式?
Pandas DataFrame有了資料後,假設type(影片型態)欄位的資料,Movie的文字想要顯示黃色,而其餘的則顯示紅色,這時候就需要依據這樣的條件,自訂一個函式,如下範例:
#影片型態欄位的文字顏色
def type_color(val):
color = 'yellow' if val == 'Movie' else 'red'
return f'color:{color}'
df = pd.read_csv('mycsvfile.csv')
接下來,就可以使用Pandas套件的style模組,呼叫applymap()方法(Method),將函式中所定義的樣式套用到Pandas DataFrame中,如下範例:
#影片型態欄位的文字顏色
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']])
範例中由於我們僅針對type(影片類型)欄位設計文字樣式,所以在applymap()方法(Method)的subset關鍵字參數中,使用Pandas套件的索引切片語法,選擇type(影片類型)欄位的所有資料,套用自訂的文字顏色樣式。
Q:Pandas DataFrame如何設定長條圖樣式?
Pandas DataFrame可以依據資料的值顯示漸層的背景顏色外,也能夠利用Pandas套件style模組的bar()方法(Method),顯示長條圖的形狀,如下範例:
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')
當然,如果想要同時顯示多個Pandas DataFrame樣式,只要往後串接方法(Method)即可。舉例來說,在Pandas DataFrame中,標記遺漏值與rating(評價)欄位最大、最小值的背景顏色,就可以如下範例作法:
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')
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2021/05/pandas-dataframe-styling.html )網站觀看更多精彩內容。
3 0 658 2