Pandas groupby操作返回对象,但没有视觉效果

时间:2017-04-25 19:22:06

标签: python pandas

Pandas(2天)非常新,并在我的奥斯卡颁奖典礼数据集上运行以下groupby命令。

df[(df.Award == 'Best Actress') & (df.Winner == 1.0)].groupby('Name')

我收到了以下输出,通常在可视化之前,但不是这次。

<pandas.core.groupby.DataFrameGroupBy object at 0x1166b8cc0>

我期待着所有女演员的名单,这些女演员曾为#34;最佳(领先)女演员赢得奥斯卡奖&#34;按其各自的名称分组。

为什么没有图表?

编辑:

数据看起来像这样。 。 。

    Year    Ceremony    Award   Winner  Name                Film
0   1928    1           Actor   0.0    Richard Barthelmess  The Noose
1   1928    1           Actor   1.0     Emil Jannings       The Last Command
2   1928    1           Actress 0.0     Louise Dresser      A Ship Comes In
3   1928    1         Actress   1.0     Janet Gaynor        7th Heaven
4   1928    1         Actress   0.0     Gloria Swanson      Sadie Thompson
5   1928    1         Art Dir   0.0     Rochus Gliese       Sunrise

2 个答案:

答案 0 :(得分:3)

  

我收到了以下输出,通常在可视化之前,但不是这次。

<pandas.core.groupby.DataFrameGroupBy object at 0x1166b8cc0>

与可视化之前的相同 pandas DataFrameGroupBy对象的文字表示。

在Python中,一切都是对象。但是,并非每个对象都有直观的方式将自己呈现给屏幕。存在一种名为__repr__的方法,用于控制该对象的文本表示。在这种情况下,df.groupby('col_name')会返回DataFrameGroupBy个对象。该对象的__repr__方法返回您看到的字符串<pandas.core.groupby.DataFrameGroupBy object at 0x1166b8cc0>。对于该方法来说,用<>包装生成对象的类的泛型描述是相当典型的。

<>看起来很熟悉。 matplotlib为轴输出__repr__df.plot()生成<matplotlib.axes._subplots.AxesSubplot at 0x11a2b9cf8>。事实上,您可以使用分号df.plot();

来抑制该输出

所有人都说,我仍然不确定你对图表的期望是什么

df.query('Award == "Actress"').set_index('Name').Winner.plot.bar()

enter image description here

答案 1 :(得分:2)

我认为您需要groupby并汇总某些功能,例如size,如果需要计算已过滤的列static final String DATABASE_TABLE = "users"; 以及绘图函数plotplot.bar:< / p>

Name

或使用value_counts

df[(df.Award == 'Best Actress') & (df.Winner == 1.0)].groupby('Name').size().plot() 

df[(df.Award == 'Best Actress') & (df.Winner == 1.0)].groupby('Name').size().plot.bar() 

编辑:

我认为非常好的教程是10 Minutes to pandas