일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 코딩테스트실력진단
- 자바
- Design Pattern
- 코드트리
- numpy 기초
- cpp class
- 데이터 분석
- 넘파이 배열
- 합성곱 신경망
- 코딩테스트
- ack
- 코테
- 파이썬
- 기계학습
- 넘파이
- c++
- 넘파이 기초
- cpp
- 클러스터링
- 디자인 패턴
- 네트워크 기초
- NumPy
- 데이터 마이닝
- java
- OOP
- 머신러닝
- Machine Learning
- lambda
- python
- 차원축소
- Today
- Total
준비하는 대학생
[Pandas] Dataframe - Data 선택 및 필터링 본문
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 |