정규식으로 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
데이터 프레임을 필터링하는 다양한 옵션이 있지만 행을 필터링하거나 모든 포켓몬을 인스턴스로 유지하려고 합니다. 다음 코드를 사용하여 80 이상의 공격에 대해 이 작업을 수행할 수 있습니다.
PK_Filtered_Data = POK_Data[POK_Data["Attack"] > 80]
PK_Filtered_Data
필터링하려면 대괄호를 사용합니다. 열을 기준으로 필터링하려고 합니다. 이 경우 열은 Attack
입니다.
이렇게 하면 80보다 큰 모든 데이터를 갖게 됩니다. 이를 실행하면 이제 다른 데이터 프레임이 있는 것을 볼 수 있습니다.
Attack
열을 보면 이제 모두 80 이상임을 알 수 있습니다. 필터링된 데이터 프레임을 PK_Filtered_Data
라는 다른 변수에 저장합니다.
정규식으로 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
로 끝나는 열만 반환합니다.
이 경우 정규식을 적용하면서 M
으로 시작하는 이름
을 사용하여 행을 필터링합니다.
POK_Data[POK_Data["Name"].str.contains("^M")]
문자열로 Pandas DataFrame 행 필터링
정규식을 사용하여 데이터 프레임의 행을 필터링할 수도 있습니다. 위의 코드는 특정 열을 지정해야 하므로 정확하게 작동하지 않습니다. 데이터 프레임을 필터링하려면 contains()
기능을 사용합니다.
이 경우 데이터 프레임 필터는 Name
에 적용되고 contains()
함수 내에서 ur
를 문자열로 전달합니다. 여기서 contains()
는 실제로 문자열 값을 기반으로 하는 함수이고 POK_Data['Name']
자체가 Pandas 시리즈이기 때문에 우리는 str()
함수를 사용하고 있습니다.
POK_Data[POK_Data["Name"].str.contains("ur")]
이제 이것을 실행하면 소수의 포켓몬만이 ur
를 포함하고 있음을 알 수 있습니다.
전체 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")]
여기에서 더 많은 솔루션을 읽어보세요.
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