>

파이썬 팬더와 관련하여 다음과 같은 문제가 있습니다 (상대적으로 익숙하지 않습니다). 날짜 열과 해당 값 열이있는 간단한 데이터 세트가 있습니다. 다음을 수행하여이 데이터 프레임을 날짜와 값으로 정렬 할 수 있습니다.

df = df.sort_values(['date', 'value'],ascending=False)

이것을 얻습니다 :

date       value
2019-11    100
2019-11    89
2019-11    87
2019-11    86   
2019_11    45
2019_11    33
2019_11    24
2019_11    11
2019_11    8
2019_11    5
2019-10    100 
2019-10    98
2019-10    96
2019-10    94
2019_10    94
2019_10    78
2019_10    74
2019_10    12
2019_10    3
2019_10    1

지금, 내가하고 싶은 것은 각 달 (각 그룹)의 값 열에 대해 가장 낮은 5 백분위 수를 제거하는 것입니다. 나는 groupby 메소드와 아마도 함수를 사용해야한다는 것을 알고있다 :

df = df.sort_values(['date', 'value'],ascending=False).groupby('date', group_keys=False).apply(<???>)

?? 내가 고군분투하는 곳입니다. 정렬 된 데이터 프레임에서 가장 낮은 5 번째 백분위 수를 WHOLE로 억제하는 방법을 알고 있습니다.

df = df[df.value > df.value.quantile(.05)]

이것은 StackOverflow의 다른 게시물의 객체였습니다. 나는 또한 numpy를 사용 하여이 작업을 수행 할 수 있으며 훨씬 빠르다는 것을 알고 있지만 내 문제는 실제로 데이터 프레임에서 데이터 프레임의 각 그룹에 독립적으로 (값 열의 각 부분을 월별로 정렬) 적용하는 방법입니다. 전체 데이터 프레임.

어떤 도움이라도 대단히 감사하겠습니다. 너무 감사합니다, 친절하다, 베르 티

  • 답변 # 1

    GroupBy.transform 사용  오리지널 DataFrame 와 같은 크기의 시리즈를위한 람다 기능 boolean indexing 에 의해 가능한 필터 :

    df = df.sort_values(['date', 'value'],ascending=False)
    q = df.groupby('date')['value'].transform(lambda x: x.quantile(.05))
    df = df[df.value > q]
    print (df)
           date  value
    4   2019_11     45
    5   2019_11     33
    6   2019_11     24
    7   2019_11     11
    8   2019_11      8
    14  2019_10     94
    15  2019_10     78
    16  2019_10     74
    17  2019_10     12
    18  2019_10      3
    0   2019-11    100
    1   2019-11     89
    2   2019-11     87
    10  2019-10    100
    11  2019-10     98
    12  2019-10     96
    
    

  • 답변 # 2

    나만의 기능과 apply 를 만들 수 있습니다  그것 :

    def remove_bottom_5_pct(arr):
        thresh = np.percentile(arr, 5)
        return arr[arr > thresh]
    df.groupby('date', sort=False)['value'].apply(remove_bottom_5_pct)
    
    

    [아웃]

    date       
    2019-11  0     100
             1      89
             2      87
             3      86
             4      45
             5      33
             6      24
             7      11
             8       8
    2019-10  10    100
             11     98
             12     96
             13     94
             14     94
             15     78
             16     74
             17     12
             18      3
    Name: value, dtype: int64
    
    

  • 이전 datagrid - wpf RowDetailsTemplate 포커스
  • 다음 SwiftUI 튜토리얼 코드에서"일반 매개 변수 'Label'을 (를) 추론 할 수 없습니다 '오류가 발생 함