삶의 공유
[Python기초] Pandas (연산, 함수, Concat, Merge) 본문
지난 포스팅에 이어서 이번 포스팅에서도 Pandas 라이브러리의 응용과정을 알아보겠습니다.
앞 포스팅을 안보셨던 분들은 아래 링크 클릭 해주시면 됩니다!
이번에는 Dataframe을 가지고 지지고 볶고 하는 데이터분석을 위한 기초를 쌓는 과정이라고 보시면 됩니다.
먼저 DataFrame을 만들어보겠습니다.
bank_client_df = pd.DataFrame({'Bank client ID':[111,222,333,444],
'Bank client Name':['Chanel','Steve','Mitch','Ryan'],
'New Worth [$]':[3500,29000,10000,2000],
'Years with bank':[3,4,9,5]})
bank_client_df
Pandas의 기능
1) 단골 고객을 찾기 위해 Year with bank 의 컬럼에서 5년이상 된 고객들의 데이터를 별도로 구분해보기
df_loyal = bank_client_df[(bank_client_df['Years with bank'] >= 5 )]
df_loyal
2) Bank client ID 컬럼을 삭제해보기.
del bank_client_df['Bank client ID']
bank_client_df
3) 판다스 Dataframe에 함수 적용 시켜보기
: 먼저 함수를 하나 정의합니다. balance를 인자로 받아서 해당 인자에 곱하기 1.1을 해서 리턴 해주는 함수입니다.
즉 원금에 10%의 이자를 더해서 리턴 해준다고 보시면 됩니다.
def networth_update(balance):
return balance *1.1
: Dataframe의 "Net Worth [$]" 컬럼에 networth_update 함수를 적용 하겠다라는 의미 입니다.
: 해당 코드가 실행이 되면 위 함수의 인자 balance 에 "Net Worth [$]" 컬럼의 항목들 3500, 29000, 10000, 2000 값들이 들어가
는 것 입니다.
bank_client_df['New Worth [$]'].apply(networth_update)
4) 판다스 내장함수 sum을 이용하여 Year with bank 합계 구해보기
bank_client_df['Years with bank'].sum()
21
SORTING AND ORDERING
1) Year with Bank 컬럼을 기준으로 오름 차순으로 정렬해보기
: sort_values 함수를 사용하면 됩니다.
: by= 의 의미는 해당 컬럼을 기준으로 정렬하겠다 라는 의미 입니다. 오름차순이 defaul입니다.
bank_client_df.sort_values(by = 'Years with bank')
: 여기서 중요한 점은 bank_client_df을 다시 호출 해보면 이렇게 변경 되지 않음을 볼 수있습니다. 즉 bank_client_df의 메모리에 있는 Dataframe을 변경 한 것이 아니라, 메모리로 해당 값(데이터프레임)을 임시로 복사해와서 그 값을 복사 한 후 코드가 종료 된 후 메모리에서 삭제 되었다고 보시면 됩니다.
2) bank_client_df을 year with bank컬럼 기준으로 변경 시켜보기
: inplace= 의 의미가 해당 데이터프레임에 실제 메모리에 접근해서 변경을 하겠다 라는 의미 입니다.
bank_client_df.sort_values(by = 'Years with bank', inplace=True)
bank_client_df
Concat & Merge
자 먼저 2개의 데이터 프레임을 정의해보겠습니다.
raw_data = {'Bank Client ID':['1','2','3','4','5'],
'First Name':['Nancy', 'Alex', 'Shep', 'Max','Allen'],
'Last Name':['Rob','Ali','George','Mitch','Steve']
}
Bank_df_1 = pd.DataFrame(raw_data, columns=['Bank Client ID', 'First Name', 'Last Name'])
Bank_df_1
raw_data = {'Bank Client ID':['6','7','8','9','10'],
'First Name':['Bill', 'Dina', 'Sarah', 'Heather','Holly'],
'Last Name':['Christian','Mo','Steve','Bob','Michelle']
}
Bank_df_2 = pd.DataFrame(raw_data, columns=['Bank Client ID', 'First Name', 'Last Name'])
Bank_df_2
자 이 2개의 데이터 프레임을 합치려고 합니다 이때 사용 하는 판다스 함수 중 하나인 concat 을 사용 할 것 입니다.
: 컬럼 기준으로 Matching을 하고 동일한 컬럼이 있으면 그 밑에 이어 붙이게 됩니다.
1) concat함수를 이용하여 데이터 프레임 수직으로 이어 붙이기
bank_df_all = pd.concat([Bank_df_1, Bank_df_2])
bank_df_all
merge함수를 적용 하기 전에 데이터 프레임을 하나 더 만들겠습니다.
raw_data = {'Bank Client ID':['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'],
'Annual Salary [$/year]':[25000, 35000, 45000, 48000, 49000, 32000, 33000, 34000, 32000, 31000]
}
bank_df_salary = pd.DataFrame(raw_data, columns=['Bank Client ID', 'Annual Salary [$/year]'])
bank_df_salary
merge함수를 이용하여 기존에 만들어둔 bank_df_all이라는 데이터 프레임에 Bank client ID를 기준으로 matching되는 것을 찾아 Annualy Salary를 붙일 것 입니다. Matching되는 부분이 없다면 NaN으로 나올것입니다.
2) merge함수를 이용하 Annual Salary 컬럼 수평으로 이어 붙이기
: on= 의 의미는 해당 컬럼을 기준으로 서로 다른 2개의 데이터 프레임을 Matching을 진행 하겠다
bank_df_all = pd.merge(bank_df_all, bank_df_salary, on = 'Bank Client ID')
bank_df_all
이렇게 해서 Numpy에 이어 Pandas까지 공부를 해보았습니다. 어려우셨을 수도 있겠지만 여러번 반복 하다 보면 어느정도 익숙해지면서 감이 잡히실 것 입니다.
'Data Scientist > Python' 카테고리의 다른 글
[Python활용] Chrome Driver 설치 및 Selenium 활용 (3) | 2022.01.11 |
---|---|
[Python기초] Matplotlib로 시각화 다루기 (0) | 2022.01.09 |
[Python활용] 텍스트 마이닝 - 네이버 API 이용신청 (0) | 2022.01.04 |
[Python 기초] Pandas(dataframe만들기, CSV/HTML로 Data 불러오기) (0) | 2022.01.04 |
[Python활용]텍스트 마이닝 - 데이터 수집 (0) | 2022.01.02 |