1 Fri

TIL

[인프런] 단 두 장의 문서로 데이터 분석과 시각화 뽀개기

AI 스쿨 첫 프로젝트를 위해 Pandas를 더 공부해보고 싶어졌다. 또, 추후에도 Pandas를 이용한 시각화를 사용할 것이라고 생각해서 이참에 배워두면 좋겠다 생각했다. 화이팅!

판다스 데이터프레임과 시리즈 이해하기 - Syntax

https://pandas.pydata.org/Pandas_Cheat_Sheet.pdf

import pandas as pd
df = pd.DataFrame(
        {"a" : [4, 5, 6],
        "b" : [7, 8, 9],
        "c" : [10, 11, 12]},
            index = [1, 2, 3])

이 때 한 행을 Series라고 한다. index의 default는 [0, 1, ,,,]

기본적인 데이터 프레임 조작

df

a

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?