1 Fri
TIL
[인프런] 단 두 장의 문서로 데이터 분석과 시각화 뽀개기
AI 스쿨 첫 프로젝트를 위해 Pandas를 더 공부해보고 싶어졌다. 또, 추후에도 Pandas를 이용한 시각화를 사용할 것이라고 생각해서 이참에 배워두면 좋겠다 생각했다. 화이팅!
판다스 데이터프레임과 시리즈 이해하기 - Syntax
https://pandas.pydata.org/Pandas_Cheat_Sheet.pdf
import pandas as pddf = pd.DataFrame(
{"a" : [4, 5, 6],
"b" : [7, 8, 9],
"c" : [10, 11, 12]},
index = [1, 2, 3])이 때 한 행을 Series라고 한다. index의 default는 [0, 1, ,,,]
기본적인 데이터 프레임 조작
dfa
b
c
1
4
7
10
2
5
8
11
3
6
9
12
특정 컬럼을 가지고 와보자!
여러 개의 컬럼을 보기!
a
b
1
4
7
2
5
8
3
6
9
n번 인덱스의 행 보기
여러 인덱스의 행 보기
a
b
c
1
4
7
10
2
5
8
11
특정 인덱스의 행과 열 보기 행-열 순으로 작성
a
b
1
4
7
2
5
8
판다스 데이터프레임 생성하고 데이터 가져오기 - Syntax
kernel - Restart & ClearOutput 을 누르면 실행결과가 모두 지워진다! 복습할 수 있음!
a
b
c
1
4
7
10
2
5
8
11
3
6
9
12
두 개의 데이터프레임
는 동일하다.
Index 지정 - 튜플 자료형 사용 여러개의 인덱스를 가질 수 있다.
a
b
c
n
v
d
1
4
7
10
2
5
8
11
e
2
6
9
12
판다스 데이터프레임 비교연산자로 색인하기 - Subset Observations(Rows)
특정 열에서 색인(필터링)
a
b
c
n
v
a
b
c
n
v
d
1
4
7
10
2
5
8
11
e
2
6
9
12
다음 2개의 코드는 동일하다.
a
b
c
n
v
d
2
5
8
11
e
2
6
9
12
a
b
c
n
v
d
2
5
8
11
e
2
6
9
12
df.OO 와 df['OO']는 같다 이 때, 대소문자에 유의 차이점은 dot을 사용하면 특수문자나 한글이 포함되있는 이름에서 오류가 날 수 있다.
a
b
c
n
v
d
1
4
7
10
2
5
8
11
e
2
6
9
12
3
6
9
12
df.drop_duplicates() : 중복을 없애주는 메서드
a
b
c
n
v
d
1
4
7
10
2
5
8
11
e
2
6
9
12
그러나 이 때 다시 df를 출력해도 동일하다.
a
b
c
n
v
d
1
4
7
10
2
5
8
11
e
2
6
9
12
3
6
9
12
이 때는 다음과 같이 옵션 inplace를 True로 변경해주면 된다. 그러나 pandas에서는 inplace 사용을 권장하지는 않는다.
a
b
c
n
v
d
1
4
7
10
2
5
8
11
e
2
6
9
12
따라서 다음과 같이 사용하는 것을 추천한다.
a
b
c
n
v
d
1
4
7
10
2
5
8
11
e
2
6
9
12
다음과 같이 입력하면 해당 함수에 대한 설명을 볼 수 있다.
중복된 행을 제거할 때 마지막 부분이 유지되도록 할 수 있다
a
b
c
n
v
d
1
4
7
10
2
5
8
11
e
2
6
9
12
3
6
9
12
정리 : drop_duplicates는 중복된 행을 제거할 때 사용한다.
Logic in Python - Subset Observations(Rows)
a
b
c
n
v
d
1
4
7
10
2
5
8
11
e
2
6
9
12
3
6
9
12
a
b
c
n
v
d
2
5
8
11
e
2
6
9
12
3
6
9
12
isin() : 행에 대한 인자의 존재 유무
column => 특정 컬럼의 이름으로 정의해줘야 함 또 isin의 인자는 리스트 형태여야 한다.
isnull() : null값의 존재 유무 확인
a
b
c
n
v
d
1
4.0
7.0
10.0
2
5.0
8.0
11.0
e
2
6.0
NaN
12.0
3
6.0
9.0
NaN
4
NaN
9.0
12.0
a
b
c
n
v
d
1
False
False
False
2
False
False
False
e
2
False
True
False
3
False
False
True
4
True
False
False
notnull : null이 아닌 값의 존재 유무
a
b
c
n
v
d
1
True
True
True
2
True
True
True
e
2
True
False
True
3
True
True
False
4
False
True
True
a
b
c
n
v
d
1
True
True
True
2
True
True
True
e
2
True
False
True
3
True
True
False
4
False
True
True
위에 있는 두 코드는 동일한 결과를 출력한다
and, or, not, xor, any, all
각각 &, |, ~, ^, df.any(), df.all()에 해당한다
a
b
c
n
v
d
1
4.0
7.0
10.0
2
5.0
8.0
11.0
e
2
6.0
NaN
12.0
3
6.0
9.0
NaN
4
NaN
9.0
12.0
a
b
c
n
v
a
b
c
n
v
d
1
4.0
7.0
10.0
head, tail, sample로 데이터 미리보기 - Subset Observations(Rows)
df.head() : 위에서 n개 출력
default는 5개이다
a
b
c
n
v
d
1
4.0
7.0
10.0
2
5.0
8.0
11.0
e
2
6.0
NaN
12.0
df.tail() : 아래에서 n개 출력
a
b
c
n
v
d
2
5.0
8.0
11.0
e
2
6.0
NaN
12.0
3
6.0
9.0
NaN
4
NaN
9.0
12.0
df.sample(frac=0.5)
df.sample(frac = m)
이 때 0 <= m <= 1 이다. 해당 비율만큼 랜덤하게 가져온다. 따라서 인덱스가 뒤섞임
a
b
c
n
v
e
3
6.0
9.0
NaN
d
2
5.0
8.0
11.0
a
b
c
n
v
e
4
NaN
9.0
12.0
d
1
4.0
7.0
10.0
a
b
c
n
v
e
2
6.0
NaN
12.0
d
2
5.0
8.0
11.0
e
4
NaN
9.0
12.0
3
6.0
9.0
NaN
d
1
4.0
7.0
10.0
df.sample(n=10)
df.sample(n = m)
이 때 m은 자연수이다. (단 전체 개수보다 클 수 없다.)
a
b
c
n
v
e
4
NaN
9.0
12.0
d
2
5.0
8.0
11.0
e
3
6.0
9.0
NaN
2
6.0
NaN
12.0
d
1
4.0
7.0
10.0
a
b
c
n
v
d
2
5.0
8.0
11.0
e
3
6.0
9.0
NaN
4
NaN
9.0
12.0
비율로 구할 때에는 frac, 개수로 구할 때에는 n
iloc, nlargest, nsmallest로 데이터 색인하기 - Subset Observations(Rows)
df.iloc[:]
해당 인덱스만큼의 범위를 행을 기준으로 색인한다.
a
b
c
n
v
d
1
4.0
7.0
10.0
2
5.0
8.0
11.0
e
2
6.0
NaN
12.0
3
6.0
9.0
NaN
4
NaN
9.0
12.0
a
b
c
n
v
d
2
5.0
8.0
11.0
e
2
6.0
NaN
12.0
3
6.0
9.0
NaN
4
NaN
9.0
12.0
a
b
c
n
v
e
3
6.0
9.0
NaN
df.nlargest(n, 'value')
크기 순으로 value 열에 대해서 n개 만큼의 행을 출력한다
a
b
c
0
1
a
1.0
1
10
b
2.0
2
8
c
NaN
3
11
d
3.0
4
-1
e
4.0
a
b
c
3
11
d
3.0
1
10
b
2.0
2
8
c
NaN
a
b
c
4
-1
e
4.0
3
11
d
3.0
1
10
b
2.0
0
1
a
1.0
df.nsmallest(n, 'value')
크기 순으로 value 열에 대해서 n개 만큼의 행을 출력한다
a
b
c
4
-1
e
4.0
a
b
c
4
-1
e
4.0
0
1
a
1.0
2
8
c
NaN
1
10
b
2.0
Last updated
Was this helpful?