표 설명
- 첫 행의 열 마다 딕셔너리의 키라고 생각하고 열로 봤을때 첫번째는 키이고 밑에 값이라고 생각한다.
pd.melt() 사용법
pd.melt() 메서드는 열을 행으로 변환하여 데이터를 "길고 얇은" 형태로 만드는 데 사용됩니다
pd.melt() 기본 사용법
import pandas as pd
변수=pd.melt(data, id_vars=[고정할 열],
value_vars=[변환할 열],
var_name='새 열 이름',
value_name='값 열 이름')
해당 열의 키를 새로운 열로 만들고 열의 키 밑에 값은 모아서 값 열 이름에 넣는다.
pd.melt() 매개변수 간단 설명
- data:
- 변환할 원본 데이터프레임입니다. 예를 들어, 학생 점수나 판매 기록 등 분석할 데이터를 담고 있는 표입니다.
- id_vars (고정할 열들):
- 그대로 두고 싶은 열을 지정합니다.
- 이 열은 변하지 않고, 변환된 결과에서 기준 역할을 합니다.
- 예시: 학생 ID나 이름처럼 각 행을 구분하는 고유한 정보.
- value_vars (변환할 열들):
- 행으로 바꿀 컬럼을 지정합니다.
- 이 열들은 하나의 열로 모아지며 각각 행으로 늘어납니다.
- 예시: 과목 이름 (Math, English 등)을 하나로 모으고 싶다면 여기에 추가합니다.
- var_name (새 열 이름):
- 새로 생성될 열의 이름입니다.
- 예를 들어, 각 과목 이름을 담는 열이 필요하다면 여기에 "Subject" 같은 이름을 설정할 수 있습니다.
- value_name (값을 담을 열 이름):
- 새로 만들어진 열에 값을 담을 열 이름입니다.
- 예를 들어, 과목의 점수를 담기 위해 "Score"라는 이름을 지정할 수 있습니다.
- 예시
| ID | Name | Math | English |
|---|
| 1 | Amy | 90 | 80 |
| 2 | Bob | 85 | 75 |
import pandas as pd
df = pd.DataFrame({
'ID': [1, 2],
'Name': ['Amy', 'Bob'],
'Math': [90, 85],
'English': [80, 75]
})
melted_df = pd.melt(df, id_vars=['ID', 'Name'],
value_vars=['Math', 'English'],
var_name='Subject', value_name='Score')
print(melted_df)
result)
ID Name Subject Score
0 1 Amy Math 90
1 2 Bob Math 85
2 1 Amy English 80
3 2 Bob English 75
| ID | Name | Subject | Score |
|---|
| 1 | Amy | Math | 90 |
| 2 | Bob | Math | 85 |
| 1 | Amy | English | 80 |
| 2 | Bob | English | 75 |
pd.pivot_table() 사용법
pd.pivot_table()은 Pandas에서 제공하는 도구로, 데이터를 요약하여 특정 기준으로 그룹화하고 합계를 계산하는 데 사용됩니다.
- pd.pivot_table() 기본 사용법
pd.pivot_table(data, index='행으로 쓸 열',
columns='열로 쓸 열',
values='값으로 사용할 열', aggfunc='함수')
행이나 열로 지정된 값은 중복 값을 제거한다.
- 각 매개변수 설명
- data: 데이터프레임을 넣습니다. (예:
df)
- values: 계산할 값이 있는 열을 지정합니다. (예:
'Population')
- index: 행으로 사용할 열을 지정합니다. (예:
'City')
- columns: 열로 사용할 열을 지정합니다. (예:
'Year')
- aggfunc: 계산할 방법을 지정합니다. 기본은 평균(
mean)이며, 합계(sum), 최소(min), 최대(max) 등으로 변경할 수 있습니다.
- 예시코드
import pandas as pd
data = {
'과목': ['수학', '수학', '영어', '영어', '과학', '과학'],
'반': ['A', 'B', 'A', 'B', 'A', 'B'],
'성적': [85, 90, 88, 92, 78, 83]
}
df = pd.DataFrame(data)
pivot_table = pd.pivot_table(df, values='성적', index='과목', columns='반', aggfunc='mean')
print(pivot_table)
| 반 | A | B |
|---|
| 과목 | | |
| 수학 | 85.0 | 90.0 |
| 영어 | 88.0 | 92.0 |
| 과학 | 78.0 | 78.0 |