728x90
사용한 데이터 형태
groupby
- groupby()로 선택한 컬럼에 대한 그룹화를 진행한다
- 그룹화는 해당 열의 데이터들의 unique한 값을 기준으로 묶는다
- 해당 그룹에 대해서 count(), mean(), min() 등등을 수행할 수 있다.
# df의 col_name1로 그룹화
df.groupby('col_name1')
# df의 col_name1로 그룹화 한 후 'col_name2'열의 평균을 계산
df.groupby('col_name1').col_name2.mean()
1) cylinders열의 unique한 값들을 확인한다
2) cylinders열을 기준으로 groupby를 진행하고 cylinders의 각 unique한 값에 대하여 속하는 mpg열의 값들의 mean을 구한다
dataframe에 apply 함수를 적용하여 데이터를 변화시킬 수 있다
df.groupby('col_name1').apply(lambda df: ~~~)
cylinder로 그룹화한 뒤 각 그룹에서 name열의 첫번째 값을 가져온다
** 이 부분에서 kaggle learn 작성자는 apply 속의 함수 중 df.title.iloc[0]으로 작성하였지만 다른 데이터셋으로 로컬에서 실행하면 " AttributeError: 'int' object has no attribute 'iloc'" 이런 오류가 발생한다. 그래서 df['name'].iloc()으로 적용했는데 값이 잘 도출되었다. 왜그런지는 아직 찾는중..
여러개의 열에 대해서도 groupby적용이 가능하다
df.groupby(['col1','col2'])
각 그룹의 mpg열에 대해서 함수를 적용
- .agg()를 사용하여 여러개의 함수를 사용할 수 있다.
- 리스트에 각 함수 계산 값을 입력한
- .agg()에는 사용자 정의 함수도 사용이 가능하다
multi-index -> reset_index()
- 여러개의 열을 기준으로 그룹화를 하면 <class 'pandas.core.indexes.multi.MultiIndex'> type으로 변환된다
- 이런 index를 다시 초기화 하기 위해서 .reset_index()를 사용한다
multi-index형태
reset_index() 적용 후
Sorting
- 그룹화를 한 후에 각 그룹에 들어간 데이터의 순서는 값에 대해 정렬되어있는 것이 아니라 기존 인덱스 순서대로 정렬되어있다
- 값을 기준으로 정렬을 하기 위해서는 sort_values() method를 사용한다
# col_name열의 값들에 대해서 정렬한다
df.sort_values(by = 'col_name')
# ascending=False : 내림차순, ascending=True : 오름차순 (default)
df.sort_values(by = 'col_name', ascending=False)
Auto 데이터 프레임의 'year'열에 대해서 오름차순 정렬
- year이 작은 순으로 정렬되었고 가장 왼쪽의 인덱스 열은 그 순서가 섞여 있음
Auto 데이터 프레임에서 'year'열에 대해 내림차순 정렬 (ascending = False)
- year이 큰 순으로 정렬되었고 가장 왼쪽 인덱스 열이 섞여있음
sort_index() method를 사용하여 다시 원래상태(인덱스 정렬)로 돌리기
# col_name열에 대해서 내림차순 정렬 -> sort_index() -> 인덱스 기준으로 정렬(원상태)
df.sort_values(by = 'col_name', ascending=False).sort_index()
728x90
반응형
'Python > Pandas' 카테고리의 다른 글
[kaggle learn pandas] Renaming and Combining (0) | 2024.05.31 |
---|---|
[kaggle learn pandas] Data Types and Missing Values (0) | 2024.05.30 |
[kaggle learn pandas] Summary Functions and Maps (0) | 2024.05.27 |
[kaggle learn pandas] Indexing, Selecting & Assigning (0) | 2024.05.27 |
[kaggle learn pandas] Creating, Reading and Writing (0) | 2024.05.27 |