728x90
반응형
- 데이터프레임 합치기
- concat(): 행 혹은 열 방향을 데이터프레임을 이어 붙이는 개념
import pandas as pd
df1 = pd.DataFrame({
"A": ["A0", "A1", "A2", "A3"],
"B": ["B0", "B1", "B2", "B3"],
"C": ["C0", "C1", "C2", "C3"],
"D": ["D0", "D1", "D2", "D3"]
},
index = [0,1,2,3],
)
df2 = pd.DataFrame({
"A": ["A4", "A5", "A6", "A7"],
"B": ["B4", "B5", "B6", "B7"],
"C": ["C4", "C5", "C6", "C7"],
"D": ["D4", "D5", "D6", "D7"]
},
index = [4, 5, 6, 7],
)
df3 = pd.DataFrame({
"A": ["A8", "A9", "A10", "A11"],
"B": ["B8", "B9", "B10", "B11"],
"C": ["C8", "C9", "C10", "C11"],
"D": ["D8", "D9", "D10", "D11"]
},
index = [8, 9, 10, 11],
)
result = pd.concat([df1, df2, df3])
df4 = pd.DataFrame({
"B": ["B2", "B3", "B6", "B7"],
"D": ["D2", "D3", "D6", "D7"],
"F": ["F2", "F3", "F6", "F7"]
},
index = [2,3,6,7],
)
result = pd.concat([df1, df4]) # 없는 값은 NaN으로 채워짐. 두 개의 데이터프레임을 합치면 기존의 인덱스들이 그대로 유지
result = pd.concat([df1, df4], ignore_index = True) # 인덱스가 초기화됨.
result = pd.concat([df1, df4], axis=1) # 열 방향으로 데이터를 합치라는 의미. 열 방향으로 합칠 때는 행 인덱스를 기준으로 합침
# concat() 함수는 default로 합집합 형태로 합쳐짐. 교집합을 기준으로 합치려면 join = inner 인자 추가
# DataFrame에 series를 합칠 수 있습니다.
- merge: 기준이 되는 열이나 인덱스 즉, 키를 기준으로 두 데이터프레임을 합칩니다.
- inner join: 양쪽 데이터프레임에서 기준이 되는 열의 데이터가 모두 있는 교집합 부분만 반환
- left join: 왼쪽 데이터프레임은 유지가 되며, 오른쪽 데이터프레임이 키를 기준으로 합쳐짐
- right join: 오른쪽 데이터프레임이 유지가 되며, 왼쪽 데이터프레임이 키를 기준으로 합쳐짐.
- outer join: 데이터프레임 중 어느 한 쪽에만 속하더라도 상관없이 합집합 부분을 반환
DataFrame.merge(left, right, on="기준 열 이름") # inner join
DataFrame.merge(left, right, on= "기준 열 이름", how = 'left') # left join
DataFrame.merge(left, right, on= "기준 열 이름", how = 'right') # right join
DataFrame.merge(left, right, on= "기준 열 이름", how = 'outer') # outer join. 빈 값은 NaN
DataFrame.merge(left, right, left_on = "왼쪽 데이터프레임 기준 열 이름", right_on = "오른쪽 데이터프레임 기준 열 이름", how="inner") # 왼쪽, 오른쪽 데이터프레임의 기준 열을 다르게 설정하고 싶을 경우
left.merge(rihgt, left_on = "왼쪽 데이터프레임 기준 열 이름", right_on = "오른쪽 데이터프레임 기준 열 이름", how = 'inner') # 이런 식으로 한 데이터 프레임을 기준으로 간략하게 사용가능
- join: 행 메서드를 기준으로 결합
import pandas as pd
left = pd.DataFrame({
"A": ["A0", "A1", "A2", "A3"],
"B": ["B0", "B1", "B2", "B3"]},
index=["K0","K1","K2","K3"]
)
right = pd.DataFrame({
"A": ["A0", "A1", "A3", "A4"],
"B": ["B0", "B1", "B3", "B4"]},
index=["K0","K1","K3","K4"]
)
result = left.join(right) # 인덱스를 기준으로 데이터 프레임이 붙는다.
- 데이터 재구조화
- melt : ID 변수를 기준으로 원본 데이터프레임의 열 이름들을 variable 열에, 각 열에 있던 데이터는 value 열에 넣어 아래로 긴 형태로 만듦
- pivot_table: 엑셀의 피벗 테이블과 비슷. index: 행 인덱스, columns: 열 인덱스, values: 데이터 값, aggfunc: 데이터 집계 함수
- stack: 열 인덱스를 행 인덱스로 변환
- unstack: 행 인덱스를 열 인덱스로 변환
- 데이터프레임에 함수 적용
- apply: 시리즈나 데이터프레임의 개별 원소에 함수를 적용할 수 있습니다. (사용자가 직접 만든 함수, lambda함수도 적용 가능)
- 각 열에 적용: DataFrame.apply(함수) 또는 DataFrame.apply(함수, axis = 0)
- 각 행에 적용: DataFrame.apply(함수, axis = 1)
- 그룹 연산
데이터를 특정 기준에 따라 그룹으로 나눈 후 처리하는 작업. 일반적으로 다음 세 단계를 거칩니다.
- 분할(split): 데이터를 특정 기준에 따라 분할. groupby()
- 적용(apply): 데이터를 집계, 변환, 필터링하는 메서드 적용. 사용자가 함수를 직접 만든 후 그룹 객체에 적용할 때는 agg(). agg() 메서드를 이용할 경우 그룹 별로 연산을 위한 함수를 적용. tranform() 메서드를 이용할 경우 그룹 별로 함수를 적용하는 것은 agg()와 동일하지만 그 결과를 본래의 행 인덱스와 열 인덱스를 기준으로 반환. apply()를 통해 그룹별로 전체에 적용가능
- 결합(combine): 적용의 결과를 하나로 결합
- 시계열 데이터 다루기
시계열 데이터: 시간을 기준으로 측정된 자료. 주가나 재무재표 등이 해당
- to_datetime: datetime 타입으로 변경
728x90
반응형
'Programming Language > Python' 카테고리의 다른 글
[Python] Python과 SQL 연결 (0) | 2023.12.29 |
---|---|
[Python] ValueError: invalid literal for int() with base 10: '1.70 (0) | 2023.12.29 |
[Python] 데이터 시각화(matplotlib, pandas, seaborne) (0) | 2023.12.29 |
[Python] Pandas package - 1 (0) | 2023.12.29 |
[Python] Mac How to fix ModuleNotFoundError: No module named 'Crypto' (1) | 2023.12.29 |