(11주차) 11월17일
concat
- 강의영상
- import
- data
- pd.concat([...])
- pd.concat([...],axis='columns')
- pd.concat([...],keys=[...])
- pd.concat([...],keys=[...],axis='columns')
- 숙제
-
(1/3) 데이터프레임을 합치는 방법 (1)
-
(2/3) 데이터프레임을 합치는 방법 (2)
-
(3/3) 데이터프레임을 합치는 방법 (3), zip 활용방법
import pandas as pd
df2016=pd.read_csv("https://raw.githubusercontent.com/PacktPublishing/Pandas-Cookbook/master/data/stocks_2016.csv")
df2017=pd.read_csv("https://raw.githubusercontent.com/PacktPublishing/Pandas-Cookbook/master/data/stocks_2017.csv")
df2018=pd.read_csv("https://raw.githubusercontent.com/PacktPublishing/Pandas-Cookbook/master/data/stocks_2018.csv")
df2016
df2017
df2018
pd.concat([df2016,df2017,df2018])
pd.concat([df2016,df2017,df2018]).reset_index()
pd.concat([df2016,df2017,df2018]).reset_index(drop=True)
-
R에서 rbind와 유사하다
-
rbind와의 차이점: 합치려는 데이터 프레임의 columns이 꼭 동일할 필요는 없다.
df2016
df2017.iloc[:,1:]
pd.concat([df2016,df2017.iloc[:,1:]])
-
R에서 cbind와 비슷한 느낌이다. (그런데 row의 숫자가 서로 달라도 괜찮음)
df2016
df2017
df2018
pd.concat([df2016,df2017,df2018],axis='columns')
pd.concat([df2016,df2017,df2018],axis=1)
- 칼럼이 길잖아요.. 그래서 1이에요..
df2016
df2017
df2018
pd.concat([df2016,df2017,df2018],keys=[2016,2017,2018])
-
위의 코드는 아래와 같다.
pd.concat({2016:df2016,2017:df2017,2018:df2018})
-
그런데 {2016:df2016,2017:df2017,2018:df2018}
와 dict(zip([2016,2017,2018], [df2016,df2017,df2018]))
는 같으므로 위의코드는 다시 아래와 같다.
pd.concat(dict(zip([2016,2017,2018],[df2016,df2017,df2018])))
-
의도하지 않은 코드들
pd.concat([df2016,df2017,df2018],keys=[2016,2017])
pd.concat([df2016,df2017,df2018],keys=[2016,2018])
pd.concat([df2016,df2017,df2018],keys=[2016,2017,2018,2019])
df2016
df2017
df2018
pd.concat([df2016,df2017,df2018],axis=1)
pd.concat([df2016,df2017,df2018],axis=1,keys=[2016,2017,2018])
pd.concat({2016:df2016,2017:df2017,2018:df2018},axis=1)
pd.concat(dict(zip([2016,2017,2018],[df2016,df2017,df2018])),axis=1)
-
예제1~5의 결과를 타이디한 데이터로 바꿔볼 것 (제출의무는 없음)