Python的學習資源分享

Learn Code With Mike品牌創辦人

11/25 23:52

客製化Pandas DataFrame樣式的實用方法(上)
本文以Kaggle網站的「Netflix data with IMDB scores added( https://www.kaggle.com/sarahjeeeze/imdbfile
)」資料集為例,分享Pandas套件如何依據特定的條件,客製化顯示Pandas DataFrame的資料結果樣式。
Q:Pandas DataFrame如何設定背景樣式?
想要使用背景顏色來強調資料的重點,同樣可以透過自訂函式來客製化顯示Pandas DataFrame的背景顏色條件:
#影片型態欄位的文字顏色
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']])
範例中的自訂函式中,將傳入的評價轉型為整數後,只要大於5就顯示灰色背景,否則維持原樣。接著,利用Pandas套件的索引切片語法,選擇rating(評價)欄位資料,並且套用Pandas DataFrame的背景顏色樣式。
當然Pandas套件的style模組也內建了幾個常用的背景樣式方法(Method),包含:
1.background_gradient()-依據資料的值顯示漸層的背景顏色,可利用subset關鍵字參數設定所要套用的欄位:
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')
2.highlight_null()-有遺漏值的地方,顯示背景顏色,幫助資料分析人員快速識別:
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')
3.highlight_max()-將最大值顯示背景顏色,可利用subset關鍵字參數設定所要套用的欄位:
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')
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2021/05/pandas-dataframe-styling.html )網站觀看更多精彩內容。
  • PYTHON資料分析
  • 資料分析
  • Pandas
  • Python
拍手 2 留言 0 觀看 80 收藏 2