ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python Pandas (1. Pandas에서 데이터 연산하기)
    Python/Python 2020. 2. 4. 15:51
    반응형

    NumPy 의 기본 중하나는 기본 산술 연산 과 복잡한 연산 

     모두에서 연산을 빠르게 수행 할 수 있다는 점이다 . Pandas는 Numpy로부터 이러한 기능들을 대부분 

    상속 받았다 . 

     

    # Pandas 는 몇가지 특성을 가지고 있다 .
    # 부정함수와 삼각함수 같은 단항 연산의 경우에는 유니버셜 함수가 결과물에 인덱스와 열 레이블을 보존하고
    # 이항 연산의 경우 자동으로 인덱스를 보존한다
    import pandas as pd
    import numpy as np
    rng = np.random.RandomState(42)
    ser = pd.Series(rng.randint(0,10,4))
    ser

     

    df = pd.DataFrame(rng.randint(0,10,(3,4)) , columns=['A','B','C','D'])
    df

     

     

    np.exp(ser) #exp 지수연산 . 

     

    np.sin(df * np.pi / 4) #좀더 복잡한 연산 
    

     

     

    #유니버설 함수 : 인덱스 정렬
    #두 개의 Series 또는 DataFrame 객체에 이항 연산을 적용하는 경우
    #Pandas는 연산 수행과정에서 인덱스를 정렬한다 . 
    
    area = pd.Series({'Alaska' : 172337 , 'Texas' : 695662 , 'California' : 423967} , name='area' )
    population = pd.Series({'California' : 38332521 , 'Texas' : 26448193, 'New York': 19651127 }, name='population')
    #결과 배열은 두 입력 배열의 인덱스의 합집합을 담고 있다.
    population/area

    area.index | population.index

    #둘 중 하나라도 값이 없는 항목은 NaN 으로 처리된다 .
    A = pd.Series([2,4,6] , index=[0,1,2])
    B = pd.Series([1,3,5] , index=[1,2,3])
    A+B

     

    #NaN 값 사용을 원치 않을경우 A나 B에서 누락된 요소의 채우기 값을 선택해 명시적으로 지정가능
    A.add(B,fill_value=0)

    # DataFrame에서 인덱스 정렬 
    A = pd.DataFrame(rng.randint(0,20,(2,2)) , columns=list('AB'))
    A

    B = pd.DataFrame(rng.randint(0,10,(3,3)) , columns=list('BAC'))
    B

     

    #두 객체의 순서와 상관없이 인덱스가 올바르게 정렬되고 결과 인덱스가 정렬된다.
    A + B

    #누락 된 값은 Series와 마찬가지로 fill_value를 전달할 수 있다.
    fill = A.stack().mean()
    A.add(B, fill_value=fill)

    # DataFrame 과 Series 간의 연산할 때 인덱스와 열의 순서는 비슷하게 유지된다. 
    # DataFrame 과 Serise 사이의 연산은 2차워s Numpy 배열과 1차원Numpy 배열 사이의 연산과 비슷하다.
    A = rng.randint(10 , size = (3,4))
    A
    

    A - A[0]

    #Pandas 에서도 연산 규칙이 기본적으로 행방향으로 적용된다 .
    df = pd.DataFrame (A , columns=list('QRST'))
    df - df.iloc[0]

     

    #열 방향으로 연산할려면
    df.subtract(df['R'] ,axis=0 )

    halfow = df.iloc[0, ::2]
    halfow

     

    df - halfow

    반응형

    댓글

Designed by Tistory.