[python] Python : Pandas 데이터 프레임의 두 열 (변수)을 기반으로 빈도 수를 가져옵니다.
안녕하세요, 다음 데이터 프레임이 있습니다.
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의 size
다음을 사용할 수 있습니다 .
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
답변
Pandas 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
답변
다른 가능성은 사용 .pivot_table()
하고 있습니다.aggfunc='size'
df_solution = df.pivot_table(index=['Group','Size'], aggfunc='size')