728x90
반응형
자, 드디어 마지막 기초 자료형인 DataFrame이다. DataFrame은 pandas의 대표적인 Type이며, R을 공부해 본 사람이라면, 상당히 친숙하게 느껴지는 단어일 것이다.
pandas의 DataFrame은 R의 Dataframe을 Python에서도 사용해보기 위해 만들어졌으며, R에서 할 수 있는 대부분의 기능을 판다스에서도 구현할 수 있다.
이번 포스트에서는 데이터 분석가들의 필수 Type인 DataFrame이 어떻게 생겼는지와 아주 대략적인 대표 기능만 살펴보고 바로 넘어가도록 하자.
먼저 DataFrame을 만들어보자.
- DataFrame을 만드는 방법은 크게 2가지가 있다.
- 길이가 동일한 list들을 컬럼 하나하나에 배정하는 방법
- M*N 행렬 형태의 Data(Array, Tupple)를 DataFrame에 넣는 방법
# pandas 모듈을 가지고 오자
>>> import pandas as pd
>>> import numpy as np
# 1. 길이가 동일한 list들을 DataFrame에 넣어보자
# DataFrame에 들어갈 길이가 같은 list들을 만들자
>>> name = ["민철", "기훈", "재성", "현택", "윤기"]
>>> math = [40, 60, 80, 75, 65]
>>> english = [75, 80, 65, 80, 70]
>>> science = [85, 70, 75, 80, 60]
# list들을 이용해서 DataFrame을 만드는 경우는 다음과 같다
>>> DF = pd.DataFrame({"name":name, "math":math, "english":english, "science":science})
>>> DF
name math english science
0 민철 40 75 85
1 기훈 60 80 70
2 재성 80 65 75
3 현택 75 80 80
4 윤기 65 70 60
# 2. array를 이용해서 DataFrame을 만들어보자.
# 10, 100 사이의 임의의 값으로 만들어진 행렬을 생성하자
>>> row_number = 50
>>> score_mat = np.random.randint(10, 100, size=(row_number, 4))
# ID를 만들어보자
>>> ID_list = []
>>> for i in range(row_number):
ID = "A" + str(i)
ID_list.append(ID)
# shape을 맞춰서 ID_array와 score_mat을 병합시켜보자
>>> ID_array = np.array(ID_list)
>>> ID_array = ID_array.reshape((50, 1))
>>> data_array = np.hstack((ID_array, score_mat))
# array를 DataFrame을 만들어보자
>>> DF2 = pd.DataFrame(data_array, columns=["ID", "math", "English", "science", "Korean"])
# 생성한 DataFrame의 상위 10개만 출력해보자
>>> DF2.head(10)
ID math English science Korean
0 A0 35 38 62 51
1 A1 52 29 40 93
2 A2 28 16 99 71
3 A3 93 42 61 48
4 A4 23 60 39 48
5 A5 93 96 16 55
6 A6 13 69 88 90
7 A7 31 18 80 30
8 A8 59 12 66 93
9 A9 54 70 57 38
- DataFrame을 처음 보면 마치 엑셀에서 우리가 일반적으로 만들던 표랑 굉장히 유사하다는 것을 알 수 있다.
- DataFrame에는 각 열(Column)별로 동일한 데이터 타입을 넣을 수 있다.
- pd.DataFrame() 함수를 통해 DataFrame을 만들 수 있다.
- np.random.randint(시작 값, 끝 값, 형태) 함수는 시작 값, 끝 값 사이에서 랜덤한 값이 담긴 array를 생성한다.
- np.hstack((array1, array2)) 함수는 두 array를 열을 기준으로 병합한다.
- DataFrame.head(숫자) 함수는 내가 숫자만큼 DataFrame을 출력한다.
DataFrame의 컬럼별 dtype을 확인해보자
# DataFrame의 data type을 확인해보자
>>> DF2.dtypes
ID object
math object
English object
science object
Korean object
dtype: object
# math, English, science, Korean 컬럼을 정수 type으로 바꿔보자
>>> DF2["math"] = DF2["math"].astype("int64")
>>> DF2["English"] = DF2["English"].astype("int64")
>>> DF2["science"] = DF2["science"].astype("int64")
>>> DF2["Korean"] = DF2["Korean"].astype("int64")
>>> DF2.dtypes
ID object
math int64
English int64
science int64
Korean int64
dtype: object
- DataFrame.dtypes 함수를 통해 DataFrame의 각 컬럼들의 Type을 확인할 수 있다.
- DataFrame["컬럼"].astype("바꿀 dtype") 함수를 통해 DataFrame의 해당 컬럼 dtype을 바꿀 수 있다.
DataFrame을 Slicing 해보자.
# 10번 row부터 20번 row까지 출력해보자
>>> DF2[10:20]
ID math English science Korean
10 A10 78 24 99 79
11 A11 41 87 83 10
12 A12 61 71 31 78
13 A13 74 80 32 99
14 A14 20 19 95 38
15 A15 24 67 22 24
16 A16 39 53 41 82
17 A17 34 57 52 67
18 A18 34 60 27 73
19 A19 27 35 91 81
# 수학 80점 이상인 Row만 출력해보자
>>> DF2[DF2["math"] >= 80]
ID math English science Korean
2 A2 90 70 70 72
4 A4 90 27 64 42
8 A8 99 21 71 92
9 A9 89 61 11 30
28 A28 81 29 27 86
32 A32 84 19 89 31
44 A44 97 73 36 78
45 A45 80 95 54 12
48 A48 86 19 99 83
- pandas의 dataFrame은 Numpy의 array와 동일한 방법으로 Slicing 할 수 있으며, 내가 원하는 조건에 대한 Row도 쉽게 가져올 수 있다.
이번 포스트에서는 DataFrame에 대해 아주 간략하게 훑어만 봤는데, 설명을 보다 보면 설명이 지나치게 부족하지 않는가? 하는 생각이 들 것이다.
pandas의 DataFrame 역시 Numpy의 array와 마찬가지로 그 영역이 매우 크기 때문에 따로 카테고리를 만들어서 세세하게 설명하고자 한다.
이번 포스트에서는 맛보기로 DataFrame이 어떻게 생겼는지만 인식하는 수준에서 끝내고, 추후 Python-pandas 카테고리의 포스트에서 pandas의 각 기능들을 세세하게 따져보도록 하겠다.
728x90
반응형
'Python > Basic' 카테고리의 다른 글
Python-기초: 2.1. 문자열(2) - 문자열 포멧팅 (0) | 2021.01.20 |
---|---|
Python-기초: 2.0. 문자열(1) - 문자열 생성과 이스케이프 문자 (0) | 2021.01.20 |
Python-기초: 1.4. 자료형(5) - dictionary (0) | 2021.01.15 |
Python-기초: 1.3. 자료형(4) - tensor (0) | 2021.01.15 |
Python-기초: 1.2. 자료형(3) - array (0) | 2021.01.14 |