준비하는 대학생

[Pandas] Dataframe - Data 선택 및 필터링 본문

Programming/Python

[Pandas] Dataframe - Data 선택 및 필터링

Bangii 2023. 3. 21. 15:57

DataFrame에서 데이터 선택하기

DataFrame에서 데이터를 선택하는 방법은 다양합니다. 예를 들어, [] 연산자를 사용하여 열(column)을 선택할 수 있으며, loc 메소드와 iloc 메소드를 사용하여 행(row)과 열(column)을 선택할 수 있습니다.

# DataFrame에서 데이터 선택하기
import pandas as pd

data = {'Name': ['John', 'Kim', 'Emma', 'Andrew'],
        'Age': [28, 25, 27, 31],
        'Country': ['USA', 'Korea', 'UK', 'Australia']}

df = pd.DataFrame(data, index=['one', 'two', 'three', 'four'])
print(df['Name']) # 열(column) 선택
print(df.iloc[0]) # 정수 인덱스(integer index)로 행(row) 선택
print(df.loc['one']) # 레이블(label)로 행(row) 선택
print(df.loc['one', 'Name']) # 레이블(label)로 열(column) 선택

위 코드에서는 pd.DataFrame() 함수를 사용하여 딕셔너리에서 DataFrame 객체를 생성하고, [] 연산자를 사용하여 열(column)을 선택하며, iloc 메소드와 loc 메소드를 사용하여 각각 정수 인덱스(integer index)와 레이블(label)로 행(row)을 선택합니다. loc 메소드를 사용할 때는 레이블(label)로 열(column)을 선택할 수 있습니다.

 

위 코드의 출력 결과는 아래와 같습니다.

one        John
two         Kim
three      Emma
four     Andrew
Name: Name, dtype: object
Name       John
Age          28
Country     USA
Name: one, dtype: object
Name       John
Age          28
Country     USA
Name: one, dtype: object
John

DataFrame에서 데이터 필터링하기

DataFrame에서 데이터를 필터링하는 방법도 다양합니다. 예를 들어, [] 연산자와 불리언(boolean) 연산자를 사용하여 조건에 맞는 데이터를 필터링할 수 있습니다.

# DataFrame에서 데이터 필터링하기
import pandas as pd

data = {'Name': ['John', 'Kim', 'Emma', 'Andrew'],
        'Age': [28, 25, 27, 31],
        'Country': ['USA', 'Korea', 'UK', 'Australia']}

df = pd.DataFrame(data, index=['one', 'two', 'three', 'four'])
print(df[df['Age'] > 27]) # Age 열(column) 값이 27보다 큰 데이터 필터링

위 코드에서는 pd.DataFrame() 함수를 사용하여 딕셔너리에서 DataFrame 객체를 생성하고, [] 연산자와 불리언(boolean) 연산자를 사용하여 Age 열(column) 값이 27보다 큰 데이터를 필터링합니다.

 

출력 결과는 아래와 같습니다.

        Name  Age    Country
one     John   28        USA
four  Andrew   31  Australia

DataFrame에서 여러 조건을 사용하여 데이터를 필터링할 때는 & 연산자(AND)와 | 연산자(OR)를 사용합니다.

import pandas as pd

df = pd.DataFrame({'Name': ['John', 'Kim', 'Emma', 'Andrew'],
                   'Age': [28, 25, 27, 31],
                   'Country': ['USA', 'Korea', 'UK', 'Australia']})

# Age 열(column)이 27보다 크고 Country 열(column)이 'USA'인 행(row) 선택
print(df[(df['Age'] > 27) & (df['Country'] == 'USA')])

위 코드에서는 pd.DataFrame() 함수를 사용하여 딕셔너리에서 DataFrame 객체를 생성하고, [] 연산자를 사용하여 'Age' 열(column)이 27보다 크고 'Country' 열(column)이 'USA'인 행(row)을 선택하고 출력합니다.

출력 결과는 아래와 같습니다.

   Name  Age Country
0  John   28     USA

DataFrame에서 데이터를 필터링하는 또 다른 방법은 query() 메소드를 사용하는 것입니다.

# DataFrame에서 데이터 필터링하기 (query 사용)
import pandas as pd

data = {'Name': ['John', 'Kim', 'Emma', 'Andrew'],
        'Age': [28, 25, 27, 31],
        'Country': ['USA', 'Korea', 'UK', 'Australia']}

df = pd.DataFrame(data, index=['one', 'two', 'three', 'four'])
print(df.query('Age > 27')) # Age 열(column) 값이 27보다 큰 데이터 필터링 (query 사용)

위 코드에서는 pd.DataFrame() 함수를 사용하여 딕셔너리에서 DataFrame 객체를 생성하고, query() 메소드를 사용하여 Age 열(column) 값이 27보다 큰 데이터를 필터링합니다.

출력 결과는 아래와 같이 같은 출력이 나옵니다.

        Name  Age    Country
one     John   28        USA
four  Andrew   31  Australia

DataFrame에서 데이터 조작하기

DataFrame에서 데이터를 조작하는 방법도 다양합니다. 예를 들어, drop() 메소드를 사용하여 행(row) 또는 열(column)을 제거할 수 있으며, dropna() 메소드를 사용하여 결측값이 있는 데이터를 제거할 수 있습니다.

# DataFrame에서 데이터 조작하기
import pandas as pd
import numpy as np

data = {'Name': ['John', 'Kim', 'Emma', 'Andrew', np.nan],
        'Age': [28, 25, 27, 31, np.nan],
        'Country': ['USA', 'Korea', 'UK', 'Australia', np.nan]}

df = pd.DataFrame(data)
print(df.dropna()) # 결측값이 있는 데이터 제거
print(df.drop('Country', axis=1)) # 열(column) 제거

위 코드에서는 pd.DataFrame() 함수를 사용하여 딕셔너리에서 DataFrame 객체를 생성하고, drop() 메소드와 dropna() 메소드를 사용하여 각각 열(column)과 결측값이 있는 데이터를 제거합니다.

출력 결과는 아래와 같습니다.

Name   Age    Country
0    John  28.0        USA
1     Kim  25.0      Korea
2    Emma  27.0         UK
3  Andrew  31.0  Australia
     Name   Age
0    John  28.0
1     Kim  25.0
2    Emma  27.0
3  Andrew  31.0
4     NaN   NaN

이 외에도, mean(), sum(), min(), max()와 같은 통계 메소드를 사용하여 DataFrame의 통계 정보를 계산할 수 있습니다.

# DataFrame의 통계 정보 계산하기
import pandas as pd

data = {'Name': ['John', 'Kim', 'Emma', 'Andrew'],
        'Age': [28, 25, 27, 31],
        'Country': ['USA', 'Korea', 'UK', 'Australia']}

df = pd.DataFrame(data, index=['one', 'two', 'three', 'four'])
print(df.mean()) # 열(column)의 평균값 계산
print(df['Age'].min()) # Age 열(column)의 최솟값 계산

위 코드에서는 pd.DataFrame() 함수를 사용하여 딕셔너리에서 DataFrame 객체를 생성하고, mean() 메소드와 min() 메소드를 사용하여 각각 열(column)의 평균값과 Age 열(column)의 최솟값을 계산합니다.

아래는 출력 결과입니다.

Age    27.75
dtype: float64
25

결론

DataFrame에서 데이터를 선택, 필터링, 조작하는 방법을 익히면 데이터 분석에서 많은 도움이 됩니다. 데이터 분석에 필요한 다양한 작업을 DataFrame으로 처리할 수 있으므로, Pandas 라이브러리에서는 DataFrame을 중심으로 다양한 기능을 제공합니다. 이러한 기능들을 효과적으로 활용하여 데이터 분석에 대한 작업 효율을 높일 수 있습니다.

'Programming > Python' 카테고리의 다른 글

[Python] 클로저(Closure)  (0) 2023.04.10
[Python] enumerate함수  (0) 2023.03.30
[Pandas] Series와 DataFrame  (0) 2023.03.20
[python] matplotlib - hist, box plot  (0) 2023.03.20
Comments