df.drop('Indicator',axis=1,inplace=True)
#indicator , 열, 원본에 대입 삭제
df['First Tooltip'] = df['First Tooltip'].map(lambda x: float(x.split("[")[0]))
#x.split을 [ 기준으로 나눠 첫번째 것만 실수로 선택하는 매핑
pivot과 pivot_table은 두 함수 모두 데이터프레임을 재구성하여 새로운 데이터프레임을 생성하는데 사용되지만, 그들 사이에는 몇 가지 중요한 차이점이 있습니다.
1. 기능 차이: pivot 함수는 단순히 데이터프레임을 재구성하는 기능만 제공합니다.
반면, pivot_table 함수는 추가로 그룹별로 데이터를 집계(agg)하는 기능도 제공합니다. pivot_table 함수에 aggfunc 매개변수를 통해 평균, 합계 등의 집계 함수를 지정할 수 있습니다.
2. 다중 인덱스 처리: pivot_table은 pivot에 비해 다중 인덱스(multi-index)를 더 잘 처리합니다. pivot은 하나의 인덱스를 기준으로 피벗하는 반면, pivot_table은 여러 개의 인덱스를 동시에 처리할 수 있습니다.
3. 중복 데이터 처리: pivot 함수는 중복 데이터에 대해 에러를 발생시킵니다. 즉, 같은 인덱스와 열에 해당하는 값이 두 개 이상 존재하면 pivot 함수를 사용할 수 없습니다. 반면, pivot_table 함수는 중복 데이터를 집계 함수(aggfunc)를 사용하여 하나의 값으로 변환하여 처리합니다.
따라서, 단순히 데이터프레임의 모양을 바꾸는 경우에는 pivot을, 그룹별로 데이터를 집계하거나 중복 데이터를 처리해야 하는 경우에는 pivot_table을 사용하면 됩니다.
Ans = target.pivot(index='Location',columns='Period',values='First Tooltip')
Ans = df.pivot_table(index='Dim1',columns='Period',values='First Tooltip',aggfunc='mean')
kr.pivot_table(index='Year', columns='Medal', aggfunc='size').fillna(0)
concat 은 데이터를 좌우, 위아래로 합칠 때
merge 는 join 개념
merge와 concat은 모두 pandas에서 두 개 이상의 데이터프레임을 결합하는데 사용되는 함수입니다.
merge 함수는 SQL의 JOIN과 유사하며, 특정 공통 열이나 인덱스를 기준으로 두 데이터프레임을 결합합니다. merge 함수는 기본적으로 내부 결합(inner join)을 수행하지만, how 인자를 통해 외부 결합(outer join), 왼쪽 결합(left join), 오른쪽 결합(right join) 등도 수행할 수 있습니다.
concat 함수는 주로 데이터프레임을 수직으로(위/아래) 결합하는 데 사용됩니다. 하지만 axis 인자를 통해 수평으로(왼쪽/오른쪽) 결합하는 것도 가능합니다. concat 함수는 join 인자를 통해 결합 방식을 지정할 수 있으며, 기본적으로 외부 결합(outer join)을 수행합니다.
join 함수
join 함수는 merge 함수를 기반으로 하며, 두 데이터프레임의 인덱스를 기준으로 결합합니다. 특히, join 함수는 기본적으로 왼쪽 결합(left join)을 수행하며, how 인자를 통해 다른 종류의 결합도 수행할 수 있습니다.
join 함수와 merge 함수 중 어느 것이 더 많이 사용되는지는 상황에 따라 다릅니다. 만약 두 데이터프레임을 공통 열을 기준으로 결합하려면 merge 함수를, 인덱스를 기준으로 결합하려면 join 함수를 사용하면 됩니다. 이때, join 함수는 merge 함수에 비해 문법이 더 간결하여 인덱스를 기준으로 결합하는 경우에는 join 함수를 더 선호하는 경향이 있습니다.
pd.concat([df5,df6], axis=0)
#axis 행기준
pd.concat([df3,df4].join='inner')
#join을 쓸 수 있으나 merge에서 더 자주 쓰임
pd.merge(df5,df6, on='Algeria', how='inner').fillna()
pd.merge(df5,df6, on='Algeria', how='outer').fillna()