[미래유망 2025-04-15(문제풀이)]

돼지인간·2025년 4월 15일

미래유망

목록 보기
18/41

데이터프레임 컬럼 접근

데이터프레임에서 현재가 컬럼만 출력해보세요.

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['현재가']


loc

위 데이터프레임에서 "037730" 종목의 데이터를 인덱싱해보세요.

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.loc['037730']


loc 멀티 인덱싱

위 데이터프레임에서 첫 번째와 세 번째 행을 동시에 인덱싱해보세요.

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.loc[["037730", "005760"]]


특정 값 가져오기 (iloc)

위 데이터프레임에서 037730 종목의 등락률을 출력하세요.

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.iloc[0, 2]


DataFrame.iat 과 DataFrame.at

위 데이터프레임에서 iat과 at 속성을 사용하여 037730 종목의 등락률을 출력하세요.

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)

print(df.at['037730', '등락률'])
print(df.iat[0, 2])


특정 값 가져오기 (loc)

다음 데이터프레임에서 037730 종목의 등락률을 출력하세요.

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)

print(df.loc['037730', '등락률'])


iloc 슬라이싱

위 데이터프레임에서 iloc 속성을 사용하여 첫번째, 두번째 행을 슬라이싱하세요.

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.iloc[0:2]


loc 슬라이싱

위 데이터프레임에서 loc 속성을 사용하여 첫번째, 두번째 행을 슬라이싱하세요.

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.loc['037730':'036360']


컬럼 인덱싱 (iloc)

위 데이터프레임에서 iloc 속성을 사용하여 첫 번째 컬럼을 인덱싱하세요.

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.iloc[:, 0]


컬럼 인덱싱 (loc 속성)

위 데이터프레임에서 loc 속성을 사용하여 첫 번째 컬럼을 인덱싱하세요.

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.loc[:, "종목명"]


loc

위 데이터프레임에서 loc 속성을 사용하여 '037730' 종목의 '종목명', '현재가' 컬럼을 선택하세요.

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.loc['037730', ['종목명', '현재가']]


iloc

위 데이터프레임에서 iloc 속성을 사용하여 '037730' 종목의 '종목명', '현재가' 컬럼을 선택하세요.

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.iloc[0, [0, 2]]


loc

위 데이터프레임에서 loc를 속성을 사용하여 다음 범위를 가져오세요.

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.loc[['037730', '036360'], ['종목명', '현재가']]


iloc 속성

위 데이터프레임에서 iloc를 속성을 사용하여 다음 범위를 가져오세요.

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.iloc[[0, 1], [0, 1]]


필터링

다음 데이터프레임에서 현재가가 1500 이상인 값만 가져와보세요.

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]


필터링

위 데이터프레임에서 현재가가 1,500원 이상이면서 1,700원 미만인 값만 필터링 해보세요.

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['현재가'] < 1700)]


컬럼 추가

다음 데이터프레임에 목표가 컬럼을 추가하세요. 목표가는 현재가에서 10% 상승한 가격입니다.

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['현재가'] * 1.1
df


로우추가

데이터프레임에 LG전자의 데이터를 추가하세요.

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.loc["066570"] = ["LG전자", 60000, 3.84]
df


데이터 프레임 컬럼명 변경 (columns 속성)

다음 코드를 통해 데이터프레임을 생성합니다.

df = pd.DataFrame(data = [[1, 2, 3], [4, 5, 6]], columns=["A", "B", "C"])

생성된 데이터프레임에서 columns 속성을 사용하여 컬럼명을 'a', 'b', 'c'로 변경하세요.

df = pd.DataFrame(data = [[1, 2, 3], [4, 5, 6]], columns=["A", "B", "C"])
df.rename(columns={"A": "a", "B": "b", "C": "c"}, inplace=True)
df


name 속성

다음 데이터프레임의 index의 name 속성을 'year'로 columns의 name 속성을 'company'로 변경하세요.

import pandas as pd
import numpy as np

data = {"카카오": [np.nan, 221, 35], "NAVER": [52, 47, 3]}
index = [2019, 2020, 2021]
df = pd.DataFrame(data=data, index=index)

df.index.name = 'year'
df.columns.name = "company"
df


데이터프레임 reindex

다음 데이터프레임에서 컬럼의 순서를['NAVER', '카카오']로 재정렬해보세요.

import pandas as pd
import numpy as np

data = {"카카오": [np.nan, 221, 35], "NAVER": [52, 47, 3]}
index = [2019, 2020, 2021]
df = pd.DataFrame(data=data, index=index)

df.reindex(columns=['NAVER', '카카오'])


데이터프레임 drop

데이터프레임에서 'NAVER' 컬럼을 삭제하세요.

import pandas as pd
import numpy as np

data = {"카카오": [np.nan, 221, 35], "NAVER": [52, 47, 3]}
index = [2019, 2020, 2021]
df = pd.DataFrame(data=data, index=index)
df.drop(columns='NAVER', inplace=True)
df


데이터프레임 drop

다음 데이터프레임에서 '카카오'와 'NAVER' 컬럼을 삭제하세요.

import pandas as pd
import numpy as np

data = {"카카오": [np.nan, 221, 35], 
        "NAVER": [52, 47, 3],
        "삼성전자": [17, 21, 13]}
index = [2019, 2020, 2021]
df = pd.DataFrame(data=data, index=index)

df.drop(columns=['NAVER', '카카오'], inplace=True)
df


데이터프레임 컬럼 문자열 다루기

다음 데이터프레임의 'cd' 컬럼의 'A'를 제거하세요.

from pandas import DataFrame
import numpy as np

data = [
    {"cd":"A060310", "nm":"3S", "close":"2,920"},
    {"cd":"A095570", "nm":"AJ네트웍스", "close":"6,250"},
    {"cd":"A006840", "nm":"AK홀딩스", "close":"29,700"},
    {"cd":"A054620", "nm":"APS홀딩스", "close":"19,400"}
]
df = DataFrame(data=data)

df['cd'] = df['cd'].str[1:]
df


데이터프레임 문자열 컬럼

위 데이터프레임에서 'close' 컬럼의 콤마를 제거한 후 np.int64 타입으로 변경하세요.

from pandas import DataFrame
import numpy as np

data = [
    {"cd":"A060310", "nm":"3S", "close":"2,920"},
    {"cd":"A095570", "nm":"AJ네트웍스", "close":"6,250"},
    {"cd":"A006840", "nm":"AK홀딩스", "close":"29,700"},
    {"cd":"A054620", "nm":"APS홀딩스", "close":"19,400"}
]
df = DataFrame(data=data)

df['close'] = df['close'].str.replace(',', '').astype(np.int64)
df


DataFrame dropna

다음 데이터프레임에서 np.nan 값이 있는 모든 행을 제거하세요.

data = [
    [1, 2, 3],
    [np.nan, 5, 6],
    [7, np.nan, 9],
    [10, 11, np.nan]
]
df = pd.DataFrame(data)
df = df.dropna().astype(np.int64)
df


dataframe.dropna (subset)

다음 데이터프레임에서 col2 컬럼의 값에 NaN이 포함된 행만 제거하세요.

import pandas as pd
import numpy as np

data = [
    [1, 1, np.nan],
    [10, np.nan, 10],
    [2, 3, 4]
]
columns = ['col0', 'col1', 'col2']
df = pd.DataFrame(data, columns=columns)
df = df.dropna(subset='col2')
df


dataframe.fillna

다음 데이터프레임의 NaN 값을 0으로 채우세요.

import pandas as pd
import numpy as np

data = [
    [1, 1, np.nan],
    [10, np.nan, 10],
    [2, 3, 4]
]
columns = ['col0', 'col1', 'col2']
df = pd.DataFrame(data, columns=columns)
df = df.fillna(0)
df


fillna (method)

다음 데이터프레임에서 NaN 값을 동일 컬럼의 이전 값으로 채우세요.

import pandas as pd
import numpy as np

data = [
    [1, 1, np.nan],
    [10, np.nan, 10],
    [2, 3, 4]
]
columns = ['col0', 'col1', 'col2']
df = pd.DataFrame(data, columns=columns)
df = df.fillna(method='ffill')
df


dataframe.isna()

다음 데이터프레임에서 isna 메서드를 호출해보세요.

import pandas as pd
import numpy as np

data = [
    [1, 1, np.nan],
    [10, np.nan, 10],
    [2, 3, 4]
]
columns = ['col0', 'col1', 'col2']
df = pd.DataFrame(data, columns=columns)
df = df.isna()
df


dataframe.notna

위 데이터프레임에 대해서 notna 메서드를 호출해보세요.

import pandas as pd
import numpy as np

data = [
    [1, 1, np.nan],
    [10, np.nan, 10],
    [2, 3, 4]
]
columns = ['col0', 'col1', 'col2']
df = pd.DataFrame(data, columns=columns)
df = df.notna()
df


dataframe replace

다음 데이터프레임에서 0을 100으로 변경하세요.

import pandas as pd
import numpy as np

data = np.arange(9).reshape(3, 3)
df = pd.DataFrame(data)
df = df.replace(0, 100)
df


astype

다음 데이터프레임의 'fruit' 컬럼의 타입을 object에서 category로 변경하세요.

import pandas as pd

data = {
    'fruit': ['apple', 'orange', 'orange', 'apple', 'apple', 'apple'],
    'weight': [1.5, 1.3, 3.7, 2.4, 1.7, 1.8]
}
df['fruit'] = df['fruit'].astype('category')
df


profile
안녕하세요 게임개발을 공부하고 있는 돼지인간 입니다.

0개의 댓글