用熊猫进行数据分析

时间:2018-04-15 18:44:02

标签: pandas group-by pivot-table data-analysis pandas-groupby

以下df是我的洞数据集的摘要,仅用于说明我的问题。 df显示了每个id的工作申请,我想知道哪个部门组合更适合个人申请?

df
id    education   area_job_application
 1      Collage           Construction 
 1      Collage                  Sales
 1      Collage         Administration
 2   University                Finance
 2   University                  Sales
 3      Collage                Finance
 3      Collage                  Sales
 4   University         Administration   
 4   University                  Sales
 4   University           Data analyst
 5   University         Administration
 5   University                  Sales

答案

              Construction    Sales    Administration   Finance   Data analyst
Contruction              1        1                 1         0             0
Sales                    1        5                 3         1             1           
Administration           1        3                 3         0             1
Finance                  0        2                 0         2             0
Data analyst             0        1                 1         0             1

这个答案表明,管理和销售是一个部门,更多的机会必须通过相同的身份获得假设(这是我正在寻找的答案)。但我也对其他组合感兴趣,我认为mapheat将非常有用,可以说明这些数据。

来自同一扇区的扇区组合是无关紧要的(可能在答案矩阵的对角线上应为0,无关紧要,我不会分析)。

1 个答案:

答案 0 :(得分:1)

首先使用crosstabgroupbysizeunstack,然后DataFrame.dot,转置DataFrame,最后添加reindex对于索引和列的自定义顺序:

#dynamic create order by unique values of column
L = df['area_job_application'].unique()

#df = pd.crosstab(df.id, df.area_job_application)
df = df.groupby(['id', 'area_job_application']).size().unstack(fill_value=0)
df = df.T.dot(df).rename_axis(None).rename_axis(None, axis=1).reindex(columns=L, index=L)
print (df)
                Construction  Sales  Administration  Finance  Data analyst
Construction               1      1               1        0             0
Sales                      1      5               3        2             1
Administration             1      3               3        0             1
Finance                    0      2               0        2             0
Data analyst               0      1               1        0             1