首页 > 解决方案 > 如何在 Matplotlib 中显示顶部和底部 5 行值以及自定义行值?

问题描述

我有一个大约 750 奇数行的数据框,这对于传统的条形图来说显然是多余的。我想做的是让它显示前 5 个条目、我正在寻找的特定标准和底部 5 个条目。

数据框是这样的:


Animal  Score
0   Dog 1
1   Pig 2
2   Chicken 3
3   Cat 4
4   Fox 5

我想要做的是显示条形图,以便它选择前 5 个(其中 1 最高)条目(狗、猪、鸡、猫、狐狸),然后选择列表中的特定条目(甲虫)和然后是底部的 5 个条目(老虎、狮子、斑马、大猩猩、海马)以及这些条目的相应“分数”。

这甚至可能吗?

在此先感谢您的帮助!

更新:无论我修改了多少次 concat 字段,原始答案都在图表的右侧给了我额外的条目。也许是由于我的 df 中有 750 个条目?答: NaN 值给了我空白值,这就是原因。这些都是我考虑的。

标签: pythonpandasmatplotlib

解决方案


# Importing Dependencies
import pandas as pd
import matplotlib.pyplot as plt

# Creating DataFrame
data = {'Animal': ['Dog', 'Pig', 'Chicken','Cat','Fox','Hawk','Dolphin','Squirrel','Lizard','Shark','Ant','Beetle','Termite',
'Kangaroo','Opossum','Whale','Jellyfish','Seahorse','Gorilla','Zebra','Lion','Tiger'], 'Score': [_ for _ in range(23) if _ != 0]}

df = pd.DataFrame(data)

#Add custom entries here
custom_df = df.loc[df['Animal'].isin(['Beetle', 'Ant'])]

# Create new df
new_df = pd.concat([df[:5], df[-5:], custom_df])
new_df.sort_values(by=['Score'], inplace= True)
new_df.reset_index(drop=True, inplace= True)

# Creating the bar plot
plt.bar(new_df['Animal'], new_df['Score'])
plt.xticks(rotation=90) 
plt.xlabel("Animals")
plt.ylabel("Score")
plt.show()

在此处输入图像描述


推荐阅读