반응형
안녕하세요! 오늘은 데이터 분석에서 자주 사용하는 Pandas 라이브러리의 기능 중 하나인 데이터프레임에서 행/열 조건 필터링하는 방법에 대해서 알아보도록 하겠습니다.
서론
데이터 분석에서 데이터프레임은 매우 중요한 역할을 합니다. 하지만, 데이터프레임에 수천 혹은 수백만 건의 데이터가 있을 경우, 데이터 중에서 필요한 데이터만 추출하여 작업하는 것은 매우 중요합니다. 이를 위해 데이터프레임에서 행/열 조건 필터링을 사용합니다. Pandas에서는 다양한 방법을 제공하므로, 각각의 방법에 대해서 살펴보도록 하겠습니다.
예시
먼저 예시 데이터프레임을 생성해 보겠습니다.
```python
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily', 'Frank', 'Gabriel', 'Helen'],
'region': ['east', 'west', 'east', 'north', 'east', 'west', 'south', 'west'],
'age': [25, 32, 18, 47, 36, 22, 19, 33],
'income': [4000, 5200, 2000, 7600, 6400, 3100, 1800, 4200]}
df = pd.DataFrame(data)
```
위 코드를 실행하면, 다음과 같은 데이터프레임이 생성됩니다.
```
name region age income
0 Alice east 25 4000
1 Bob west 32 5200
2 Charlie east 18 2000
3 David north 47 7600
4 Emily east 36 6400
5 Frank west 22 3100
6 Gabriel south 19 1800
7 Helen west 33 4200
```
위 데이터프레임에서 특정 조건을 만족하는 데이터만 추출하는 방법에 대해서 알아보겠습니다.
1. 단순 조건 필터링
다음과 같은 방법으로, 데이터프레임에서 특정 조건을 만족하는 데이터만 추출할 수 있습니다.
```python
# 행 조건 필터링
df[df['age'] > 30] # 나이가 30세를 초과하는 데이터만 추출
df[df['region'] == 'east'] # 지역이 east인 데이터만 추출
# 열 조건 필터링
df.loc[:, ['name', 'income']] # 이름과 소득 열만 추출
```
위 코드를 실행하면, 다음과 같은 결과를 얻을 수 있습니다.
```
name region age income
1 Bob west 32 5200
3 David north 47 7600
4 Emily east 36 6400
7 Helen west 33 4200
name region age income
0 Alice east 25 4000
2 Charlie east 18 2000
4 Emily east 36 6400
name income
0 Alice 4000
1 Bob 5200
2 Charlie 2000
3 David 7600
4 Emily 6400
5 Frank 3100
6 Gabriel 1800
7 Helen 4200
```
2. 여러 조건 필터링
여러 조건을 조합하여 필터링하는 방법에 대해서 알아보겠습니다.
```python
# 행 조건 필터링
df[(df['age'] > 30) & (df['region'] == 'east')] # 나이가 30세를 초과하고, 지역이 east인 데이터만 추출
# 열 조건 필터링
df.loc[df['age'] > 30, ['name', 'income']] # 나이가 30세를 초과하는 데이터의 이름과 소득 열만 추출
```
위 코드를 실행하면, 다음과 같은 결과를 얻을 수 있습니다.
```
name region age income
4 Emily east 36 6400
name income
1 Bob 5200
3 David 7600
4 Emily 6400
7 Helen 4200
```
3. 문자열 조건 필터링
문자열 조건으로 필터링하는 방법에 대해서 알아보겠습니다.
```python
# 문자열 조건 필터링
df[df['name'].str.contains('e')] # 이름에 'e'가 들어간 데이터 추출
```
위 코드를 실행하면, 다음과 같은 결과를 얻을 수 있습니다.
```
name region age income
1 Bob west 32 5200
2 Charlie east 18 2000
3 David north 47 7600
4 Emily east 36 6400
```
활용발안
이번에는 적용 예를 몇 가지 살펴보도록 하겠습니다.
1. 불필요한 열 제거
위 예시 데이터프레임에서, region 열은 분석에 필요하지 않을 수 있습니다. 이 경우, 다음과 같이 열을 제거할 수 있습니다.
```python
df.drop('region', axis=1, inplace=True)
```
위 코드를 실행하면, 다음과 같이 region 열이 제거된 데이터프레임이 생성됩니다.
```
name age income
0 Alice 25 4000
1 Bob 32 5200
2 Charlie 18 2000
3 David 47 7600
4 Emily 36 6400
5 Frank 22 3100
6 Gabriel 19 1800
7 Helen 33 4200
```
2. 조건에 따른 새로운 열 생성
위 데이터프레임에서, 연령대(age group)와 소득대(income group)를 기준으로 새로운 열을 생성할 수 있습니다.
```python
# 나이를 기준으로 연령대 열 생성
conditions = [
(df['age'] < 20),
(df['age'] < 30),
(df['age'] < 40),
(df['age'] < 50),
(df['age'] >= 50)
]
values = ['10s', '20s', '30s', '40s', '50s']
df['age_group'] = np.select(conditions, values)
# 소득을 기준으로 소득대 열 생성
conditions = [
(df['income'] < 3000),
(df['income'] < 5000),
(df['income'] < 7000),
(df['income'] >= 7000)
]
values = ['Low', 'Medium', 'High', 'Very High']
df['income_group'] = np.select(conditions, values)
```
위 코드를 실행하면, 다음과 같이 새로운 age_group과 income_group 열이 생성됩니다.
```
name region age income age_group income_group
0 Alice east 25 4000 20s Medium
1 Bob west 32 5200 30s High
2 Charlie east 18 2000 10s Low
3 David north 47 7600 40s Very High
4 Emily east 36 6400 30s High
5 Frank west 22 3100 20s Medium
6 Gabriel south 19 1800 10s Low
7 Helen west 33 4200 30s Medium
```
결론
Pandas는 데이터 분석에서 매우 강력하고 자주 사용되는 라이브러리 중 하나입니다. 행/열 조건 필터링 기능을 통해, 데이터프레임에서 필요한 데이터만 추출하여 작업할 수 있습니다. 위 예시와 함께, Pandas를 다양한 방법으로 사용할 수 있다는 것을 잘 이해하고 응용해보세요!
서론
데이터 분석에서 데이터프레임은 매우 중요한 역할을 합니다. 하지만, 데이터프레임에 수천 혹은 수백만 건의 데이터가 있을 경우, 데이터 중에서 필요한 데이터만 추출하여 작업하는 것은 매우 중요합니다. 이를 위해 데이터프레임에서 행/열 조건 필터링을 사용합니다. Pandas에서는 다양한 방법을 제공하므로, 각각의 방법에 대해서 살펴보도록 하겠습니다.
예시
먼저 예시 데이터프레임을 생성해 보겠습니다.
```python
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily', 'Frank', 'Gabriel', 'Helen'],
'region': ['east', 'west', 'east', 'north', 'east', 'west', 'south', 'west'],
'age': [25, 32, 18, 47, 36, 22, 19, 33],
'income': [4000, 5200, 2000, 7600, 6400, 3100, 1800, 4200]}
df = pd.DataFrame(data)
```
위 코드를 실행하면, 다음과 같은 데이터프레임이 생성됩니다.
```
name region age income
0 Alice east 25 4000
1 Bob west 32 5200
2 Charlie east 18 2000
3 David north 47 7600
4 Emily east 36 6400
5 Frank west 22 3100
6 Gabriel south 19 1800
7 Helen west 33 4200
```
위 데이터프레임에서 특정 조건을 만족하는 데이터만 추출하는 방법에 대해서 알아보겠습니다.
1. 단순 조건 필터링
다음과 같은 방법으로, 데이터프레임에서 특정 조건을 만족하는 데이터만 추출할 수 있습니다.
```python
# 행 조건 필터링
df[df['age'] > 30] # 나이가 30세를 초과하는 데이터만 추출
df[df['region'] == 'east'] # 지역이 east인 데이터만 추출
# 열 조건 필터링
df.loc[:, ['name', 'income']] # 이름과 소득 열만 추출
```
위 코드를 실행하면, 다음과 같은 결과를 얻을 수 있습니다.
```
name region age income
1 Bob west 32 5200
3 David north 47 7600
4 Emily east 36 6400
7 Helen west 33 4200
name region age income
0 Alice east 25 4000
2 Charlie east 18 2000
4 Emily east 36 6400
name income
0 Alice 4000
1 Bob 5200
2 Charlie 2000
3 David 7600
4 Emily 6400
5 Frank 3100
6 Gabriel 1800
7 Helen 4200
```
2. 여러 조건 필터링
여러 조건을 조합하여 필터링하는 방법에 대해서 알아보겠습니다.
```python
# 행 조건 필터링
df[(df['age'] > 30) & (df['region'] == 'east')] # 나이가 30세를 초과하고, 지역이 east인 데이터만 추출
# 열 조건 필터링
df.loc[df['age'] > 30, ['name', 'income']] # 나이가 30세를 초과하는 데이터의 이름과 소득 열만 추출
```
위 코드를 실행하면, 다음과 같은 결과를 얻을 수 있습니다.
```
name region age income
4 Emily east 36 6400
name income
1 Bob 5200
3 David 7600
4 Emily 6400
7 Helen 4200
```
3. 문자열 조건 필터링
문자열 조건으로 필터링하는 방법에 대해서 알아보겠습니다.
```python
# 문자열 조건 필터링
df[df['name'].str.contains('e')] # 이름에 'e'가 들어간 데이터 추출
```
위 코드를 실행하면, 다음과 같은 결과를 얻을 수 있습니다.
```
name region age income
1 Bob west 32 5200
2 Charlie east 18 2000
3 David north 47 7600
4 Emily east 36 6400
```
활용발안
이번에는 적용 예를 몇 가지 살펴보도록 하겠습니다.
1. 불필요한 열 제거
위 예시 데이터프레임에서, region 열은 분석에 필요하지 않을 수 있습니다. 이 경우, 다음과 같이 열을 제거할 수 있습니다.
```python
df.drop('region', axis=1, inplace=True)
```
위 코드를 실행하면, 다음과 같이 region 열이 제거된 데이터프레임이 생성됩니다.
```
name age income
0 Alice 25 4000
1 Bob 32 5200
2 Charlie 18 2000
3 David 47 7600
4 Emily 36 6400
5 Frank 22 3100
6 Gabriel 19 1800
7 Helen 33 4200
```
2. 조건에 따른 새로운 열 생성
위 데이터프레임에서, 연령대(age group)와 소득대(income group)를 기준으로 새로운 열을 생성할 수 있습니다.
```python
# 나이를 기준으로 연령대 열 생성
conditions = [
(df['age'] < 20),
(df['age'] < 30),
(df['age'] < 40),
(df['age'] < 50),
(df['age'] >= 50)
]
values = ['10s', '20s', '30s', '40s', '50s']
df['age_group'] = np.select(conditions, values)
# 소득을 기준으로 소득대 열 생성
conditions = [
(df['income'] < 3000),
(df['income'] < 5000),
(df['income'] < 7000),
(df['income'] >= 7000)
]
values = ['Low', 'Medium', 'High', 'Very High']
df['income_group'] = np.select(conditions, values)
```
위 코드를 실행하면, 다음과 같이 새로운 age_group과 income_group 열이 생성됩니다.
```
name region age income age_group income_group
0 Alice east 25 4000 20s Medium
1 Bob west 32 5200 30s High
2 Charlie east 18 2000 10s Low
3 David north 47 7600 40s Very High
4 Emily east 36 6400 30s High
5 Frank west 22 3100 20s Medium
6 Gabriel south 19 1800 10s Low
7 Helen west 33 4200 30s Medium
```
결론
Pandas는 데이터 분석에서 매우 강력하고 자주 사용되는 라이브러리 중 하나입니다. 행/열 조건 필터링 기능을 통해, 데이터프레임에서 필요한 데이터만 추출하여 작업할 수 있습니다. 위 예시와 함께, Pandas를 다양한 방법으로 사용할 수 있다는 것을 잘 이해하고 응용해보세요!
반응형
'파이썬' 카테고리의 다른 글
| 파이썬에서 사용하는 Pandas 라이브러리의 .groupby() 함수 활용 방법에 대한 예시 코드 (0) | 2023.04.14 |
|---|---|
| 넘파이(Numpy)의 reshape() 함수를 사용하여 다차원 배열의 차원을 변경하는 방법 (0) | 2023.04.14 |
| Pandas library를 활용한 데이터 필터링에 대한 예제 (0) | 2023.04.14 |
| Pandas DataFrame의 concatenate() 함수 사용 방법 (0) | 2023.04.14 |
| Pandas로 데이터프레임 합치기 (0) | 2023.04.14 |