새소식

Python/Alice Python Basic

Python 기초 프로그래밍의 간단 정리5

  • -

1. Pandas 심화 간단 정리

 데이터 프레임 정렬

 

1) 인덱스 값 기준으로 정렬하기

axis=0 : 행 인덱스 기준 정렬(default 오름차순)

df = df.sort_index(axis =0)

 

axis=1 : 열 인덱스 기준 내림차순 정렬

df.sort_index(axis=1, ascending= False)    #  ascending -> True = 오름차순, False = 내림차순

 

2) column 값 기준 정렬

df.sort_values(‘칼럼 이름’ , ascending = true)

 

3) 컬럼 2가지도 오름, 내림차순 정렬 가능

df.sort_values([‘먼저 바꿀 ’, ascending = [True, False])

 

 

<데이터 프레임 분석용 함수 예시>

집계 함수 - count

count 메서드 활용하여 데이터 개수 확인 가능

 

data = {

    ‘korean’ : [50, 60, 70],

    ‘math’ :  [10,np.nan ,40]

}

 

df= df.DataFrame(data, index = [‘a’, ’b’, ’c’])

df.count(axis =0)                                                #열 기준

===============

Korean             3

math                2

 

 

df.count(axis =1)                                                 #행 기준

===============

a                       2

b                       1

c                       2

==================================

df.max()              70.0                         40.0

df.min()               50.0                         10.0

==================================

df.sum()            180.0                         50.0

df.mean()           60.0                         25.0

 

 

df.sum(axis =1)

df.mean(axis=1, skipna = False)

Nan을 반환하겠다 -> False 

 

                              합계                         평균

a                            60.0                       30.0

b                            60.0                        Nan

c                           110.0                       55.0

 

하면 nan값 때문에 계산이 번거로워지는데 fillna를 사용하면 nan값이 존재하는 column 평균을 구하여 nan 값을 대체하게 된다.

B_avg =df[‘math’]. mean()

print(B_avg)                                                #25. 0

df[‘math’] = df[‘math’]. fillna(B_avg)        #NAN값 대체

df.mean(axis=1, skipna = False)               #평균

 

 

                 df원본                                nan값 대체                                   평균

                 korean         math            korean             math

a                     50            10.0                   50               10.0                  30.0

b                     60           NAN                   60              25.0                  42.5

c                     70            40.0                   70              40.0                  55.0

 

 

 

그룹으로 묶기 

간단한 집계를 넘어서서 조건부로 집계하고 싶을 때 사용한다

 

df = pd.DataFrame({

    ‘data1’ : range(6),

    ‘data2’ : [4, 4, 6, 0, 6, 1],

    ‘key’ : [‘A’, ’B’, ’C’, ’A’, ’B’, ’C’]

})

 

df.groupby(‘key’). sum()                    ->#1번

df.groupby([‘key’, ‘data1’]). sum()     ->#2번

 

 

#df                                                 #1번                                           #2번

 

       data1    data2    key               key                                         key              data1

0            0           4       A                  A       3        4                         A                     0                  4

1             1           4       B                  B       5       10                                                3                  0

2            2           6       C                  C       7        7                         B                      1                  4

3            3           0       A                                                                                         4                 6

4            4           6       B                                                                 C                     2                  6

5            5           1        C                                                                                        4                  1

 

 

 

aggregate -> groupby를 통해서 집계를 한 번에 계산하는 방법 >

 

df.groupby(‘key’). aggregate([min, np.median, max])

df.groupby(‘key’). aggregate({‘data1’: ‘min’, ‘data2’: np.sum})

 

filter -> groupby를 통해 그룹 속성을 기준으로 데이터 필터링 >

 

def filter_by_mean(x):

return x[‘data2’]. mean() >3

df.groupby(‘key’). mean()

df.groupby(‘key’). filter(filter_by_mean)

 

apply, lambda -> groupby를 통해 묶인 데이터에 함수 적용 >

 

df.groupby(‘key’). apply(lambda x: x.max() - x.min())

 

get_group -> groupby로 묶인 데이터에서 Key 값으로 데이터를 가져오는 방법 >

 

df = pd.read_csv(“./univ.csv”)

df.head()                                                                #상위 5개 데이터

df.groupby(“시도”). get_group(“충남”)                 #데이터 추출

len(df.groupby(“시도”). get_group(“충남”))

 

 

 

 

 

 

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.