以下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,无关紧要,我不会分析)。
答案 0 :(得分:1)
首先使用crosstab
或groupby
与size
和unstack
,然后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