上一篇介紹了DataFrame
的顯示引數,主要是對DataFrame
中值進行調整。
本篇介紹DataFrame
的顯示樣式的調整,顯示樣式主要是對錶格本身的調整,
比如顏色,通過顏色可以突出顯示重要的值,觀察資料時可以更加高效的獲取主要資訊。
下面介紹一些針對單個資料和批次資料的樣式調整方式,讓DataFrame
的資料資訊更加的一目瞭然。
每個DataFrame
都有個style
屬性,通過這個屬性可以來調整顯示的樣式。
下面的範例,一次調整多個型別的列的顯示。
import pandas as pd
df = pd.DataFrame(
{
"日期": ["2022-10-01", "2022-11-11",
"2022-12-12", "2023-01-01", "2023-02-02"],
"單價": [1099.5, 8790.0, 12.55, 10999.0, 999.5],
"數量": [1, 3, 1200, 4, 5],
}
)
df["日期"] = pd.to_datetime(df["日期"])
col_format = {
"日期": "{:%Y/%m/%d}",
"單價": "¥{:,.2f}",
"數量": "{:,} 件"
}
df.style.format(col_format)
調整之後:
/
來分割調整之後,表格中的內容放入報告中會更加美觀。
除了調整數值的顯示樣式,更強大的功能是,我們可以調整單元格的顏色。
比如,下面的資料,我們先計算出總價,
然後用紅色背景標記出總價最小的訂單,用綠色背景標記出總價最大的訂單。
df = pd.DataFrame(
{
"訂單號": ["0001", "0002",
"0003", "0004", "0005"],
"單價": [1099.5, 8790.0,
12.55, 10999.0, 999.5],
"數量": [1, 3, 1200, 4, 5],
}
)
df["總價"] = df["單價"] * df["數量"]
col_format = {
"單價": "¥{:,.2f}",
"總價": "¥{:,.2f}",
}
df.style.format(col_format).highlight_min(
"總價", color="red"
).highlight_max(
"總價", color="lightgreen"
)
新增背景色之後,只能看出哪個訂單總價最高,哪個訂單總價最低。
對於其他的訂單,沒有直觀的印象,所以,下面我們更進一步用漸變色來標記總價列。
總價越高,背景色越深,這樣就對所有訂單的總價有了直觀的印象。
df = pd.DataFrame(
{
"訂單號": ["0001", "0002", "0003", "0004", "0005"],
"單價": [1099.5, 8790.0, 12.55, 10999.0, 999.5],
"數量": [1, 3, 1200, 4, 5],
}
)
df["總價"] = df["單價"] * df["數量"]
col_format = {
"單價": "¥{:,.2f}",
"總價": "¥{:,.2f}",
}
df.style.format(
col_format
).background_gradient(
subset="總價", cmap="Greens"
)
再進一步,用條形圖+漸變色的方式顯示總價資訊。
這樣,不僅可以看出總價的高低,還能大致看出究竟高了多少。
df = pd.DataFrame(
{
"訂單號": ["0001", "0002", "0003", "0004", "0005"],
"單價": [1099.5, 8790.0, 12.55, 10999.0, 999.5],
"數量": [1, 3, 1200, 4, 5],
}
)
df["總價"] = df["單價"] * df["數量"]
col_format = {
"單價": "¥{:,.2f}",
"總價": "¥{:,.2f}",
}
df.style.format(
col_format
).bar(
subset="總價", cmap="Wistia"
)
通過pandas
本身的樣式引數,可以美化分析的結果,直接用於最後的報告或者PPT
中。
pandas
小技巧系統至此暫時告一段落,接下來,準備開始另一個關鍵的資料分析庫:numpy
。