【问题标题】:Data analysis with pandas使用 pandas 进行数据分析
【发布时间】:2023-09-02 11:31:01
【问题描述】:

以下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

此答案表明,管理和销售是必须有更多机会通过相同 ID 获得假设的部门(这是我正在寻找的答案)。但我对其他组合也很感兴趣,我认为地图热能非常有用地说明这些数据。

来自同一个扇区的扇区组合是不相关的(也许答案矩阵的对角线应该是0,值无关紧要,我不会分析)。

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

    • Jez,如果在我的真实数据集中我有许多不同的“area_job_application”,还有其他方法可以映射“L”并将其传递给最终答案吗?
    • @LucasDresl - 当然,等一下。
    • 返回以下错误ValueError: matrices are not aligned
    • 如果使用L = df['area_job_application'].unique().tolist()同样的问题?
    • 我的错,我做错了什么,现在我再试一次