반응형
import pandas as pd
import numpy as np
import os
os.chdir(r"..\data")
df = pd.read_csv('data_studentlist_en.csv', header='infer',encoding = 'latin1')
NAME GENDER AGE GRADE ABSENCE BLOODTYPE HEIGHT WEIGHT
0 Jared Diamond M 23 3 Y O 165.3 68.2
1 Sarah O'Donnel F 22 2 N AB 170.1 53.0
2 Brian Martin M 24 4 N B 175.0 80.1
3 David Hassel M 23 3 N AB 182.1 85.7
4 Clara Rodriquez F 20 1 Y A 168.0 49.5
5 Jennifer Lorentz F 21 2 N O 162.0 52.0
6 Susan Clark F 22 1 N O 155.2 45.3
7 Margareth Jones F 23 1 N A 176.9 55.0
8 John Bertsch M 23 3 N B 178.5 64.2
9 Jake Timmerman M 22 2 N B 176.1 61.3
10 Joshua Connor M 24 4 Y O 167.1 62.0
11 John Matsuda M 22 2 N AB 180.0 75.8
12 Eddy Johnson M 21 1 N A 162.2 55.3
13 Rebecah Anderson F 23 3 N O 176.1 53.1
14 Linda Carter F 22 2 N B 158.2 45.2
15 Richard Swayze M 24 4 Y B 168.6 70.2
16 Andrew Daley M 21 1 N A 169.2 62.2
- 위 데이터 프레임 df를 기준으로 설명함.
데이터 프레임 슬라이싱 : 열접근
df.NAME
df['NAME'] # 둘은 같은 결과를 도출한다.
==결과==
0 Jared Diamond
1 Sarah O'Donnel
2 Brian Martin
3 David Hassel
4 Clara Rodriquez
5 Jennifer Lorentz
6 Susan Clark
7 Margareth Jones
8 John Bertsch
9 Jake Timmerman
10 Joshua Connor
11 John Matsuda
12 Eddy Johnson
13 Rebecah Anderson
14 Linda Carter
15 Richard Swayze
16 Andrew Daley
Name: NAME, dtype: object
- df.col이름 혹은 df['col이름']으로 해당 열에 접근할 수 있다.
- 단, col이름에 공백 혹은 '.'이 들어가면 반드시 df['col이름'] 방식을 사용해야 한다.
데이터 프레임 슬라이싱 : loc
df.loc[:,['NAME','GENDER']]
df.loc[:,(header =='NAME') | (header == 'GENDER')] # 둘은 같은 결과를 도출한다.
==결과==
NAME GENDER
0 Jared Diamond M
1 Sarah O'Donnel F
2 Brian Martin M
3 David Hassel M
4 Clara Rodriquez F
5 Jennifer Lorentz F
6 Susan Clark F
7 Margareth Jones F
8 John Bertsch M
9 Jake Timmerman M
10 Joshua Connor M
11 John Matsuda M
12 Eddy Johnson M
13 Rebecah Anderson F
14 Linda Carter F
15 Richard Swayze M
16 Andrew Daley M
- df.loc은 인덱스와 컬럼의 '이름'을 통해 데이터 프레임을 슬라이싱할 수 있도록 한다.
- 물론 행은 현재 숫자로 이루어져 있기 때문에 숫자로 접근해야 한다. 만약 인덱스가 a,b,c,.. 와 같이 문자로 이루어져 있다면 문자로 접근해야 할 것이다.
print(df.loc[2])
==결과==
NAME Brian Martin
GENDER M
AGE 24
GRADE 4
ABSENCE N
BLOODTYPE B
HEIGHT 175
WEIGHT 80.1
Name: 2, dtype: object
- df.loc에 숫자를 하나만 입력할 경우 해당 행을 접근해준다.
데이터 프레임 슬라이싱 : iloc
print(df.iloc[2:4])
==결과==
NAME GENDER AGE GRADE ABSENCE BLOODTYPE HEIGHT WEIGHT
2 Brian Martin M 24 4 N B 175.0 80.1
3 David Hassel M 23 3 N AB 182.1 85.7
- iloc은 인덱스(숫자)를 통해 슬라이싱을 해준다.
- 2~3번 인덱스가 슬라이싱되어 출력되었다.
print(df.iloc[2:4, 0:3])
==결과==
NAME GENDER AGE
2 Brian Martin M 24
3 David Hassel M 23
- 열도 슬라이싱 가능하다. col을 앞에서부터 0번 인덱스라고 처리하여 슬라이싱한다.
조건부 슬라이싱
- numpy 배열과 유사하게 조건부 슬라이싱이 가능하다. 조건에 맞는 행만 출력한다.
print(df[df.GENDER == 'M'])
==결과==
NAME GENDER AGE GRADE ABSENCE BLOODTYPE HEIGHT WEIGHT
0 Jared Diamond M 23 3 Y O 165.3 68.2
2 Brian Martin M 24 4 N B 175.0 80.1
3 David Hassel M 23 3 N AB 182.1 85.7
8 John Bertsch M 23 3 N B 178.5 64.2
9 Jake Timmerman M 22 2 N B 176.1 61.3
10 Joshua Connor M 24 4 Y O 167.1 62.0
11 John Matsuda M 22 2 N AB 180.0 75.8
12 Eddy Johnson M 21 1 N A 162.2 55.3
15 Richard Swayze M 24 4 Y B 168.6 70.2
16 Andrew Daley M 21 1 N A 169.2 62.2
- GENTER 값이 M인 행만 출력되었다.
- & (and), | (or) , ~ (not)를 붙혀 다양한 조건을 줄 수도 있다.
반응형
'🛠 기타 > Data & AI' 카테고리의 다른 글
단층 퍼셉트론- 회귀분석 이론 (0) | 2020.07.13 |
---|---|
[파이썬] Pandas 기초 - DataFrame 결합 (0) | 2020.07.09 |
[파이썬] Pandas 기초 - DataFrame 생성 (컬럼 수정,추가, 삭제) (0) | 2020.07.09 |
[파이썬] Pandas 기초 - Series (0) | 2020.07.09 |
[파이썬] Matplotlib 패키지 (0) | 2020.07.09 |