Pandas:在表格摘要中说明分录差异和特定列值

2024-05-20 16:05:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚开始学习如何使用Pandas,我正在尝试使用一个相当大的数据集(5000行和15列)。数据的格式是这样的(举一个我面临的问题的例子,因为我想了解如何做到这一点-实际的数据与终止无关)。你知道吗

ID#    Firing Date     Age     State     Position       Cause
1      2011-07-03      29      NY        Salesman       Layoff
2      2014-03-20      25      AK        salesman       layoff
3      2004-08-11      42      CA        Receptionist   Tardiness
4      07/18/12        41      CA        Mechanic       Unknown
5      06/30/12        24      NY        Salesman       Harassment
6      05/20/12        31      NY        Mechanic       Harassment

我需要使用这样的数据来创建表格摘要,但在仔细阅读熊猫文档和一些类似的问题几个小时后,我仍然迷路了。你知道吗

我相信我已经通过read\u csv()的功能找到了解析日期的方法

my_df = pd.read_csv('my_dataset.csv',
                    parse_dates = ['Hiring Date'])

但是,我不知道如何创建一个摘要来说明特定列中每一行的值。如果该列中的值是“saller”或“saller”,那么我需要将其与招聘日期(按年份)进行比较,第三列显示所有“mechanical”值,第四列显示每年剩余的所有职位类型的总数。你知道吗

所以在上面的示例数据中,我希望有一个如下的输出:

Year      Salesman      Mechanic      Other      Total
2004      0             0             1          1
2011      1             0             0          1
2012      1             2             0          3
2014      1             0             0          1

我已经试了好几个小时了,但我能做的最多的就是制作一个表,显示所有不同的可能的职位类型(实际数据接近30),我想不出一个方法来输入我需要的日期片段,所以它只读取年份而不是完整的日期(然后按它分组)。你知道吗

任何帮助都将不胜感激。你知道吗


Tags: csv数据方法readdatemy职位ca
1条回答
网友
1楼 · 发布于 2024-05-20 16:05:49

设置

这只是数据规范化

dct = {
  'Firing': pd.to_datetime(df.Firing).dt.year,
  'State': df.State.str.title()
}

现在使用pivot_table,通过对第一个轴求和来结束:

out = (df.assign(**dct).pivot_table(
          index='Firing', columns='State', aggfunc='size', fill_value=0))

out.assign(total=out.sum(1))

State  Mechanic  Receptionist  Salesman  total
year
2004          0             1         0      1
2011          0             0         1      1
2012          2             0         1      3
2014          0             0         1      1

您还可以将pivot_table替换为crosstab(之后使用相同的求和代码):

out = pd.crosstab(df.Firing.dt.year, df.State.str.title())

相关问题 更多 >