Pandas tutorial 1 - 데이터 만들기부터 조회까지¶
tidy data란¶
데이터 분석을 위해선 정돈된 형태의 데이터를 구축해 놓는 것이 필수적이죠. 타이디(tidy, 깔끔한) 데이터는 작업하기 매우 용이한, 정형화된 형태의 데이터로, 다음을 만족해야 합니다.
- 각 관측값마다 해당되는 행이 있어야하고,
- 각 변수마다 해당되는 열이 있어야하고,
- 값마다 해당하는 하나의 셀이 있어야 합니다.
일반적으로 엑셀에 데이터를 입력하는 방식과 동일하다고 생각하시면 됩니다. 예를 들어, 어떤 학급에서 학생들이 시험을 치루었고, 그 성적을 입력한다고 합시다. 각 열은 해당 학급에 속하는 학생의 번호, 이름, 국어점수, 수학점수, 영어점수를 의미하고, 각 행은 한명의 학생에 대한 관측값 즉 해당 학생의 번호, 이름, 국어점수, 수학점수, 영어점수를 포함할 것입니다. Pandas에서는 이러한 타이디 데이터를 데이터프레임 타입으로 다루며, 이를 가공하는 각종 함수를 제공합니다.
In [1]:
# 라이브러리 불러오기
import pandas as pd
데이터 프레임 만들기¶
In [2]:
grades = pd.DataFrame(
{'Math' : [80, 89, 93, 66, 84, 85, 74, 64],
'Science' : [94, 76, 88, 78, 88, 92, 60, 85],
'English' : [83, 76, 93, 96, 77, 85, 92, 60],
'History' : [96, 66, 76, 85, 78, 88, 69, 99]})
grades
Out[2]:
각 열마다 관측값들을 정의함으로써 시험을 치룬 과목과 각 과목마다의 점수를 담은 데이터 프레임을 생성합니다. 열의 이름과 열에 속하는 관측값은 딕셔너리 구조의 key-value와 닮아있습니다.
In [4]:
grades_new = pd.DataFrame(
[[80, 94, 83, 96], [89, 76, 76, 66], [93, 88, 93, 76]],
columns=['Math', 'Science', 'English','History'])
grades_new
Out[4]:
각 행이 갖는 관측값을 먼저 정의한 후, 열의 이름을 명시하여 데이터를 만들 수도 있습니다.
head¶
In [5]:
grades.head() # 처음 다섯 개의 행을 보여줍니다.
Out[5]:
In [6]:
grades.head(n = 3) # 매개변수 n을 지정하여 원하는 만큼 볼 수도 있습니다.
Out[6]:
tail¶
In [7]:
grades.tail() # 마지막 다섯 개의 행을 보여줍니다.
Out[7]:
In [8]:
grades.tail(n = 3)
Out[8]:
columns : 칼럼명 조회¶
In [9]:
grades.columns
Out[9]:
shape : 데이터 프레임의 차원 조회¶
데이터 프레임의 행과 열의 개수를 튜플 형태로 반환합니다.
In [20]:
grades.shape
Out[20]:
info¶
데이터 프레임이 갖는 열의 정보를 조회합니다. 여기서는 모두 정수를 입력하여 int인 것을 확인할 수 있습니다.
In [10]:
grades.info()
subsetting columns¶
열이 갖는 관측값을 시리즈(일종의 리스트) 타입으로 조회합니다.
In [13]:
grades['Math']
Out[13]:
In [14]:
type(grades['Math'])
Out[14]:
열이 갖는 관측값을 데이터프레임 타입으로 조회합니다.
In [16]:
grades[['Math']]
Out[16]:
In [18]:
type(grades[['Math']])
Out[18]:
In [26]:
grades[['Math', 'English']]
Out[26]:
index subsetting :인덱스를 사용하는 경우¶
In [20]:
grades.iloc[0] # 첫번째 행을 시리즈 타입으로 조회
Out[20]:
In [21]:
grades.iloc[[0]] # 첫번째 행을 데이터프레임 타입으로 조회
Out[21]:
In [22]:
grades.iloc[:, 1] # 두번째 열의 모든 행
Out[22]:
In [23]:
grades.iloc[3, 1] # 두번째 열의 네번째 행에 해당하는 값
Out[23]:
In [24]:
grades.iloc[[1,3], :] # 모든 열의 두번째, 네번째 행
Out[24]:
In [25]:
grades.iloc[:, 1:3] # 두번째, 세번째 열의 모든 행
Out[25]:
In [19]:
grades.iloc[4:, :3] # 첫번째 열부터 세번째 열까지, 다섯번째 행부터 끝까지
Out[19]:
location subsetting : 칼럼명을 사용하는 경우¶
In [26]:
grades.loc[:, 'Math'] # Math 열의 모든 행
Out[26]:
In [27]:
grades.loc[2:3, ['Math', 'English']] # Math and English 열의 3, 4번째 행
Out[27]:
In [28]:
grades.loc[4:, 'Math': 'English'] # Math열 부터 English열까지 5행 이후의 모든 행
Out[28]:
In [29]:
grades.loc[:5, 'Science': ] # Science열 이후 모든 열에 대해 6행 이전의 모든 행
Out[29]:
boolean indexing : 논리형 인덱싱, 서브세팅¶
In [30]:
grades[grades['Math'] > 80] # Math가 80을 넘는 행을 조회
Out[30]:
In [31]:
grades[grades['Math'] > 80]['Science'] # Math가 80을 넘는 행에서 Science의 값만 조회
Out[31]:
In [32]:
grades[grades['Math'] > 80].iloc[:, 3] # Math가 80을 넘는 행을 담은 데이터 프레임의 4번째 열(History)을 조회
Out[32]:
In [33]:
grades[(grades['Math'] > 80) & (grades['Science'] < 80)] # Math가 80 초과이고 Science가 80 미만인 행 조회
Out[33]:
In [34]:
grades[(grades['Math'] > 80) | (grades['Science'] < 80)]['History'] # Math가 80 초과이거나 Science가 80 미만인 행의 History 값 조회
Out[34]:
https://towardsdatascience.com/pandas-cheat-sheet-4c4eb6802a4b
https://pandas.pydata.org/Pandas_Cheat_Sheet.pdf
'繩鋸木斷水滴石穿 > Python' 카테고리의 다른 글
Pandas 기초 - 요약하기 (0) | 2020.04.15 |
---|---|
Pandas 기초 - 데이터 프레임 개조하기(칼럼명 변경, 정렬, 결합) (0) | 2020.04.14 |
Numpy 기초 튜토리얼 (0) | 2020.04.03 |
[자료구조] 스택, 큐, 덱 (0) | 2020.02.23 |
[자료구조] 해시, Dictionary (0) | 2020.02.21 |