pbj0812의 코딩 일기

[Python] Pandas 를 이용한 SQL 스러운 데이터 전처리 본문

ComputerLanguage_Program/PYTHON

[Python] Pandas 를 이용한 SQL 스러운 데이터 전처리

pbj0812 2021. 2. 16. 01:23

0. 목표

 - Python 의 Pandas 를 이용하여 SQL 스럽게 데이터 전처리 하기

1. 실습

 1) SELECT

  (1) 필드 하나

df = pd.DataFrame({'a' : [1, 2, 3, 4, 1], 'b' : [2, 3, 4, 5, 6], 'c' : [2, 4, 6, 8, 6]})

df['a']

  (2) 필드 여러개

df[['a', 'b']]

  (3) 행 인덱스로 접근

df.loc[0]

  2) WHERE

   - a 가 3 이상

df[df['a'] >= 3]

   - a 가 3 이상이고 b 가 5 미만

a = ((df['a'] >= 3) & (df['b'] < 5))
df.loc[a]

 3) CASE

def case(x):
    if x < 2:
        return '2 미만'
    elif x < 4:
        return '4 미만'
    else:
        return '4 이상'
        
df['case test'] = df.apply(lambda df : case(df['a']), axis = 1)

df

 4) GROUP BY

  - 필드 하나

df = pd.DataFrame({'a' : [1, 2, 3, 4, 1], 'b' : [2, 3, 4, 5, 6], 'c' : [2, 4, 6, 8, 6]})
df.groupby(by = ['a'], as_index = False).count()

   - 필드 여러개

df.groupby(by = ['a', 'b'], as_index = False).count()

 5) ORDER BY

import copy
df2 = copy.deepcopy(df)

df2.sort_values(by = ['a'], ascending=False)
df2.reset_index()

 6) LIMIT

  - head

df.head(2)

   - tail

df.tail(2)

 7) DISTINCT 

df = pd.DataFrame({'a' : [1, 2, 3, 4, 5, 1], 'b' : [2, 4, 6, 8, 10, 1]})

a = df['a']

a.unique()

 8) UNION

df = pd.DataFrame({'a' : [1, 2, 3, 4, 5], 'b' : [2, 4, 6, 8, 10]})
pd.concat([df, df], axis = 0)

 9) INNER JOIN

df = pd.DataFrame({'a' : [1, 2, 3, 4, 5], 'b' : [2, 4, 6, 8, 10]})
df2 = pd.DataFrame({'a' : [1, 2, 3, 5], 'c' : [2, 5, 7, 9]})

pd.merge(df, df2, how = 'inner', on = 'a')

 10) LEFT JOIN

result = pd.merge(df, df2, how = 'left', on = 'a')

 11) NULL 값 채우기

result.fillna(0)

2. 참고

 - Replace NaN Values with Zeros in Pandas DataFrame

 - join

 - 17. 파이썬 pandas DataFrame(5) 병합(merge)

 - pandas.Series.unique

 - pandas.DataFrame.sort_values

 - [pandas] 열 또는 행 선택하기

 - python - 여러 조건으로 데이터 프레임을 필터링하는 좋은 파이썬 방법이 있습니까?

 - [ Python ] Pandas Lambda, apply를 활용하여 복잡한 로직 적용하기

 - 인덱싱

Comments