사용방법: 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")

판다스 올해 초 책 구매해서 조금 사용해보고 오랜만이다.
확실히 그냥 책만 가지고 공부할 때랑 강의를 들으면서 적용해보는 거랑 이해도가 다르지만 진도가 너무 빨라서 머리에 다 들어올지가 의문,,,ㅎㅎ
외우기보단 우선 이해를 목적으로 학습 중
"이 글은 제로베이스 데이터 취업 스쿨 강의 자료 일부를 발췌한 내용이 포함되어 있습니다."