value_counts() 실행 시 생성되는 Series 구조:
sort_index() 정렬
df.host_name.value_counts().sort_index()
sort_values() 정렬
df.host_name.value_counts().sort_values()
# 초기 상태
host2 150
host1 120
(abc 100
# sort_index() 결과
(abc 100 # 특수문자 우선
host1 120 # 알파벳 순
host2 150
# sort_values() 결과
(abc 100 # 빈도수 기준
host1 120
host2 150
Ans = df.groupby('host_name').size()
groupby().size()
# 그룹화 후 각 그룹의 크기 계산
df.groupby('host_name').size()
host1 120
host2 150
value_counts()
# 각 값의 빈도 직접 계산
df['host_name'].value_counts()
host2 150
host1 120
# 빈도수 계산 및 데이터프레임 변환
frequency = df['host_name'].value_counts().reset_index()
frequency.columns = ['host_name', 'counts']
frequency = frequency.sort_values(by='counts', ascending=False)
host_name counts
0 host1 3
1 host2 3
2 host3 1
3 (abc) 1
groupby().size()
target = df.groupby('host_name').size()
# Series 형태로 출력
host_name
(abc) 1
host1 3
host2 2
host3 1
dtype: int64
groupby().size().reset_index()
target = df.groupby('host_name').size().reset_index()
# DataFrame 형태로 출력
host_name 0
0 (abc) 1
1 host1 3
2 host2 2
3 host3 1
# 그룹화된 열이 인덱스로 지정됨
size
n_group n_hood
강남구 역삼동 150
삼성동 120
강북구 수유동 100
# 그룹화된 열이 일반 컬럼으로 유지됨
n_group n_hood size
강남구 역삼동 150
삼성동 120
강북구 수유동 100
result = df.groupby('neighbourhood_group')['neighbourhood'].max()
result = df.groupby('neighbourhood_group').agg({'neighbourhood': 'max'})
# 방법 1 결과 (Series)
neighbourhood_group
강남구 압구정동
강북구 화곡동
Name: neighbourhood, dtype: object
# 방법 2 결과 (DataFrame)
neighbourhood
neighbourhood_group
강남구 압구정동
강북구 화곡동
agg({'neighbourhood': 'max', 'price': 'mean'})# 방법 1: groupby와 count 사용
result = df.groupby('neighbourhood_group')['neighbourhood'].count()
# 방법 2: value_counts 사용
result = df['neighbourhood_group'].value_counts()
# 방법 3: groupby와 size 사용
result = df.groupby('neighbourhood_group').size()
neighbourhood_group
강남구 150
강북구 120
강서구 100
Name: neighbourhood, dtype: int64
# normalize='index'로 행 기준 비율 계산
result = pd.crosstab(df['neighbourhood_group'],
df['room_type'],
normalize='index') * 100
# groupby 후 normalize=True로 비율 계산
result = df.groupby('neighbourhood_group')['room_type'].value_counts(normalize=True) * 100
result = result.unstack()
Entire home/apt Private room Shared room
neighbourhood_group
강남구 70.5 25.3 4.2
강북구 45.2 50.6 4.2