Appendix. Pandas Reshape 2

dpwl·2024년 4월 29일
0

Data Analysis with SQL

목록 보기
9/120

1. concat()

concat() 함수는 Pandas에서 사용되는 데이터프레임을 합치는 함수이다. 이 함수를 사용하면 여러 개의 데이터프레임을 행 또는 열 방향으로 합칠 수 있다.

  • 기본적으로 concat() 함수는 행 방향(axis=0)으로 데이터프레임을 연결한다. 이 경우에는 인덱스가 연속적으로 증가한다.
pd.concat([df1, df2])
  • 수평 방향(axis=1)으로 연결하려면 axis 매개변수를 1로 설정하면 되며 이 경우에는 열이 연속적으로 증가한다.
pd.concat([df1, df2], axis=1)
sales_day1 = pd.DataFrame(
        {"date" : ["2023-07-01","2023-07-01", "2023-07-01", "2023-07-01", "2023-07-01"] ,
        "category1" : ["메인", "메인", "사이드", "음료", "사이드"] ,
        "category2" : ["양념치킨", "간장치킨", "치즈볼", "콜라", "감자튀김"],
        "count" : [1, 2, 1, 4, 1], 
        "price" : [20000, 50000, 6000, 8000, 8000]})

sales_day1
sales_day2 = pd.DataFrame(
        {"date" : ["2023-07-02","2023-07-02", "2023-07-02", "2023-07-02", "2023-07-02"] ,
        "category1" : ["사이드", "메인", "메인", "음료", "메인"] ,
        "category2" : ["국물떡볶이", "간장치킨", "후라이드", "제로콜라", "양념치킨"],
        "count" : [1, 3, 1, 3, 2], 
        "price" : [10000, 75000, 18000, 9000, 40000]})

sales_day2
pd.concat([sales_day1, sales_day2])

# 또는

pd.concat([sales_day1, sales_day2], axis=0)

위와 같이 두 개의 데이터프레임인 'sales_day1'과 'sales_day2'를 수직으로 합친다. pd.concat() 함수를 사용하여 두 데이터프레임을 연결할 수 있다. 기본적으로 concat() 함수는 axis=0을 기준(행을 기준으로)으로 데이터를 합친다.

따라서 위의 두 코드 모두 동일한 결과를 반환하며 결과적으로는 'sales_day1'의 아래에 'sales_day2'가 붙은 형태의 새로운 데이터프레임이 생성된다.

pd.concat([sales_day1, sales_day2], axis=1)

위와 같이 두 개의 데이터프레임인 'sales_day1'과 'sales_day2'를 수평으로 합친다. pd.concat() 함수를 사용하여 두 데이터프레임을 연결할 수 있다. 이때 axis=1 옵션을 사용하여 수평 방향(열을 기준)으로 데이터를 합친다. 결과적으로는 두 데이터프레임의 열이 나란히 붙은 새로운 데이터프레임이 생성된다.

sales_day3 = pd.DataFrame(
        {"date" : ["2023-07-03","2023-07-03", "2023-07-03", "2023-07-03"] ,
        "category1" : ["사이드", "메인", "메인", "음료"] ,
        "category2" : ["국물떡볶이", "간장치킨", "후라이드", "제로콜라"],
        "count" : [1, 3, 1, 3], 
        "가격" : [10000, 75000, 18000, 9000]})

sales_day3
pd.concat([sales_day1, sales_day3], axis=0)

만약 하나의 컬럼이 동일하지 않다면, 위의 이미지와 같이 concat을 하는 과정에서 NaN 값이 생긴다.

profile
거북선통통통통

0개의 댓글