Certificate/data science-IBM

map, lambda, filter, to_datetime(), date(), datetime.date(year, month, day), dt

Olivia-BlackCherry 2023. 5. 28. 19:15

목차

     

    map

    map은 파이썬 내장함수이다. 

    각 시퀀스의 각 요소에 ()안의 함수를 적용하여 새로운 시퀀스를 생성한다. 

    이 함수는 주로 list, tuple 등 iterable한 객체에 사용된다. 

    # 예시 1: 리스트 요소 제곱하기
    numbers = [1, 2, 3, 4, 5]
    squared_numbers = list(map(lambda x: x**2, numbers))
    print(squared_numbers)
    # 출력: [1, 4, 9, 16, 25]
    
    # 예시 2: 문자열 길이 구하기
    fruits = ["apple", "banana", "cherry"]
    lengths = list(map(len, fruits))
    print(lengths)
    # 출력: [5, 6, 6]

     

     

    pandas로 dataframe을 만들고, cores 속성 값 중, 길이가 1인 것을 찾아보려고 한다. 

    data['cores'].map(len)==1

    187개의 row 중 len가 1인 것은 true로 반환되고, 아닌 것은 false로 반환된다.

    false인 것의 개수를 알고 싶다면 sum함수를 더한다. 

     

    count= sum(data['cores'].map(len)!=1)
    print(count)

    >>3

     

    원래의 data에서, 길이가 1인 것들만 extract하고 싶다면 불린형을 데이터프레임에 넣으면 된다. 

    그러면 3개의 row가 remove된다. 

    data=data[data["cores"].map(len)==1]
    data.count() #3개가 제외된 184개가 된다.

     

     

     

    lambda

    람다 함수는 파이썬에서 간단한 익명 함수를 정의할 때 사용되는 함수이다. 

    익명 함수란 이름이 없는 함수로, 일회성으로 사용될 때 간편하고 심플하게 쓸 수 있어 유용하다. 

    간결한 문법으로 표현되며 iterable한 경우 쓰는 map(), filter()과 함께 사용된다. 

    # 예시 1: 인자 x를 받아 x의 제곱을 반환하는 람다 함수
    square = lambda x: x**2
    print(square(5))
    # 출력: 25
    
    # 예시 2: 두 인자 x와 y를 받아 더한 값을 반환하는 람다 함수
    add = lambda x, y: x + y
    print(add(3, 4))
    # 출력: 7
    
    # 예시 3: 리스트의 각 요소에 대해 제곱 연산을 수행하는 람다 함수와 map() 함수 사용
    numbers = [1, 2, 3, 4, 5]
    squared_numbers = list(map(lambda x: x**2, numbers))
    print(squared_numbers)
    # 출력: [1, 4, 9, 16, 25]

    lambda 키워드를 적는다. 

    : 콜론을 기준으로 왼쪽에는 입력 인자오른쪽에는 반환값을 넣는다. 

     

     

     

    filter

    필터는 거른다는 의미를 갖는다. 

    원래의 원소들 중 조건에 맞는 원소만 걸러 새로운 리스트를 반환해낸다. 

    filter함수는 첫 번째 인자로 조건을 확인하는 함수를, 두 번째 인자로 대상 리스트나 iterable한 객체를 받는다. 

    필터 함수를 거치면 조건을 만족하는 새로운 리스트가 return 된다. 

    # 예시 1: 짝수인 요소들로 이루어진 리스트 생성
    numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
    print(even_numbers)
    # 출력: [2, 4, 6, 8, 10]
    
    # 예시 2: 길이가 5인 문자열로 이루어진 리스트 생성
    fruits = ["apple", "banana", "cherry", "orange", "kiwi"]
    length_5 = list(filter(lambda x: len(x) == 5, fruits))
    print(length_5)
    # 출력: ["apple", "kiwi"]

     

     

    to_datetime()

    pandas 라이브러리 함수로 데이터프레임의 열에 있는 날짜, 시간 정보를 처리하고 조직하는데 유용하다. 

    pandas의 datetime 형식으로 변환해야 pandas에서 처리하기 쉽기 때문에, 

    다양한 형식으로 저장되어 있는 날짜, 시간 정보를 to_datetime() 함수로 변환하기를 바란다.

     

    import pandas as pd
    
    datetime_str = '2021-09-30 15:30:00'
    datetime_obj = pd.to_datetime(datetime_str)
    datetime_obj
    #Timestamp('2021-09-30 15:30:00')

    예를 들어 위의 datetime_str은 겉보기에는 날짜, 시간 형식이지만 str 형태이다. 

    따라서 pd.to_datetime()을 이용해 판다스의 timestamp 속성으로 바꿀 수 있다. 

     

    다른 예를 보자.

    아래의 데이터 프레임의 date_utc의 속성 값은 날짜, 시간으로 되어 있다. 하지만 pandas의 형식이 아니기 때문에 자료를 처리, 조직하는데 불편하다. 따라서 to_datetime()으로 형식을 변환해보자. 

    pd.to_datetime(data['date_utc'])

     

     

     

    date()

    판다스의 datatime 객체에서 날짜 정보를 추출하기 위해서는 'date() 매서드를 사용한다. 

    import pandas as pd
    
    datetime_obj = pd.to_datetime('2023-05-28 09:30:00')
    date_only = datetime_obj.date()
    print(date_only)
    #2023-05-28

     

     

     

    datetime.date(2023, 5, 23) 

    datetime.date(연.월.일)은 파이썬의 내장 datetime 모듈의 date 클래스를 사용하여 날짜 정보를 나타내는 객체를 생성하는 코드이다. 

    시간 정보는 없고 날짜 코드만 다룬다. 

    import datetime
    
    date_obj = datetime.date(year, month, day)

     

     

    dt

    판다스에서 datatime 객체에 접근하기 위한 속성이다. 접근자라 불리기도 한다. 

    예를 들어 pandas datetime 객체에서 year, month, day 등과 같은 속성에 접근할 때는

    .dt.year, .dt.month, .dt.day와 같이 사용된다.

    pd.to_datetime(data['date_utc']).dt.year