데이터 준비하기
import pandas as pd
df = pd.read_csv('data/scores.csv')
df.head(3)
"""
name kor eng math
0 Aiden 100.0 90.0 95.0
1 Charles 90.0 80.0 75.0
2 Danial 95.0 100.0 100.0
컬럼명으로 데이터 추출하기
시리즈 형태로 추출하기
- 데이터프레임명['컬럼명'] / 데이터프레임명["컬럼명"]
: 컬럼명은 1개만 지정할 수 있으며 대괄호 1개를 사용한다. - 데이터프레임명.컬럼명
: 컬럼명에 공백이나 특수문자가 섞여있을 때는 사용할 수 없다.
# 'name'컬럼 추출하기
s_name = df['name']
s_name.head(3)
"""
0 Aiden
1 Charles
2 Danial
Name: name, dtype: object
"""
# type
type(s_name)
"""
pandas.core.series.Series
"""
# index
s_name.index
"""
RangeIndex(start=0, stop=30, step=1)
"""
# values
s_name.values
"""
array(['Aiden', 'Charles', 'Danial', 'Evan', 'Henry', 'Ian', 'James',
'Julian', 'Justin', 'Kevin', 'Leo', 'Oliver', 'Peter', 'Amy',
'Chloe', 'Danna', 'Ellen', 'Emma', 'Jennifer', 'Kate', 'Linda',
'Olivia', 'Rose', 'Sofia', 'Tiffany', 'Vanessa', 'Viviana',
'Vikkie', 'Winnie', 'Zuly'], dtype=object)
"""
# shape
s_name.shape
"""
(30,)
"""
# 'eng'컬럼 추출하기
df.eng
"""
0 90.0
1 80.0
2 100.0
3 100.0
4 35.0
5 100.0
6 75.0
7 90.0
8 60.0
9 100.0
10 95.0
11 75.0
12 95.0
13 75.0
14 100.0
15 100.0
16 60.0
17 65.0
18 55.0
19 NaN
20 90.0
21 70.0
22 65.0
23 100.0
24 NaN
25 70.0
26 80.0
27 50.0
28 100.0
29 90.0
Name: eng, dtype: float64
"""
# 'matn'컬럼 추출하기
df["math"].head(3)
"""
0 95.0
1 75.0
2 100.0
Name: math, dtype: float64
데이터프레임 형태로 추출하기
- 데이터프레임명[컬럼명리스트]
- 대괄호안에 컬럼리스트가 들어간다.(대괄호 2개로 표현되어야한다.)
# 'name','kor' 컬럼 데이터 추출하기
df_name_kor = df[['name','kor']]
df_name_kor.head(3)
"""
name kor
0 Aiden 100.0
1 Charles 90.0
2 Danial 95.0
"""
# 'math' 컬럼을 데이터프레임 형태로 추출하기
df_math = df[['math']]
df_math
"""
math
0 95.0
1 75.0
2 100.0
3 100.0
4 60.0
5 90.0
6 65.0
7 55.0
8 100.0
9 90.0
10 70.0
11 65.0
12 100.0
13 90.0
14 95.0
15 100.0
16 NaN
17 70.0
18 80.0
19 50.0
20 100.0
21 90.0
22 70.0
23 100.0
24 90.0
25 95.0
26 100.0
27 100.0
28 70.0
29 95.0
"""
# type
type(df_math)
"""
pandas.core.frame.DataFrame
조건에 따라 데이터 추출하기
조건의 결과에 따른 불린인덱스 추출
- 조건식의 결과에 따른 결과가 불린인덱스로 만들어진다.
# kor 점수가 100점인 데이터 불린인덱스
df['kor']==100
"""
0 True
1 False
2 False
3 True
4 False
5 False
6 False
7 False
8 False
9 True
10 False
11 False
12 True
13 False
14 False
15 True
16 False
17 False
18 False
19 False
20 True
21 False
22 False
23 True
24 False
25 False
26 True
27 False
28 False
29 False
Name: kor, dtype: bool
불린인덱스로 데이터 추출
- 불린인덱스를 데이터프레임명[ ]으로 감싸주면 True인 데이터만 추출된다.
# kor 점수가 100점인 데이터 추출
df[df['kor']==100]
"""
name kor eng math
0 Aiden 100.0 90.0 95.0
3 Evan 100.0 100.0 100.0
9 Kevin 100.0 100.0 90.0
12 Peter 100.0 95.0 100.0
15 Danna 100.0 100.0 100.0
20 Linda 100.0 90.0 100.0
23 Sofia 100.0 100.0 100.0
26 Viviana 100.0 80.0 100.0
여러 조건
- 논리연산자는 '&' , '|' ,'~', '^' 기호를 사용한다.
- 논리연산자를 사용할 때에는 각 조건을 ()로 감싼다.
# 한 과목이라도 100을 받은 학생 추출
df[(df.kor==100)|(df.eng==100)|(df.math==100)]
"""
name kor eng math
0 Aiden 100.0 90.0 95.0
2 Danial 95.0 100.0 100.0
3 Evan 100.0 100.0 100.0
5 Ian 90.0 100.0 90.0
8 Justin 50.0 60.0 100.0
9 Kevin 100.0 100.0 90.0
12 Peter 100.0 95.0 100.0
14 Chloe 95.0 100.0 95.0
15 Danna 100.0 100.0 100.0
20 Linda 100.0 90.0 100.0
23 Sofia 100.0 100.0 100.0
26 Viviana 100.0 80.0 100.0
27 Vikkie NaN 50.0 100.0
28 Winnie 70.0 100.0 70.0
"""
# kor의 값이 60~90인 학생의 name, kor 추출
df[(df['kor']>=60)&(df['kor']<=90)][['name','kor']]
"""
name kor
1 Charles 90.0
5 Ian 90.0
6 James 70.0
7 Julian 80.0
10 Leo 90.0
11 Oliver 70.0
13 Amy 90.0
17 Emma 70.0
18 Jennifer 80.0
21 Olivia 90.0
22 Rose 70.0
24 Tiffany 90.0
28 Winnie 70.0
29 Zuly 80.0
특정 값을 가진 데이터만 추출
- 컬럼.isin(값리스트)
# 이름이 Amy인 데이터 추출
df[df['name'].isin(['Amy'])]
"""
name kor eng math
13 Amy 90.0 75.0 90.0
"""
# 이름이 Amy, Rose인 데이터 추출
df[df['name'].isin(['Amy','Rose'])]
"""
name kor eng math
13 Amy 90.0 75.0 90.0
22 Rose 70.0 65.0 70.0
"""
# kor이 50,100 데이터 추출
df[df['kor'].isin([50,100])]
"""
name kor eng math
0 Aiden 100.0 90.0 95.0
3 Evan 100.0 100.0 100.0
8 Justin 50.0 60.0 100.0
9 Kevin 100.0 100.0 90.0
12 Peter 100.0 95.0 100.0
15 Danna 100.0 100.0 100.0
19 Kate 50.0 NaN 50.0
20 Linda 100.0 90.0 100.0
23 Sofia 100.0 100.0 100.0
26 Viviana 100.0 80.0 100.0
null 여부에 따른 데이터 추출
- 컬럼.isnull() --> 해당 컬럼의 값이 null인 데이터 추출
- 컬럼.notnull() --> 해당 컬럼의 값이 null이 아닌 데이터 추출
# kor이 null인 데이터 추출
df[df.kor.isnull()]
"""
name kor eng math
0 Aiden 100.0 90.0 95.0
1 Charles 90.0 80.0 75.0
2 Danial 95.0 100.0 100.0
3 Evan 100.0 100.0 100.0
5 Ian 90.0 100.0 90.0
6 James 70.0 75.0 65.0
7 Julian 80.0 90.0 55.0
8 Justin 50.0 60.0 100.0
9 Kevin 100.0 100.0 90.0
10 Leo 90.0 95.0 70.0
11 Oliver 70.0 75.0 65.0
12 Peter 100.0 95.0 100.0
13 Amy 90.0 75.0 90.0
14 Chloe 95.0 100.0 95.0
15 Danna 100.0 100.0 100.0
17 Emma 70.0 65.0 70.0
18 Jennifer 80.0 55.0 80.0
19 Kate 50.0 NaN 50.0
20 Linda 100.0 90.0 100.0
21 Olivia 90.0 70.0 90.0
22 Rose 70.0 65.0 70.0
23 Sofia 100.0 100.0 100.0
24 Tiffany 90.0 NaN 90.0
25 Vanessa 95.0 70.0 95.0
26 Viviana 100.0 80.0 100.0
28 Winnie 70.0 100.0 70.0
29 Zuly 80.0 90.0 95.0
'파이썬 > 파이썬 pandas' 카테고리의 다른 글
[pandas] 열 변경하기 columns, rename (0) | 2023.05.11 |
---|---|
[pandas] 행번호, 열번호로 데이터 추출하기 iloc[], iloc[[]], iloc[:], iloc[-1] (0) | 2023.05.11 |
[pandas] 인덱스로 데이터 추출하기 loc[], loc[, ], loc[, []] (0) | 2023.05.11 |
[pandas] 데이터 확인하기 (0) | 2023.05.11 |
[pandas] 시리즈 다루기 (0) | 2023.05.11 |