Pandas:绘制显示所有标签的过滤数据框

Pandas: plot a filtered dataframe showing all labels

我到处寻找答案,但我无法解决这个问题...

我需要使用 pandas:

绘制过滤数据框的条形图
import pandas as pd
import matplotlib.pyplot as plt

nestedDict = {'A': {'apples': 3,
                    'bananas': 5,
                    'oranges': 6,
                    'kiwis': 9},
              'B': {'dog': 1,
                  'bananas': 9,
                  'oranges': 3,
                  'kiwis': 1},
              'C': {'rain': 6,
                  'bananas': 9,
                  'oranges': 3,
                  'kiwis': 3}}


def plot_lig():
  df = pd.DataFrame.from_dict(nestedDict)

  df.index = df.index.str.split()
  df.index.name = 'residue'
  df2 = df[df <= 6].dropna()
  df2.plot(kind='bar')
  plt.show()
  plt.close()

plot_lig()

当我运行这个函数时条形图只显示“橘子”。

如果我删除 .dropna,它会包含 X 轴上的所有标签(所有刻度),即使由于过滤器而不会绘制过滤结果。

我想绘制我过滤后的选择的所有结果,丢弃过滤后的数据及其相应的 x 刻度。

再次感谢!

已解决:

nestedDict = nestedDict[nestedDict <= -0.25] #set filter first
nestedDict.dropna(how='all', inplace=True) #added the 'all' keyword makes you keep the columns with single outliers
df2.plot(kind='bar', edgecolor='black')
plt.legend(['X var', 'Y var', 'Z var'])
plt.show()
plt.close()

希望这对其他人有帮助!