코드
data = [
["037730", "3R", 1510, 7.36],
["036360", "3SOFT", 1790, 1.65],
["005760", "ACTS", 1185, 1.28],
]
columns = ["종목코드", "종목명", "현재가", "등락률"]
df = pd.DataFrame(data=data, columns=columns)
df.set_index('종목코드', inplace=True)
답
df [df["현재가"]>=1500]
실행 결과

답
df[ (df["현재가"]>=1500) & (df["현재가"]<1700) ]
실행 결과

데이터프레임 query 메서드를 사용하여 종가(close)가 시가(open)보다 큰 데이터만 가져오세요.
코드
data = [
{"cd":"A060310", "nm":"3S", "open":2920, "close":2800},
{"cd":"A095570", "nm":"AJ네트웍스", "open":1920, "close":1900},
{"cd":"A006840", "nm":"AK홀딩스", "open":2020, "close":2010},
{"cd":"A054620", "nm":"APS홀딩스", "open":3120, "close":3200}
]
df = pd.DataFrame(data=data)
df = df.set_index('cd')

답
df.query("close > open")
실행 결과

답
df.query('close >= 3000')
실행 결과

위 데이터프레임에서 시가(open)가 2,000원 이상이고 종가(close)가 시가(open)이상인 종목을 출력하세요.
답
df.query("open >= 2000 and close >= open")
실행 결과

위 데이터프레임에서 종목명(nm)이 'A'로 시작하는 종목만 선택하세요.
답
df.query("nm.str.startswith('A')")
실행 결과

위 데이터프레임에서 종목명에 '홀딩스'가 포함된 종목만 선택하세요.
답
df.query("nm.str.contains('홀딩스')")
실행 결과

다음 데이터프레임에서 filter 메서드를 사용해서 "PER"과 "PBR" 컬럼만 선택하세요.
코드
data = {
"PER": [6.42, 17.63, 21.09, 13.93],
"PBR": [1.10, 1.49, 2.06, 1.88],
"DPS": [1416, 1716, 2994, 1755]
}
index = ["2019/12", "2020/12", "2021/12", "2022/12(E)"]
df = pd.DataFrame(data=data, index=index)
답
df.filter(items=["PER", "PBR"])
실행 결과

위 데이터프레임에서 filter 메서드의 정규식을 사용해서 'PER'과 'PBR' 컬럼을 선택하세요.
답
df.filter(regex="P.R", axis=1)
실행 결과

위 데이터프레임에서 filter 메서드를 사용해서 예상치인 '2022/12(E)'를 제외한 나머지 로우 데이터를 선택하세요.
답
df.filter(regex="12$", axis=0)
실행 결과

위 데이터프레임에서 "2022"년 데이터만 선택하세요. 2022년 데이터는 인덱스에 '2022'라는 문자열이 포함되어있습니다.
답
df.filter(like="2022", axis=0)
실행 결과

df1, df2 데이터프레임을 위/아래 방향으로 연결하세요. (위에 df1이 있고 그 아래에 df2가 있어야합니다.)
코드
from datetime import datetime
columns = ['open', 'high', 'low', 'close']
index1 = [
datetime(2022, 9, 8),
datetime(2022, 9, 7),
datetime(2022, 9, 6),
datetime(2022, 9, 5),
datetime(2022, 9, 2)
]
index2 = [
datetime(2022, 9, 1),
datetime(2022, 8, 31),
datetime(2022, 8, 30),
datetime(2022, 8, 29),
datetime(2022, 8, 26)
]
df1 = pd.DataFrame(data=np.arange(0, 20).reshape(5,4), index=index1, columns=columns)
df2 = pd.DataFrame(data=np.arange(20,40).reshape(5,4), index=index2, columns=columns)
답
pd.concat([df1, df2], axis=0)
실행 결과

위 df1, df2 데이터프레임을 위/아래 방향으로 연결하세요. (위에 df2가 있고 그 아래에 df1가 있어야합니다.)
답
pd.concat([df2, df1], axis=0)
실행 결과

다음 df1, df2 데이터프레임을 좌/우로 붙여 새로운 데이터프레임을 생성하세요.
코드
index = [
datetime(2022, 9, 8),
datetime(2022, 9, 7),
datetime(2022, 9, 6),
datetime(2022, 9, 5),
datetime(2022, 9, 2)
]
df1 = pd.DataFrame(data=np.arange(0, 10).reshape(5,2), index=index, columns=['open', 'high'])
df2 = pd.DataFrame(data=np.arange(10,20).reshape(5,2), index=index, columns=['low', 'close'])
답
pd.concat([df1, df2], axis=1)
실행 결과

다음 df1, df2 데이터프레임을 위/아래로 연결하세요. concat 메서드에서 join='outer'를 사용하세요.
코드
index1 = [
datetime(2022, 9, 8),
datetime(2022, 9, 7)
]
index2 = [
datetime(2022, 9, 6),
datetime(2022, 9, 5)
]
df1 = pd.DataFrame(np.arange(0, 6).reshape(2,3), index=index1, columns=['open', 'high', 'low'])
df2 = pd.DataFrame(np.arange(6,12).reshape(2,3), index=index2, columns=['high', 'low', 'close'])

답
pd.concat([df1, df2], axis=0, join='outer')
실행 결과

위 df1, df2 데이터프레임을 위/아래로 연결하세요. concat 메서드에서 join='inner'를 사용하세요.
답
pd.concat([df1, df2], axis=0, join='inner')
실행 결과

다음 s1, s2 시리즈 객체를 위/아래로 연결하세요.
코드
s1 = pd.Series(['a', 'b'])
s2 = pd.Series(['c', 'd'])
답
pd.concat([s1, s2])
실행 결과

다음 s1, s2 시리즈 객체를 좌/우로 연결하세요.
코드
s1 = pd.Series(['a', 'b'])
s2 = pd.Series(['c', 'd'])
답
pd.concat([s1, s2], axis=1)
실행 결과

다음 df1, df2를 concat 메서드로 위/아래로 붙일 때 인덱스를 무시하고 연결하세요.
코드
df1 = pd.DataFrame(np.arange(0, 4).reshape(2,2))
df2 = pd.DataFrame(np.arange(4, 8).reshape(2,2))
답
pd.concat([df1, df2], ignore_index=True)
실행 결과

df1, df2 데이터프레임을 concat 메서드로 위/아래로 연결할 때 다음 그림과 같이 멀티인덱스로 구성하세요.

코드
index = ["2020", "2021"]
data1 = {
"PER": [21.09, 13.55],
"PBR": [2.06, 1.80]
}
data2 = {
"PER": [12.40, 24.19],
"PBR": [1.58, 1.44]
}
df1 = pd.DataFrame(data=data1, index=index)
df2 = pd.DataFrame(data=data2, index=index)
답
pd.concat([df1, df2], axis=0, keys=['삼성전자','LG전자'])
실행 결과

위 df1, df2 데이터프레임을 다음 그림과 같이 연결하세요. 멀티 인덱스 이름을 지정하세요.

답
pd.concat([df1, df2], axis=0, keys=['삼성전자','LG전자'], names=['종목명', '연도'])
실행 결과

다음 데이터프레임에서 테마별 PER, PBR의 평균을 계산하세요.
코드
data = [
["2차전지(생산)", "SK이노베이션", 10.19, 1.29],
["해운", "팬오션", 21.23, 0.95],
["시스템반도체", "티엘아이", 35.97, 1.12],
["해운", "HMM", 21.52, 3.20],
["시스템반도체", "아이에이", 37.32, 3.55],
["2차전지(생산)", "LG화학", 83.06, 3.75]
]
columns = ["테마", "종목명", "PER", "PBR"]
df = pd.DataFrame(data=data, columns=columns)
답
df.groupby(by="테마")[["PER", "PBR"]].mean()
실행 결과
