programing

팬더 - 값 없음 필터링

muds 2023. 10. 3. 11:39
반응형

팬더 - 값 없음 필터링

팬더를 이용해 데이터셋을 탐색하고 있습니다.데이터 프레임은 다음과 같습니다.

enter image description here

열에 값이 있는 행은 제외합니다.City. 그래서 해봤습니다.

new_df = all_df[(all_df["City"] == "None") ]
new_df

그런데 빈 데이터 프레임이 나왔습니다.

enter image description here

다른 값을 사용할 때마다 작동합니다.None. 이 데이터 프레임을 필터링하는 방법을 알고 계십니까?

사용을 고려합니다.isnull()결측값을 찾아내다

all_df[all_df['City'].isnull()]

이 방법을 사용하여 다음 항목만 선택합니다.None도시 열에 대한 값:

new_df = all_df['City'][all_df['City'] == "None"]

동일한 행을 가진 다른 모든 열을 보려면 이 작업을 수행합니다.'City'==None

new_df = all_df[all_df['City'] == "None"]
print(new_df.head()) # with function head() you can see the first 5 rows
  1. None는 문자열이 아닌 키워드이므로 따옴표를 사용하지 마십시오.

  2. None == None주는True, 사용자 지정 클래스에서는 비교 연산자를 무시할 수 있으므로 사용하는 것이 더 안전합니다.is None.

  3. 팬더가 그 기능을 제공합니다.그래서 제안합니다.

new_df = all_df[all_df['City'].isna()]

또 다른 방법은 다음과 같은 방법을 사용하는 것입니다.

In [3]: all_df.query('City != City')
Out[3]: 
   FACTS_Value    Region  City Village
0      34135.0  Al Bahah  None    None

해당 열 이름이 지정된 없음을 제외한 모든 값을 추출하는 메서드입니다.

df = df[df.columnname.notna()]

나는 희망합니다.where" 당신이 기대하는 것을 할 수 있습니다.

new_df = new_df.where(new_df["city"], None) 

그리고 사용하는게 더 좋습니다.np.nan보다는None.

자세한 내용은 팬더.DataFrame.where

None 값으로 여러 행을 필터링하려면 다음을 사용할 수 있습니다.any,all아니면sum. 예를 들어, 의 경우df아래에 제시된 바와 같이:

   FACTS_Value    Region      City  Village
0        16482  Al Bahah      None     None
1        22522  Al Bahah   Al Aqiq     None
2        12444  Al Bahah   Al Aqiq  Al Aqiq
3        12823  Al Bahah  Al Bahah  Al Aqiq
4        11874      None      None     None

하나 이상의 열에서 None 값을 가진 모든 행을 선택하려면 다음을 사용할 수 있습니다.isna+any축에서 부울 마스크를 작성합니다.

msk = df.isna().any(axis=1)
out = df[msk]

출력:

   FACTS_Value    Region     City Village
0        16482  Al Bahah     None    None
1        22522  Al Bahah  Al Aqiq    None
4        11874      None     None    None

숫자가 아닌 모든 열 값이 None인 행을 원한다면 다음을 사용할 수 있습니다.isna+all축:

msk = df.select_dtypes(exclude='number').isna().all(axis=1)

아니면

msk = df[['Region', 'City', 'Village']].isna().all(axis=1)
out = df[msk]

출력:

   FACTS_Value Region  City Village
4        11874   None  None    None

우리가 정확히 다음과 같은 행을 필터링하려면n값이 없으면, 우리가 사용할 수 있습니다.sum축 + 위에eq:

msk = df.isna().sum(axis=1) == 2
out = df[msk]

출력:

   FACTS_Value    Region  City Village
0        16482  Al Bahah  None    None

기븐, 어디서Nonepython 입니다.None,것은 아니다.'None':

   FACTS_Value    Region      City  Village
0        16482  Al Bahah      None     None
1        22522  Al Bahah   Al Aqiq     None
2        12444  Al Bahah   Al Aqiq  Al Aqiq
3        12823  Al Bahah  Al Bahah  Al Aqiq
4        11874      None      None     None

고치기None값:

df = df.fillna(np.nan)

이제 다음이 예상대로 작동합니다.

df[df.City.isna()]

언급URL : https://stackoverflow.com/questions/45117272/pandas-filtering-none-values

반응형