我已经定义了一个函数,用于为具有Count
,Percentage %
的每个列获取value_counts
,如下所示:
import pandas as pd
import seaborn as sns
import numpy as np
from IPython.display import display
df = sns.load_dataset("diamonds")
def valueCountDF(df):
object_cols = list(df.select_dtypes(exclude=np.number).columns)
numeric_cols = list(df.select_dtypes(include=np.number).columns)
c = df[object_cols].apply(lambda x: x.value_counts(dropna=False)).T.stack().astype(int)
p = (df[object_cols].apply(lambda x: x.value_counts(normalize=True,
dropna=False)).T.stack() * 100).round(2)
cp = pd.concat([c,p], axis=1, keys=["Count", "Percentage %"])
display(cp)
valueCountDF(df)
此代码输出:
Count Percentage %
cut Fair 1610 2.98
Good 4906 9.10
Ideal 21551 39.95
Premium 13791 25.57
Very Good 12082 22.40
color D 6775 12.56
E 9797 18.16
F 9542 17.69
G 11292 20.93
H 8304 15.39
I 5422 10.05
J 2808 5.21
clarity I1 741 1.37
IF 1790 3.32
SI1 13065 24.22
SI2 9194 17.04
VS1 8171 15.15
VS2 12258 22.73
VVS1 3655 6.78
VVS2 5066 9.39
白色背景的{
因此,我想尝试使用pandas dataframe styler为每个行索引使用背景色来设置数据帧的样式
# Uses the full color range
display(cp.style.background_gradient(cmap='viridis'))
上面给出了df排除指数的背景梯度。我需要为每行索引(cut, color, clarity)
及其组着色
确切地说,我想用颜色区分像一种颜色中的剪切和剪切组,一种颜色中的颜色组。有办法做到这一点吗
使用下面的css
样式器
table_css = [
{
"selector":"th.row_heading.level0",
"props":[
("background-color", "darkseagreen"),
("color", "white")
]
}
]
def valueCountDF(df):
object_cols = list(df.select_dtypes(exclude=np.number).columns)
numeric_cols = list(df.select_dtypes(include=np.number).columns)
c = df[object_cols].apply(lambda x: x.value_counts(dropna=False)).T.stack().astype(int)
p = (df[object_cols].apply(lambda x: x.value_counts(normalize=True,
dropna=False)).T.stack() * 100).round(2)
cp = pd.concat([c,p], axis=1, keys=["Count", "Percentage %"])
#cp.index.names = ['C3','grade']
#print(cp.style.render())
style = cp.style.background_gradient(cmap='viridis')
style = style.set_table_styles(table_css)
return style
valueCountDF(df)
能够仅使用一种颜色为level0索引着色,如下所示
目前没有回答
相关问题 更多 >
编程相关推荐