source

Python: pandas dataframe의 두 열(변수)을 기준으로 빈도수를 구하면 일부 행이 나타납니다.

manysource 2023. 9. 7. 21:49

Python: pandas dataframe의 두 열(변수)을 기준으로 빈도수를 구하면 일부 행이 나타납니다.

안녕하세요 아래 데이터 프레임을 가지고 있습니다.

    Group           Size
    
    Short          Small
    Short          Small
    Moderate       Medium
    Moderate       Small
    Tall           Large

데이터 프레임에 동일한 행이 몇 번 나타나는지 횟수를 세고 싶습니다.

    Group           Size      Time
    
    Short          Small        2
    Moderate       Medium       1 
    Moderate       Small        1
    Tall           Large        1

groupby's를 사용할 수 있습니다.

In [11]: df.groupby(["Group", "Size"]).size()
Out[11]:
Group     Size
Moderate  Medium    1
          Small     1
Short     Small     2
Tall      Large     1
dtype: int64

In [12]: df.groupby(["Group", "Size"]).size().reset_index(name="Time")
Out[12]:
      Group    Size  Time
0  Moderate  Medium     1
1  Moderate   Small     1
2     Short   Small     2
3      Tall   Large     1

팬더 1.1 이후 업데이트value_counts이제 여러 열을 허용합니다.

df.value_counts(["Group", "Size"])

시도해 볼 수도 있습니다.pd.crosstab()

Group           Size

Short          Small
Short          Small
Moderate       Medium
Moderate       Small
Tall           Large

pd.crosstab(df.Group,df.Size)


Size      Large  Medium  Small
Group                         
Moderate      0       1      1
Short         0       0      2
Tall          1       0      0

편집: 출력을 얻기 위해

pd.crosstab(df.Group,df.Size).replace(0,np.nan).\
     stack().reset_index().rename(columns={0:'Time'})
Out[591]: 
      Group    Size  Time
0  Moderate  Medium   1.0
1  Moderate   Small   1.0
2     Short   Small   2.0
3      Tall   Large   1.0

다른 가능성은 다음과 같습니다.aggfunc='size'

df_solution = df.pivot_table(index=['Group','Size'], aggfunc='size')

언급URL : https://stackoverflow.com/questions/33271098/python-get-a-frequency-count-based-on-two-columns-variables-in-pandas-datafra