사용방법: import pandas as pd
import pandas as pd
import numpy as np
s = pd.Series([1, 3, 5, np.nan, 6, 8])
s
pd.Series([1, 2, 3, 4], dtype=np.float64)
pd.Series([1, 2, 3, 4], dtype=str)
pd.Series([1, 2, 3, 4], dtype=str)
pd.Series({"Key":"Value"})
dates = pd.date_range("20230101", periods=6)
dates
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=["A", "B", "C", "D"])
df
np.random.randn(6, 4): 6행 4열, 표준 정규 분포에서 샘플링한 난수 생성
index: 앞서 생성한 dates 변수
columns: 컬럼명
# 표준 정규 분포에서 샘플링한 난수 생성
np.random.randn(6, 4)
B 컬럼을 기준으로 ascending=False로 정렬
df.sort_values(by="B", ascending=False)
💡df 원본 데이터를 바뀌지 않는다. 따라서 inplace="True" 적용을 해야 원본 데이터가 바뀐다.
df.sort_values(by="B", ascending=False, inplace=True)
df["A"]
💡 데이터 타입
pandas의 Series 데이터 타입
df.A
# 두 개 이상 컬럼 선택
df[["A", "B"]]
df[:4]
df["20230102":"20230104"]
df.loc[:, ["A","B"]]
df.loc["20230102":"20230104", ["A","B"]]
df.loc["20230103", ["A","B"]]
df.iloc[3]
df.iloc[3, 2]
df.iloc[3:5, 0:2]
df.iloc[[1, 2, 4], [0, 2]]
df.iloc[:, 1:3]
df[df["A"] > 0]
NaN : Not a Number
df[df > 0]
- 기존 컬럼이 없으면 추가
- 기존 컬럼이 있으면 수정
df["E"] = ["one" ,"one", "two", "three", "four", "three"]
df
특정 요소가 있는지 확인
df["E"].isin(["two", "four"])
df[df["E"].isin(["two", "four"])]
방법 1: del
방법 2: drop
del df["E"]
df
axis=0 가로, axis=1 세로
df.drop(["D"], axis=1) # axis=0 가로, axis=1 세로
df.drop(["D"])
axis = 축
axis=0인 경우는 인덱스를 작성해줘야한다.
df.drop(["20230102"], axis=0) # axis=0 가로, axis=1 세로
함수를 적용
df["A"].apply("sum")
df[["A", "D"]].apply("sum")
df["A"].apply(np.sum)
df.apply(np.sum)
df["A"].apply("mean")
df["A"].apply("min"), df["A"].apply("max")
numpy의 cumsum(누적합) 함수를 이용하면 적용된다.
# 각 컬럼 누적합
df.apply(np.cumsum)
def plusminus(num):
return "plus" if num > 0 else "minus"
df["A"].apply(plusminus)
df["A"].apply(lambda num: "plus" if num > 0 else "minus")
열 값 기준으로 데이터가 들어감
# 딕셔너리 안의 리스트 형태
left = pd.DataFrame({
"key": ["K0", "K4", "K2", "K3"],
"A": ["A0", "A1", "A2", "A3"],
"B": ["B0", "B1", "B2", "B3"]
})
left
행 기준으로 데이터가 들어감
# 리스트 안의 딕셔너리 형태
pd.DataFrame([
{"key": "K0", "C": "C0", "D": "D0"},
{"key": "K1", "C": "C1", "D": "D1"},
{"key": "K2", "C": "C2", "D": "D2"},
{"key": "K3", "C": "C3", "D": "D3"}
])
- pd.concat()
- pd.merge()
- pd.join()
양 쪽 데이터 프레임 중에서 "key"라는 컬럼을 기준 키 값으로 잡고 병합하라.
💡how="inner" 생략 가능 - 디폴트값
pd.merge(left, right, on="key")
pd.merge(left, right, how="inner", on="key")
left, right 데이터프레임을 "key"라는 컬럼 이름으로 병합하는데 합집합을 기준으로 데이터를 병합하라.
pd.merge(left, right, how="outer", on="key")
left, right 데이터프레임을 "key"라는 컬럼 이름으로 병합하는데 left 데이터 키 값을 기준으로 데이터를 병합하라.
pd.merge(left, right, how="left", on="key")
left, right 데이터프레임을 "key"라는 컬럼 이름으로 병합하는데 right 데이터 키 값을 기준으로 데이터를 병합하라.
pd.merge(left, right, how="right", on="key")
판다스 올해 초 책 구매해서 조금 사용해보고 오랜만이다.
확실히 그냥 책만 가지고 공부할 때랑 강의를 들으면서 적용해보는 거랑 이해도가 다르지만 진도가 너무 빨라서 머리에 다 들어올지가 의문,,,ㅎㅎ
외우기보단 우선 이해를 목적으로 학습 중
"이 글은 제로베이스 데이터 취업 스쿨 강의 자료 일부를 발췌한 내용이 포함되어 있습니다."