bestsource

여러 데이터 프레임 열을 기준으로 주파수 카운트 가져오기

bestsource 2023. 9. 11. 21:55
반응형

여러 데이터 프레임 열을 기준으로 주파수 카운트 가져오기

저는 다음과 같은 데이터 프레임을 가지고 있습니다.

그룹. 크기
짧다 작은.
짧다 작은.
적당한. 중간의
적당한. 작은.
키가크다 큰.

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

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

그룹바이즈를 이용하시면 됩니다.

import pandas as pd

# read the sample data from the OP
df =  pd.read_html('https://stackoverflow.com/q/33271098/7758804')[0]

옵션 1:

dfg = df.groupby(by=["Group", "Size"]).size()

# which results in a pandas.core.series.Series
Group     Size
Moderate  Medium    1
          Small     1
Short     Small     2
Tall      Large     1
dtype: int64

옵션 2:

dfg = df.groupby(by=["Group", "Size"]).size().reset_index(name="Time")

# which results in a pandas.core.frame.DataFrame
      Group    Size  Time
0  Moderate  Medium     1
1  Moderate   Small     1
2     Short   Small     2
3      Tall   Large     1

옵션 3:

dfg = df.groupby(by=["Group", "Size"], as_index=False).size()

# which results in a pandas.core.frame.DataFrame
      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/get-a-frequency-count-based-on-multiple-dataframe-columns

반응형