pd.date_range("시작날짜",periods=출력할 일수)
pd.date_range("20210101",periods=6)
# 날짜가 20210101부터 6일만큼 출력됨
pd.Series() : index, value로 이루어져 있다.
pd.DataFrame() : index, value, column로 이루어져 있다.
# 임의로 데이터 만들기
data = random.randn(6, 4)
> 6 * 4 행열로 이루어진 표준정규분포에서 샘플링한 난수 생성
dates = pd.date_range("20210101",periods=6)
pd.DataFrame(data = data, index = dates, columns = [A, B, C, D])
위에 데이터가 6 * 4 이기때문데 인덱스 값 6으로 맞춰주고,
컬럼값 4 맞춰줘야 함 (안맞춰주면 오류 뜸)
Pandas의 메서드라서 괄호 붙임
Pandas 객체의 속성값이라 괄호 안붙임
sort_values() : 특정 컬럼(열)을 기준으로 데이터를 정렬한다.
df.sort_values(by = "기준컬럼명")
df.sort_values(by = "B", ascending = True, inplace = True)
한개 컬럼 선택 : 시리즈 타입으로 출력됨
df["A"]
> A 컬럼 선택
두 개이상 컬럼 선택 : 리스트 안에 넣어야 함
df[["A","B"]]
[n:m] : n부터 m-1 까지
[0:3] > 0~2까지(인덱스)
인덱스나 컬럼의 이름으로 slice 하는 경우는 끝을 포함한다.
["A":"C"] > A~C까지
["20210101":"20210104"] > 1일부터 4일까지 포함
["A","C"] > A와 C
loc : index 이름으로 특정 행,열을 선택한다.
loc[:, ["A","B"]]
# 모든 인덱스와 A,B 컬럼 선택
loc["20210101", ["A","B"]]
# 20210101 인덱스와 A,B 컬럼 선택
iloc : 컴퓨터가 인식하는 인덱스 값으로 선택 (눈에 보이지는 않지만 0부터 인덱스값 존재)
iloc[3, 2]
# 3행 2열 데이터 선택
iloc[3:5, 0:2]
# 3, 4 행 0, 1 열 선택
전체 데이터에 마스킹 해주면 조건에 맞는 데이터 출력 가능
ex) A컬럼에서 0보다 큰 숫자(양수)만 선택
# 조건만들기
df["A"]>0 (bool 타입으로 출력됨)
# 전체데이터에서 조건에 맞는 데이터로 출력됨
# 조건에 맞지않으면 NoN으로 출력
# 조건을 다시 데이터프레임에 씌우므로 마스킹 한다고 표현
df[df["A"]>0]
기존 컬럼이 있으면 수정, 없으면 추가됨
행 길이를 원래 데이터와 맞춰주지않으면 오류 발생함
df["E"] = ["one", "two"]
df["E"].isin(["one"])
(bool타입으로 출력됨)
del df["E"]
> E 컬럼 제거
df.drop(["행 인덱스"], axis = 0)
df["A"].apply("sum")
> A컬럼의 합계 출력
#여러개도 가능함
df[["A","B"]].apply("sum")
#numpy로도 가능함
df["A"].apply(np.sum)
ex) 양수,음수 구분 함수 만들기
# 구분 함수만들기
def plusMinus(num):
return "plus" if num > 0 else "minus"
# 함수 적용하기
df["A"].apply(plusMinus)
# lambda 함수 이용하기
df["A"].apply(lambda num: "plus" if num > 0