- 과거내용
- DataFrame - 멀티인덱스
1. 하위분류변환
#원본데이터
col1 col2
row1 row2 row3
A X a 0 5
b 1 6
Y b 2 7
B Y c 3 8
Z d 4 9
#하위분류변환
print(df.xs(key=('B','Y')))
col1 col2
row3
c 3 8
xs를 통해서 하위분류변환을 할 수 있다.
위는 B와 Y를 차례대로 만족하는 하위값만 출력되게 해준다.
drop_level을 False로 할 경우 key에 포함된 레벨도 출력한다.
2. 피벗화
#원본데이터
col1 col2
row1 row2 row3
A X a 0 5
b 1 6
Y b 2 7
B Y c 3 8
Z d 4 9
#피벗화
print(df.stack())
A X a col1 0
col2 5
b col1 1
col2 6
Y b col1 2
col2 7
B Y c col1 3
col2 8
Z d col1 4
col2 9
dtype: int64
stack을 통해서 피벗화를 할 수 있다.
옵션으로 level을 선택할 수 있는데 해당하는 열의 인덱스로 피벗화 된다.
기본값은 -1인 최하위 레벨이다.
3. 언피벗화
#원본 데이터
row1 row2 row3
A X a col1 0
col2 5
b col1 1
col2 6
Y b col1 2
col2 7
B Y c col1 3
col2 8
Z d col1 4
col2 9
dtype: int64
#언피벗화
print(df.unstack())
col1 col2
row1 row2 row3
A X a 0 5
b 1 6
Y b 2 7
B Y c 3 8
Z d 4 9
피벗화한 것을 다시 푸는 과정이다. unstack을 사용한다.
마찬가지로 level를 옵션으로 지정해서 언피벗화할 수 있다.
4. 인덱스 순서변경
#원본데이터
col1 col2
row1 row2 row3
A X a 0 5
b 1 6
Y b 2 7
B Y c 3 8
Z d 4 9
#인덱스 순서변경
print(df.swaplevel(0))
row3 row2 row1
a X A 0 5
b X A 1 6
Y A 2 7
c Y B 3 8
d Z B 4 9
swaplevel을 통해 인덱스 순서를 변경할 수 있다.
옵션으로 0을 입력하면 level0인 값이 선택되어 최하위 인덱스 레벨과 교환된다.
i와 j를 사용하며 원하는 순서대로 변경할 수도 있다.
5. 인덱스제거
#원본데이터
col1 col2
row1 row2 row3
A X a 0 5
b 1 6
Y b 2 7
B Y c 3 8
Z d 4 9
#인덱스제거
print(df.droplevel(axis=0, level=1))
col1 col2
row1 row3
A a 0 5
b 1 6
b 2 7
B c 3 8
d 4 9
droplevel을 통해서 인덱스를 제거할 수 있다.
우선 행과 열을 axis로 선택하고, 어느 level을 제거할 지 고른다.
level은 기본적으로 0이 최상위 인덱스를 의미한다.
- DataFrame - 반복
1. 열 인덱스 반복
#원본 데이터
col1 col2
0 1 3
1 2 4
#열 인덱스 반복
df=df.__iter__()
print(list(df))
['col1', 'col2']
__iter__를 통해 열 인덱스의 리스트를 추출한다.
이후 list를 통해 열을 확인할 수 있고, next를 통해 하나의 값을 얻을 수 있다.
2. 열과 내용 반복
#원본 데이터
col1 col2
0 1 3
1 2 4
#열과 내용 반복
df=df.items()
for i in df:
for j in i:
print(j)
col1
0 1
1 2
Name: col1, dtype: int64
col2
0 3
1 4
Name: col2, dtype: int64
items()를 통해 값들을 추출하고 이후 for문을 통해
값들을 하나씩 꺼내어 출력할 수 있다.
3. 행과 내용 반복
#원본 데이터
col1 col2
0 1 3
1 2 4
#행과 내용 반복
df=df.iterrows()
for i in df:
for j in i:
print(j)
col1 1
col2 3
Name: 0, dtype: int64
1
col1 2
col2 4
Name: 1, dtype: int64
iterrows를 사용해서 행과 내용을 반복할 수 있다.
items와 같이 for문을 이용해서 값들을 출력할 수 있다.
5. 튜플형태 반복
#원본 데이터
col1 col2
0 1 3
1 2 4
#튜플형태 반복
df=df.itertuples()
print(list(df))
[Pandas(Index=0, col1=1, col2=3), Pandas(Index=1, col1=2, col2=4)]
itertuples를 사용해서 튜플정보를 얻고
리스트로 출력할 수 있다.
'프로그래밍 > 파이썬' 카테고리의 다른 글
EDA - 2단계 : 실제 데이터 다루기 (1) (3) | 2023.07.25 |
---|---|
EDA - 1단계 : 데이터 다루기 - 변환 (1) | 2023.07.23 |
EDA - 1단계 : 데이터 다루기 - 시간 (1) | 2023.07.20 |
EDA - 1단계 : 데이터 다루기 - 통계(2) (2) | 2023.07.19 |
EDA - 1단계 : 데이터 다루기 - 통계 (2) | 2023.07.18 |