Ethan's Values
Pandas study - pandas 튜토리얼(5) 본문
반응형
데이터의 재구조화
1. 피봇 테이블
groupby 함수를 사용한 집계는 전체 통계에서 그룹만 나누어 확인하는 것이라면,
Pivot은 원하는 컬럼별 집계만 확인할 수 있다.
In [11]: no2_subset.pivot(columns="location", values="value")
Out[11]:
location BETR801 FR04014 London Westminster
date.utc
2019-04-09 01:00:00+00:00 22.5 24.4 NaN
2019-04-09 02:00:00+00:00 53.5 27.4 67.0
2019-04-09 03:00:00+00:00 NaN NaN 67.0
두 컬럼별로 집계된 평균값 구하기, pivot()함수는 단일 데이터를 집계하는 경우 사용하고, 여러 값을 집계해야 하는 경우에는 pivot_table()함수를 사용한다.
In [14]: air_quality.pivot_table(
....: values="value", index="location", columns="parameter", aggfunc="mean"
....: )
....:
Out[14]:
parameter no2 pm25
location
BETR801 26.950920 23.169492
FR04014 29.374284 NaN
London Westminster 29.740050 13.443568
Subtotal(소계)를 하기 위해서는 pivot_table 함수의 인자로 margis=True를 해주면 된다.
In [15]: air_quality.pivot_table(
....: values="value",
....: index="location",
....: columns="parameter",
....: aggfunc="mean",
....: margins=True,
....: )
....:
Out[15]:
parameter no2 pm25 All
location
BETR801 26.950920 23.169492 24.982353
FR04014 29.374284 NaN 29.374284
London Westminster 29.740050 13.443568 21.491708
All 29.430316 14.386849 24.222743
2. MELT
melt함수는 ID 변수를 기준으로 원래 데이터셋에 있던 여러 컬럼을 Variable이라는 컬럼에 아래로 길게 쌓아놓고 Variable 컬럼의 ID와 해당하는 데이터를 넣어주는 식으로 재구조화 됨.
멜트 전
In [16]: no2_pivoted = no2.pivot(columns="location", values="value").reset_index()
In [17]: no2_pivoted.head()
Out[17]:
location date.utc BETR801 FR04014 London Westminster
0 2019-04-09 01:00:00+00:00 22.5 24.4 NaN
1 2019-04-09 02:00:00+00:00 53.5 27.4 67.0
2 2019-04-09 03:00:00+00:00 54.5 34.2 67.0
3 2019-04-09 04:00:00+00:00 34.5 48.5 41.0
4 2019-04-09 05:00:00+00:00 46.5 59.5 41.0
멜트 후
In [20]: no_2 = no2_pivoted.melt(
....: id_vars="date.utc",
....: value_vars=["BETR801", "FR04014", "London Westminster"],
....: value_name="NO_2",
....: var_name="id_location",
....: )
....:
In [21]: no_2.head()
Out[21]:
date.utc id_location NO_2
0 2019-04-09 01:00:00+00:00 BETR801 22.5
1 2019-04-09 02:00:00+00:00 BETR801 53.5
2 2019-04-09 03:00:00+00:00 BETR801 54.5
3 2019-04-09 04:00:00+00:00 BETR801 34.5
4 2019-04-09 05:00:00+00:00 BETR801 46.5
- id_vars는 melt될 기준이되는 컬럼
- value_vars는 melt할 컬럼을 정의(해당 값이 아래로 길게 펼쳐짐)
- value_name은 컬럼에 해당되는 값의 열 이름
- var_name은 value_vars의 컬럼 이름
REMEMBER
1. pivot기능은 데이터의 구조를 변환, pivot_table은 집계가능
2. pivot은 데이터 구조를 긴형식에서 넓은 형식으로 <-> melt는 넓은 형식에서 긴형식으로 재구조함
'Python' 카테고리의 다른 글
Pandas study - pandas 튜토리얼(7) (0) | 2023.10.19 |
---|---|
Pandas study - pandas 튜토리얼(6) (2) | 2023.10.19 |
Pandas study - pandas 튜토리얼(4) (0) | 2023.10.19 |
Pandas study - pandas 튜토리얼(3) (2) | 2023.10.19 |
Pandas study - pandas 튜토리얼(2) (0) | 2023.10.19 |
Comments