정규식으로 Pandas DataFrame 행 필터링

Salman Mehmood 2024년2월15일
  1. Python에서 Pandas DataFrame 행 필터링
  2. 정규식으로 Pandas DataFrame 행 필터링
  3. 문자열로 Pandas DataFrame 행 필터링
정규식으로 Pandas DataFrame 행 필터링

이 기사에서는 정규 표현식과 문자열 함수를 사용하여 Pandas 데이터 프레임을 필터링하는 방법을 배웁니다. 또한 Python의 Pandas 데이터 프레임에 filter 기능을 적용하는 방법도 배웁니다.

Python에서 Pandas DataFrame 행 필터링

코드에서 먼저 pandas를 가져왔습니다. 그런 다음 CSV 파일에서 pokemon_data를 가져왔습니다. 처음 50개의 원래 포켓몬 데이터가 여기에 있습니다.

우리는 이름, 유형 1, 유형 2와 같은 다양한 정보와 특수 공격, 속도 등과 같은 다양한 속성을 볼 수 있습니다.

import pandas as pd

POK_Data = pd.read_csv("pokemon_data.csv")
POK_Data

Pandas Dataframe 필터링 - 출력 1

데이터 프레임을 필터링하는 다양한 옵션이 있지만 행을 필터링하거나 모든 포켓몬을 인스턴스로 유지하려고 합니다. 다음 코드를 사용하여 80 이상의 공격에 대해 이 작업을 수행할 수 있습니다.

PK_Filtered_Data = POK_Data[POK_Data["Attack"] > 80]
PK_Filtered_Data

필터링하려면 대괄호를 사용합니다. 열을 기준으로 필터링하려고 합니다. 이 경우 열은 Attack입니다.

이렇게 하면 80보다 큰 모든 데이터를 갖게 됩니다. 이를 실행하면 이제 다른 데이터 프레임이 있는 것을 볼 수 있습니다.

Attack 열을 보면 이제 모두 80 이상임을 알 수 있습니다. 필터링된 데이터 프레임을 PK_Filtered_Data라는 다른 변수에 저장합니다.

Pandas Dataframe 필터링 - 출력 2

정규식으로 Pandas DataFrame 행 필터링

다른 열에 대해 이 작업을 수행하거나 여러 열에 대해 결합할 수도 있습니다. Attack 열에서 80보다 큰 데이터를 필터링하고 동시에 Sp. Atk 100 이상.

괄호를 사용할 필요가 없습니다. 또 다른 옵션은 POK_Data[POK_Data.Attack>80]을 사용하여 데이터 프레임을 필터링하는 것입니다.

filter() 함수를 사용하여 데이터 프레임을 필터링하고 정규식을 적용할 수도 있습니다.

정규 표현식은 filter() 기능을 사용하여 데이터 프레임의 열을 필터링할 수 있습니다. 이 함수에서 regex 매개변수를 사용하여 정규식을 지정합니다.

regex에 값을 전달하여 문자 e로 끝나는 모든 열을 유지하고 달러 기호는 이름이 e로 끝나는 열을 필터링함을 의미합니다. 열 수준에 있으므로 축이 1과 같도록 지정해야 합니다.

POK_Data.filter(regex="e$", axis=1)

전체 데이터 프레임을 반환하지만 e로 끝나는 열만 반환합니다.

Pandas Dataframe 필터링 - 출력 3

이 경우 정규식을 적용하면서 M으로 시작하는 이름을 사용하여 행을 필터링합니다.

POK_Data[POK_Data["Name"].str.contains("^M")]

Pandas Dataframe 필터링 - 출력 4

문자열로 Pandas DataFrame 행 필터링

정규식을 사용하여 데이터 프레임의 행을 필터링할 수도 있습니다. 위의 코드는 특정 열을 지정해야 하므로 정확하게 작동하지 않습니다. 데이터 프레임을 필터링하려면 contains() 기능을 사용합니다.

이 경우 데이터 프레임 필터는 Name에 적용되고 contains() 함수 내에서 ur를 문자열로 전달합니다. 여기서 contains()는 실제로 문자열 값을 기반으로 하는 함수이고 POK_Data['Name'] 자체가 Pandas 시리즈이기 때문에 우리는 str() 함수를 사용하고 있습니다.

POK_Data[POK_Data["Name"].str.contains("ur")]

이제 이것을 실행하면 소수의 포켓몬만이 ur를 포함하고 있음을 알 수 있습니다.

Pandas Dataframe 필터링 - 출력 5

전체 Python 코드:

# In[1]:

import pandas as pd

POK_Data = pd.read_csv("pokemon_data.csv")
POK_Data

# In[ ]:

# In[2]:

# PK_Filtered_Data= POK_Data[POK_Data['Attack'] >80]
# PK_Filtered_Data

# In[3]:

# PK_Filtered_Data= POK_Data[POK_Data.Attack>80]
# PK_Filtered_Data

# In[4]:

# POK_Data.filter(regex='e$',axis=1)

# In[5]:

POK_Data[POK_Data["Name"].str.contains("^M")]

# In[6]:

POK_Data[POK_Data["Name"].str.contains("ur")]

여기에서 더 많은 솔루션을 읽어보세요.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

관련 문장 - Pandas Filter