Python/Pandas

[Pandas 기초] Pandas와 함수

유달잇 2021. 6. 16. 20:31
728x90

 

Pandas에서 함수를 이용하여 데이터를 변경해보자.


 

1. lambda  :


  • lambda 인자 : 표현식 으로 사용되며, 함수를 한 줄로 사용할 수 있는 기능을 가지고 있다.
  
  def f(x , y):
      return x + y

  f(1,4)  # 5
  
  
  f = lambda x,y: x + y
  f(1,4)  # 5
  

-> 위의 f 함수를 lambda를 통해 구현할 수 있다.

  
  # 제곱
  (lambda x: x ** 2)(3)  # 9
  

-> 이와 같이 한 줄로도 사용할 수 있다.

 

 

2. map( )


  • 함수와 리스트를 인자로 받아 리스트의 모든 원소들에 함수를 적용시킨 후, 그 결과를 새로운 리스트에 담아준다.
  
  ex = [1,2,3,4,5]
  f = lambda x: x ** 2
  list(map(f, ex))  # [1, 4, 9, 16, 25]
  

-> ex 리스트 원소에 모두 f 함수를 적용시켜 리스트로 반환한다.

  import pandas as pd
  import numpy as np
  from pandas import Series
  
  s1 = Series(np.arange(10))
  s1

  z = {1:'A', 2:'B', 3:'C'}
  s1.map(z)
  

-> 0부터 9까지의 원소를 담는 시리즈 s1을 생성한 후, { 1 : 'A', 2 : 'B', 3 : 'C' } 형태의 dict z를 생성하여

    시리즈 s1에 map 함수를 사용하여 dict를 적용시키면 위와 같이 데이터를 변경할 수 있다.

 

 

3. 데이터 변경해보기


  
  df = pd.read_csv("wages.csv")
  df.head()
  

-> 위 데이터의 성별(sex)을 0과 1의 값으로 변경해보자.

1. df.sex.unique( ) 를 통해 중복 없는 컬럼의 값을 확인한다.

  
  df.sex.unique()
    

 

2-1. map( ) 을 사용하여 sex컬럼 데이터를 숫자로 변경한다.

  
  df["sex"] = df.sex.map({'male':0, 'female':1})
  df
  

 

2-2. replace( ) 를 사용하여 위와 같이 데이터를 변경할 수 있다. (꼭 inplace=True를 해야 원본 데이터가 변경된다! )

  
  df.sex.replace(['male','female'], [0,1], inplace=True)
  df
  

 

 

4. apply( )


  • 시리즈 전체(컬럼)에 해당 함수를 적용하며 컬럼의 통계 자료를 낼 때 유용하게 사용할 수 있다.
  
  df_info = df[["earn", "height","age"]]
  df_info.head()
  

ex1. 

  
  f = lambda x : x.max() - x.min()
  df_info.apply(f)
  

ex2.

  
  df_info.apply(sum)
    

 

 

5. applymap( )


  • 데이터프레임 전체에 해당 함수를 적용하며 컬럼의 통계 자료를 낼 때 유용하게 사용할 수 있다.

  # ex) 전체 데이터프레임에 - 적용
  f = lambda x : -x
  df_info.applymap(f).head(5)
  

 

 

6. 기타 함수


6-1. describe( ) : 전체 데이터의 요약 정보를 보여준다.

  
  df.describe()
    

 

6-2. unique( ) : 데이터의 유일한 값을 반환한다.

  
  df.race.unique()
    

 

6-3. 카테고리형 데이터 몇 개 인지 모를 때 라벨링 하기 ( dict )

  
  res = np.array(dict(enumerate(df["race"].unique())))
  res
  

 

6-4. 카테고리형 데이터 몇 개 인지 모를때 라벨링 하기 ( list )

  
  value = list(map(int, np.array(list(enumerate(df["race"].unique())))[:, 0].tolist()))
  key = np.array(list(enumerate(df["race"].unique())), dtype=str)[:, 1].tolist()

  value, key
  

 

 

 

 

출처 : 부스트코스 인공지능(AI) 기초 다지기

 

[AI Tech Pre-course] 인공지능(AI) 기초 다지기

부스트코스 무료 강의

www.boostcourse.org

 

 

사용한 데이터 :

wages.csv
0.06MB

 

 

 

728x90

'Python > Pandas' 카테고리의 다른 글

[Pandas 기초] Pandas의 Select, Drop  (2) 2021.06.15
[Pandas 기초] Pandas의 DataFrame  (2) 2021.06.12
[Pandas 기초] Pandas 라이브러리  (2) 2021.06.11
댓글
250x250
최근에 올라온 글
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Total
Today
Yesterday