小编Luc*_*ijk的帖子

Seaborn计数图,每组标准化y轴

我想知道是否可以创建Seaborn计数图,但是不是y轴上的实际计数,而是显示其组内的相对频率(百分比)(如hue参数所指定).

我用以下方法解决了这个问题,但我无法想象这是最简单的方法:

# Plot percentage of occupation per income class
grouped = df.groupby(['income'], sort=False)
occupation_counts = grouped['occupation'].value_counts(normalize=True, sort=False)

occupation_data = [
    {'occupation': occupation, 'income': income, 'percentage': percentage*100} for 
    (income, occupation), percentage in dict(occupation_counts).items()
]

df_occupation = pd.DataFrame(occupation_data)

p = sns.barplot(x="occupation", y="percentage", hue="income", data=df_occupation)
_ = plt.setp(p.get_xticklabels(), rotation=90)  # Rotate labels
Run Code Online (Sandbox Code Playgroud)

结果:

含有seaborn的百分比图

我正在使用来自UCI机器学习库的众所周知的成人数据集.pandas数据框的创建方式如下:

# Read the adult dataset
df = pd.read_csv(
    "data/adult.data",
    engine='c',
    lineterminator='\n',

    names=['age', 'workclass', 'fnlwgt', 'education', 'education_num',
           'marital_status', 'occupation', 'relationship', 'race', 'sex',
           'capital_gain', 'capital_loss', 'hours_per_week', …
Run Code Online (Sandbox Code Playgroud)

python pandas seaborn

18
推荐指数
6
解决办法
2万
查看次数

使用 numpy 按另一个列表对矩阵的行和列进行排序

我有一个 NxN 方阵。这个矩阵通常很大(N 大约 5000),我想聚合这个矩阵的各个部分以形成一个更小的矩阵。

因此,我有一个包含 N 个元素的列表,这些元素表示新矩阵中应将哪些行/列分组在一起。

为了使算法更简单、更快,我想根据上面的列表对行和列进行排序。

例子:

输入 5x5 矩阵:

row/col |  1 |  2 |  3 |  4 |  5 |
      1 |  5 |  4 |  3 |  2 |  1 |
      2 | 10 |  9 |  8 |  7 |  6 |
      3 | 15 | 14 | 13 | 12 | 11 |
      4 | 20 | 19 | 18 | 17 | 16 |
      5 | 25 | 24 | 23 …
Run Code Online (Sandbox Code Playgroud)

python numpy matrix

3
推荐指数
1
解决办法
2828
查看次数

标签 统计

python ×2

matrix ×1

numpy ×1

pandas ×1

seaborn ×1