본문 바로가기

Machine Learning_모델설계_Python

Pandas_2 데이터 추출

안녕하세요 배도리입니다. 판다스의 데이터 추출은 주어진 데이터셋에서 필요한 정보를 선택하거나 원하는 형태로 변환하는 작업입니다. 이를 통해 데이터셋의 특정 부분에 대한 분석이나 시각화를 수행할 수 있습니다.

판다스에서 데이터 추출은 주로 데이터프레임(DataFrame)이라는 2차원 테이블 형태의 데이터 구조를 사용합니다. 데이터프레임은 열(Column)과 행(Row)으로 구성되며, 각 열은 시리즈(Series)라고 불리는 1차원 배열 형태로 표현됩니다.

데이터 추출에는 다양한 방법이 있습니다. 가장 기본적인 방법은 열(Column)을 선택하거나 특정 조건을 만족하는 행(Row)을 선택하는 것입니다. 열을 선택하기 위해서는 열의 이름을 사용하거나, 행을 선택하기 위해서는 조건문을 사용합니다.

또한, 인덱스를 활용하여 특정 행을 추출하거나 슬라이싱을 사용하여 원하는 범위의 행을 추출하는 것도 가능합니다. 데이터 추출 작업을 통해 필요한 데이터를 선택하여 다른 작업(예: 분석, 시각화 등)을 수행할 수 있습니다. 한번 살펴보겠습니다.

 

시작하기에 앞서 현 코드에서 수행되는 자료는 깃허브에서도 다운받을 수 있습니다. 다운받으시고 한번 연습해보시면 좋을것 같아요. 코드가 있는 폴더에 넣으시면됩니다.

machine_learning_from_scratch_with_python/excel-comp-data.xlsx at master · TeamLab/machine_learning_from_scratch_with_python · GitHub

 

 

1. 데이터 로딩

▪ excel-comp-data.xlsx 데이터로 실습 진행, 해당 Excel 파일과 코드 파일은 동일한 폴더(디렉토리)에 있어야 합니다.

Excel 파일이 다른 폴더에 있는 경우, 파일의 절대 또는 상대 경로를 지정하여 Excel 파일의 위치를 명시적으로 지정해야 합니다.

예로 data 폴더에 excel-comp-data.xlsx 파일이 있다면, 다음과 같이 상대 경로를 사용하여 Excel 파일을 읽을 수 있습니다

df = pd.read_excel('data/excel-comp-data.xlsx')

 

 

2. 열 이름을 사용한 데이터 추출

▪ head와 tail 함수 : 처음 n개 행이나 마지막 n개 행 호출

import pandas as pd #pandas 모듈 호출
import numpy as np  #numpy 모듈 호출
df = pd.read_excel('excel-comp-data.xlsx') #같은 폴더
df.head(5)

 

• 데이터의 열이 많을 경우 transpose 함수를 사용하여 데이터 전체를 대략적으로 살펴볼 수 있습니다.

df.head(3).T

 

▪ 열 이름을 리스트 형태로 넣어 호출합니다.

• 가장 일반적인 호출 방법입니다.

문자형 열 이름을 하나만 넣으면 값이 시리즈 객체로 반환됩니다.

열 이름을 여러 개 넣으면 데이터프레임 객체로 반환됩니다.

df[["account", "street", "state"]].head(3)

 

 

3. 행 번호를 사용한 데이터 추출

▪ 인덱스 번호로 호출합니다.

• 기존의 리스트나 넘파이 배열(ndarray) 슬라이싱과 동일합니다.

df[:3]

 

 

4. 행과 열을 모두 사용한 데이터 추출

위의 두 가지 방법(열 이름과 행 번호) 함께 사용 할 수 있습니다.

▪ 데이터의 일정 부분을 사각형 형태로 잘라내는 것과 같은 효과가 있습니다.

df[["name","street"]][:2]

 

▪ 인덱스를 0부터 시작하는 숫자 아닌 다른 값으로 변경 가능합니다. 코드에서 account 열을 인덱스로 변경하고 account 열을 삭제하겠습니다.

df.index = df["account"] # account 열을 인덱스로 변경
del df["account"] #  account 열 삭제
df.head()

 

▪ loc 함수: 인덱스 값과 열 이름으로 데이터 추출합니다. 특정 account 번호에 해당하는 데이터 추출이 용이합니다.

df.loc[[211829,320563],["name","street"]] # [[인덱스 값],[열이름]]

 

▪ loc 함수: 인덱스 값과 열 이름으로 데이터 추출합니다.

- 인덱스 값이 항상 정렬되어 있지 않아 처음 저장된 순서대로 출력합니다.

df.loc[205217:,["name","street"]]

 

▪ iloc 함수: 인덱스 위치로만 데이터 추출 (0부터 시작) • iloc - ‘index location’의 약자 

• 다음 예제는 행을 기준으로 10개, 열을 기준으로 3개까지입니다.

df.iloc[:10, :3]

 

 

 

5. loc, iloc 함수를 사용한 데이터 추출

reset_index 함수로 새로운 인덱스가 할당된 객체 생성합니다.

• 정답은 없습니다. 인덱스 값이나 인덱스 위치 중에서 편한 방법을 사용하면 됩니다.

df_new = df.reset_index()
df_new

 

 

 

6. drop 함수

▪ 특정 열이나 행을 삭제한 객체를 반환합니다.

• 인덱스 값이 1인 행을 삭제하고 처음 5개의 데이터만 화면에 출력합니다.

df_new.drop(1).head() # 인덱스 1인 행을 삭제, 삭제하는방법1

 

그런데 해당 값이 실제로 사라지지 않습니다! (주의)

df_new.head() # 실제로 사라지지 않음

 

 • 실제 삭제된 값을 기억하려면 다른 변수에 저장합니다. df_drop으로 저장했습니다.

df_drop = df_new.drop(1) # 다른 변수에 저장
df_drop

 

원본 객체에 영향을 주고 싶다면 inplace 매개변수를 사용합니다. 

df_new.drop(1, inplace=True) #삭제하는 방법 2
df_new

 

• account열을 제거해보겠습니다. axis=1 함으로써 행기준으로 선택해서 account이름의 열을 제거합니다.

df_new.drop("account", axis=1).head() #account열 제거

 

리스형식으로 account열과 name열을 제거해보겠습니다.

df_new.drop(["account", "name"], axis=1).head() #account, name열 제거

 

• 사실 drop으로 지지고 볶고 다른 변수로 저장하지 않았다면 아무런 변화가 없습니다...호호

df_new.head()

 

'Machine Learning_모델설계_Python' 카테고리의 다른 글

데이터 전처리_1  (3) 2023.05.04
Pandas_3 그룹별 집계  (2) 2023.05.03
Pandas_1 개요  (3) 2023.05.01
Numpy_3 비교연산과 데이터 추출  (0) 2023.04.30
Numpy_2 배열 연산, 장단점  (1) 2023.04.28