【问题标题】:Plotting non-numerical data in python在python中绘制非数值数据
【发布时间】:2020-10-13 11:19:57
【问题描述】:

我是编码初学者,我用python pandas写了一些我不完全理解的代码,需要澄清一下。

假设这是数据,DeathYearAgeGenderCountry 都是 excel 文件中的列。

How to plot a table with non-numeric values in python?

我看到了这个问题,我使用了这个命令

df.groupby('Gender')['Gender'].count().plot.pie(autopct='%.2f',figsize=(5,5))

它有效,并为我提供了每个性别百分比的饼图, 但是我知道的用于数值数据的普通饼图命令看起来像这样

df["Gender"].plot.pie(autopct="%.2f",figsize=(5,5))

我的问题是我们为什么要添加.count()? 是将非数字数据转换为数字吗? 为什么要使用 group by 并键入两次列 ('Gender')['Gender']

【问题讨论】:

  • 是的,.count() 将男性和女性转换为有多少男性和多少女性的计数。我建议您尝试不使用第一个 ('Gender') 或不使用第二个 ['Gender'] 的 groupby 语句,看看会发生什么。第一个告诉 pandas 按性别类别对结果进行分组。第二个说只计算性别。
  • 非常感谢。我真的很感激。

标签: python dataframe matplotlib


【解决方案1】:

我将首先解决您问题的第二部分,因为这样解释更有意义

  1. 您使用('Gender')['Gender'] 的原因是它做了两件不同的事情。第一个('Gender')groupby 函数的参数。它告诉您希望 DataFrame 按“性别”列分组。请注意,groupby 函数需要有一个列或级别来分组,否则它将不起作用。 第二个 ['Gender'] 告诉您只查看生成的 DataFrame 中的“性别”列。查看第二个['Gender'] 所做的最简单的方法是比较df.groupby('Gender').count()df.groupby('Gender')['Gender'].count() 的输出,看看会发生什么。

  2. 为了清楚起见,我在第一部分省略了一个细节,df.groupby('Gender') 的输出不是 DataFrame,而是实际上是 DataFrameGroupBy 对象。这个对象到底是什么的细节对你的问题并不重要,但关键是要取回一个 DataFrame,你需要一个函数来告诉你在你希望创建的 DataFrame 的行中放入什么。 .count() 函数是这些选项之一(以及许多其他选项,例如 .mean() 等)。在您的情况下,由于您希望总计数制作饼图,.count() 函数正是这样做的;它将计算“女性”和“男性”出现在“性别”列中的次数,该总和将是相应行中的条目。然后可以使用 DataFrame 创建饼图。所以你是正确的,.count() 函数将非数字“女性”和“男性”条目转换为一个数值,该数值对应于这些条目在初始 DataFrame 中出现的频率。

【讨论】:

    猜你喜欢
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多