#정리
#10concatenate - 데이터프레임 병합
#(넘파이)np.concatenate([df1,df2])
- print(np.concatenate([df1,df2]))
- print(np.concatenate([df2,df3],axis=1))#(판다스)pd.merge(df1,df2)
** inner join 형태는 공통 컬럼(key)가 있을 때, 병합 가능
- print(pd.merge(df1,df2,on='key',how='inner')) #양측 다 있는 key(a,b)로만 조인
- print(pd.merge(df1,df2,on='key',how='outer')) #full outer
- print(pd.merge(df1,df2,on='key',how='left')) #left outer (좌측 기준, 우측 nan발생)
- print(pd.merge(df1,df2,on='key',how='right')) #right outer (우측 기준, 좌측 nan발생)#11groupby - 데이터 그룹바이
#groupby( )."옵션" : groupby는 목적에 맞게 합계,평균,카운트,최대/최소 등의 옵션을 붙인다.
- print(df_emp.groupby(df_emp['dept_id'])) #그룹바이 오브젝트 메모리 주소로 반환
- print(df_emp[['dept_id','salary']].groupby('dept_id').sum()) #각 부서별 연봉 합계 반환
- print(df_emp[['dept_id','salary']].groupby('dept_id').mean()) #각 부서별 연봉 평균 반환
#10concatenate - 데이터프레임 병합
#(넘파이)np.concatenate([df1,df2])
- print(np.concatenate([df1,df2]))
- print(np.concatenate([df2,df3],axis=1))
#(판다스)pd.merge(df1,df2)
** inner join 형태는 공통 컬럼(key)가 있을 때, 병합 가능
- print(pd.merge(df1,df2,on='key',how='inner')) #양측 다 있는 key(a,b)로만 조인
- print(pd.merge(df1,df2,on='key',how='outer')) #full outer
- print(pd.merge(df1,df2,on='key',how='left')) #left outer (좌측 기준, 우측 nan발생)
- print(pd.merge(df1,df2,on='key',how='right')) #right outer (우측 기준, 좌측 nan발생)
--예문 코드 보기--
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
print("---------------")
dict = {'data1':range(100,107),
'key':['b','b','a','c','a','a','b']}
df1 = pd.DataFrame(dict)
print(df1)
print("---------------")
dict = {'data2':range(100,103),
'key':['a','b','d']}
dict = {'key':['a','b','d']
,'data2':range(100,103)}
df2 = pd.DataFrame(dict)
print(df2)
print("---------------")
dict = {'data3':range(10,13),
'key3':['x','y','z']}
df3 = pd.DataFrame(dict)
print(df3)
print("---(넘파이)np.concatenate([df1,df2])----")
print(np.concatenate([df1,df2]))
print(np.concatenate([df2,df3]))
#print(np.concatenate([df1,df2],axis=1)) #error - 행 갯수가 달라서 에러남
print(np.concatenate([df2,df3],axis=1))
print("---(판다스)pd.merge(df1,df2)----")
#공통 컬럼(key)가 있을 때, 병합 가능 (inner join 형태)
print(pd.merge(df1,df2,on='key',how='inner')) #양측 다 있는 key(a,b)로만 조인
print(pd.merge(df1,df2,on='key',how='outer')) #full outer
print(pd.merge(df1,df2,on='key',how='left')) #left outer (좌측 기준, 우측 nan발생)
print(pd.merge(df1,df2,on='key',how='right')) #right outer (우측 기준, 좌측 nan발생)
print("---(판다스)pd.merge(df1,df2) 응용 mission ----")
emp = {
'emp_id':[100,101,200,201,300,400],
'name':('kim','lee','choi','han','gang','yoon'),
'salary':[8000000,7000000,7500000,5000000,4000000,6000000],
'dept_id':[1,1,2,2,3,4],
'location':['seoul','seoul','busan','busan','daegu','incheon']
}
df_emp = pd.DataFrame(emp)
print(df_emp)
print("--------")
dept = {
'dept_id':[1,2,3,4,5,6],
'dept_name':['web','game','temp1','temp2','temp3','temp4']
}
df_dept = pd.DataFrame(dept)
print(df_dept)
print("--------")
#df_emp + 부서명이 나오도록.
merge_df = pd.merge(df_emp,df_dept,on='dept_id',how='left')
print(merge_df)
print(pd.DataFrame(merge_df, columns = ['emp_id','name','salary','dept_id','dept_name','location']))
print(pd.DataFrame(merge_df, columns = ['dept_id','dept_name','name','location']))
print("--------")
#11groupby - 데이터 그룹바이
#groupby( )."옵션" : groupby는 목적에 맞게 합계,평균,카운트,최대/최소 등의 옵션을 붙인다.
- print(df_emp.groupby(df_emp['dept_id'])) #그룹바이 오브젝트 메모리 주소로 반환
- print(df_emp[['dept_id','salary']].groupby('dept_id').sum()) #각 부서별 연봉 합계 반환
- print(df_emp[['dept_id','salary']].groupby('dept_id').mean()) #각 부서별 연봉 평균 반환
--예문 코드 보기--
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
print("---------------")
emp = {
'emp_id':[100,101,200,201,300,400],
'name':('kim','lee','choi','han','gang','yoon'),
'salary':[8000000,7000000,7500000,5000000,4000000,6000000],
'dept_id':[1,1,2,2,3,4],
'location':['seoul','seoul','busan','busan','daegu','incheon']
}
df_emp = pd.DataFrame(emp)
print(df_emp)
print("---------------")
print(df_emp.groupby(df_emp['dept_id']))
print("---------------")
#groupby 목적... 합계,평균,최소,최대,카운팅
print(df_emp[['dept_id','salary']])
print(df_emp[['dept_id','salary']].groupby('dept_id').sum())
print(df_emp[['dept_id','salary']].groupby('dept_id').mean())
'Python' 카테고리의 다른 글
[Python] 판다스(pandas)_8. 파일 쓰기/읽기 (CSV, EXCEL, JSON) (0) | 2022.04.16 |
---|---|
[Python] 판다스(pandas)_7.pivot - 데이터프레임 재구성 (0) | 2022.04.16 |
[Python] 판다스(pandas)_6.operator - 연산자, function - 데이터 프레임 함수 (0) | 2022.04.16 |
[Python] 판다스(pandas)_5. df_sort - 인덱스, df_boolean - 조건식 데이터 추출, drop - 열, 행 삭제 (0) | 2022.04.16 |
[Python] 판다스(pandas)_4.데이터프레임 속 시리즈(df_Series), indexing, slicing, transpose, values (0) | 2022.04.16 |