⚙️ 정렬
📌 정렬에 관한 메서드
- reverse() : 순서를 역순으로 재배치
- sort('reverse=True/False') : 값을 기준으로 정렬
- sorted(list, 'reverse=True/False', 'key=""') : 원본을 유지하며 값을 기준으로 정렬
⚙️ Pandas
📌 Series 연산
- Series + Series : 같은 인덱스의 값끼리 더해준다. 인덱스 값이 없다면 NaN으로 처리된다.
s_data = {"APPL":1000, "MS":2000, "TSLA":1500}
ticker = ["GOOGLE","APPL","MS","META"]
s_1 = pd.Series(s_data, index= ticker)
s_2 = pd.Series(s_data)
s_1 + s_2
📌 결측값 처리
- Series.isnull() : 결측치 존재 확인
- Series.notnull() : 결측치 미포함 여부 확인
# 결측치가 존재하는 부분만 확인
temp[temp.isnull()]
# 결측치가 존재하지 않는 부분만 확인
temp[temp.notnull()]
📌 인덱싱
- .at() : 직접 만든 인덱스로 1개 인덱스에 접근
- .iat() : 정수 인덱스로 1개 인덱스에 접근
- .loc() : 직접 만든 인덱스로 여러 인덱스에 접근
- .iloc() : 정수 인덱스로 여러 인덱스에 접근
📌 Series의 기타 수치연산
- Series.min() : 최솟값 반환
- Series.max() : 최댓값 반환
- Series.count() : 원소의 갯수 반환
📌 DataFrame 자료형
- pd.DataFrame() : 2차원 DataFrame 데이터 생성
d = [1,2,3,4,5]
df = pd.DataFrame(d)
- DataFrame.index : DataFrame의 인덱스 확인
df.index
- DataFrame.columns : DataFrame의 열 확인
df.columns
- DataFrame.shape : 데이터프레임의 가로, 세로 데이터 갯수 확인
df.shape
df.shape[0]
df.shape[1]
- DataFrame.rename() : 데이터프레임의 행, 열 이름 바꾸기
df.rename(columns={0:"시가"}, inplace=True)
- DataFrame.columns.get_loc() : 데이터프레임에서 원하는 칼럼의 위치 찾기
df.columns.get_loc("시가")
df["새로운 칼럼명"] = [1,2,3,4,5...]
del df["col1"]
df.drop("new", axis=1, inplace=True)
df.drop(2, axis=0, inplace=True)
📌 DataFrame의 기타 메서드
- DataFrame.T : 전치행렬 생성
- DataFrame.dtypes : 칼럼의 속성들을 확인
- DataFrame.reindex() : DataFrame의 인덱스 재설정
stock_price_df.reindex(["2023-12-01","2023-12-30"], fill_value=10)
- DataFrame.reset_index() : DataFrame의 인덱스를 정수 인덱스로 초기화
- DataFrame.sort_index() : DataFrame 정렬
# 칼럼을 중심으로 정렬
df.sort_index(axis=1, ascending=True/False)
# 인덱스를 중심으로 정렬
df.sort_index(axis=0, ascending=True/False)
# 칼럼값을 중심으로 정렬
df.sort_values(by=["고가","시가"], ascending=True/False)
- DataFrame["column"].rank() : 선택한 칼럼의 순위 확인
# 종가 칼럼의 순위 반환 (동일 순위는 .5위로 반환)
df["종가"].rank()
# 종가 칼럼의 순위 반환 (동일 순위는 한 순위 높여 동일하게 반환)
df["종가"].rank(method="max", ascending=True/False)
⚙️ 실습
📝 정렬 실습
zumsu_list = [("A",0),("B",1),("C",5),("D",3),("E",5)]
# 그냥 정렬하기
sorted(zumsu_list)
# 키 기준으로 정렬하기
sorted(zumsu_list, key = lambda x: x[0])
# 값 기준으로 정렬하기
sorted(zumsu_list, key = lambda x: x[1])
📝 DataFrame 실습
💡 사용할 데이터
stock_price_df = pd.DataFrame(
data = [10000,13000, 9900, 10500, 11000],
index = ["2023-12-01", "2023-12-02","2023-12-03",
"2023-12-04","2023-12-5"]
)
stock_price_df.rename( columns={0:"시가"}, inplace=True)
stock_price_df["종가"] = [11000, 12000, 10000, 13000, 12000]
stock_price_df["고가"] = [13000, 15000, 15000, 18000, 17000]
stock_price_df["저가"] = [3000, 5000, 5000, 8000, 7000]
💡 rename을 이용해서 기존의 컬럼명을 시가 : S, 종가 : E, 고가 : H, 저가 : L 로 변경하기
stock_price_df.rename(columns={"시가":"S", "종가":"E", "고가":"H", "저가":"L"}, inplace=True)
💡 다시 시가, 종가, 고가, 저가로 컬럼명 변경하기
stock_price_df.rename(columns={"S":"시가", "E":"종가", "H":"고가", "L":"저가"}, inplace=True)
💡 2023년 12월 3일의 시가와 고가의 가격은 얼마인지 확인하기
stock_price_df.loc["2023-12-03", ["시가","고가"]]
💡 2023년 12월 1일부터 4일까지 시가/종가/고가/저가의 데이터 확인하기
stock_price_df.loc["2023-12-01":"2023-12-04", "시가":"저가"]
💡 2023년 12월 3일의 시가 확인하기
stock_price_df.at["2023-12-03", "시가"]
💡 모든 날짜의 시가와 저가 데이터 확인하기
stock_price_df.loc[:,["시가", "저가"]]