如何在pandas数据框中找到group by或pivot table的意思?

时间:2018-03-16 22:00:37

标签: python pandas

我使用的是salaries.csv数据集,您找到https://www.kaggle.com/kaggle/sf-salaries/data 我试图找到有500多个数据点的职位。之后计算每个职位的平均TotalPayBenefits。输出是打印前10名收入职位。 enter image description here

我做了什么,

salaries = pd.read_csv('Salaries.csv')
salaries = salaries.drop(["Id", "Notes", "Status", "Agency"], axis = 1)
salaries = salaries.dropna()
salaries.head()

jobtitlelist = (salaries.JobTitle.value_counts()>500)[0:10]
data_10jobtitle = salaries[salaries.JobTitle.isin(jobtitlelist.index)]
avgsalary_10jobtitle = data_10jobtitle.groupby(by=data_10jobtitle.JobTitle).TotalPayBenefits.mean()
print(avgsalary_10jobtitle)

我的输出是 enter image description here

我想我会想念我找不到确切输出的小东西。

2 个答案:

答案 0 :(得分:0)

您需要更改此行

jobtitlelist = salaries.JobTitle.value_counts()[(salaries.JobTitle.value_counts()>500)][0:10]

答案 1 :(得分:0)

在这一行:

jobtitlelist = (salaries.JobTitle.value_counts()>500)[0:10]

您首先找到至少有500条记录的工作,然后您将获得前10个工作,这些工作用于计算平均总工资福利。所以你的工作流程是

  1. 仅保留至少有500条记录的职位
  2. 获得前10个职称
  3. 计算平均总薪资
  4. 但根据您的问题,您的工作流程应为

    1. 仅保留至少有500条记录的职位
    2. 计算步骤1中的平均工资总额
    3. 按升序排序平均总薪资
    4. 结果数据框的前10行将是您要找的内容