F37.101 ์ปดํจํ ๊ธฐ์ด: ์ฒ์ ๋ง๋๋ ์ปดํจํ (First Adventures in Computing)
Chapter 12. Pandas II#
ํ์ต๋ชฉํ์ ๊ธฐ๋ํจ๊ณผ
ํ์ต๋ชฉํ
ํ์ผ ์ ์ถ๋ ฅ ๋ฐฉ๋ฒ์ ์ตํ๋ณด์.
๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๊ด๋ จ๋ ํจ์๋ฅผ ์ตํ๋ณด์.
ChatGPT๋ฅผ ํ์ฉํ์ฌ ํ์ด์ฌ ์ฝ๋๋ฅผ ์์ฑํด๋ณด์.
๊ธฐ๋ํจ๊ณผ
ChatGPT์ pandas๋ฅผ ํ์ฉํ์ฌ ๋ค์ํ ๋ฐ์ดํฐ ์ฐ์ฐ ๋ฐ ๋ถ์์ ํ์ํ ๊ธฐ๋ฅ์ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ์ฝ๋ฉํ ์ ์๋ค.
ํ์ผ ์ ์ถ๋ ฅ#
ํ์ผ ํ์ |
์ฝ๊ธฐ |
์ฐ๊ธฐ |
|---|---|---|
MS Excel |
read_excel |
to_excel |
CSV |
read_csv |
to_csv |
JSON |
read_json |
to_json |
HTML |
read_html |
to_html |
Local clipboard |
read_clipboard |
to_clipboard |
HDF5 format |
read_hdf |
to_hdf |
SQL |
read_sql |
to_sql |
csv ํ์ผ์ ๋ถ๋ฌ์ฌ ๋
pd.read_csv(โํ์ผ๋ช โ, index_col=์นผ๋ผ๋ฒํธ, encoding=โ์ธ์ฝ๋ฉ๋ฐฉ๋ฒโ)
index_col:์นผ๋ผ๋ฒํธ๋ฅผ ์ค์ ์ธ๋ฑ์ค๋ก ์ง์ ํ๋ค.
usecols: ์ฌ์ฉํ ์นผ๋ผ๋ฒํธ๋ฅผ ์ง์ ํ๋ค.
header: ํค๋(์นผ๋ผ)์ผ๋ก ์ ํํ ํค๋๋ฅผ ์ง์ ํ๋ค.
encoding: ํ๊ธ์ด ๊นจ์ง๋์๋ encoding ์ต์ ์ โeuc-krโ์ ๋ฃ์ด์ค๋ค.
์ด ์ธ์๋ ๋ง์ ์ต์ ์ด ์๋ค.
excelํ์ผ์ ๋ถ๋ฌ์ฌ ๋
pd.read_excel(โํ์ผ๋ช โ, encoding=โ์ธ์ฝ๋ฉ๋ฐฉ๋ฒโ)
์ธ์ฝ๋ฉ & ๋์ฝ๋ฉ
์ธ์ฝ๋ฉ(encoding)๋ ์ฝ๋ํ ๋๋ ์ํธํ๋ก ๋ถ๋ฆฌ์ฐ๋ฉฐ, ๋ฌธ์์ด์ ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ธ์ฝ๋ฉ์ ํ๋ ์ด์ ๋ ์ธ์ด๋ง๋ค ํ์คํ๋ ๊ท๊ฒฉ์ผ๋ก ๋ฌธ์์งํฉ์ ๋ง๋ค๊ณ , ์ด๋ฌํ ๋ฌธ์์งํฉ์ ๊ฐ์ง๊ณ ์ ๋ณด์ ํํ ํ์คํ, ๋ณด์, ์ ์ฅ ๊ณต๊ฐ ์ ์ฝ ๋ฑ์ ๋ค์ํ ๋ชฉ์ ์ผ๋ก ๋ถํธํํ์ฌ ์ฌ์ฉํ๊ธฐ ์ํ ๊ฒ์ด๋ค.
ํ์ด์ฌ์์๋ ๋ฌธ์์ด์ ์ ๋์ฝ๋๋ก ์ฒ๋ฆฌํ๋๋ฐ ์ ๋์ฝ๋๋ฅผ utf-8, euc-kr, ascii ํ์์ ์ธ์ฝ๋ฉ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํํ๋ค. ์๋ฅผ ๋ค์ด,
x='ํ๊ธ'
encoded = x.encode('utf-8')
print(f'Output: {encoded}')
Output: bโ\xed\x95\x9c\xea\xb8\x80โ
์ฌ๊ธฐ์ ๊ฒฐ๊ณผ๋ก ๋์จ bโ\xed\x95\x9c\xea\xb8\x80โ๊ฐ ๋ฐ์ดํธ ์ฝ๋์ด๋ค.
๋์ฝ๋ฉ(decoding)์ ์ญ์ฝ๋ํ ๋๋ ๋ณตํธํ๋ก ๋ถ๋ฆฌ์ฐ๋ฉฐ, ๋ฐ์ดํธ์ฝ๋๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ด๋ ๋์ฝ๋ฉ์์๋ ์ธ์ฝ๋ฉ ์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ ์ธ์ฝ๋ฉ ๋ฐฉ์(utf-8, euc-kr, ascii ๋ฑ)์ด ์ฌ์ฉ๋์ด์ผ ํ๋ค.
decoded = encoded.decode('utf-8')
print(f'Output: {decoded}')
Output: ํ๊ธ
์์ธ์ธ๊ตฌ๋ฐ์ดํฐ ๋ค์ด๋ก๋ํ์ฌ ํ์ฉํด๋ณด๊ธฐ
๋ฐ์ดํฐ ๋ค์ด๋ก๋ ์ฌ์ดํธ : https://data.seoul.go.kr/
๊ฒ์์ด: ์์ธ์ ์์น๊ตฌ๋ณ ์ธ๊ตฌ์
ํ์ํ ์นผ๋ผ๋ง ๋ถ๋ฌ์์ ๋ฐ์ดํํ๋ ์ ์์ฑํ๊ธฐ
๋ค์ด๋ก๋ํ ํ์ผ์ ์ด์ด์ ์๋์ ์ต์ ์ ์ฌ์ฉํ ์นผ๋ผ์ ์ดํด๋ณธ๋ค.
header: ์นผ๋ผ ์ด๋ฆ ์ง์
index_col: index๋ก ์ง์ ํ ์นผ๋ผ ์ง์
usecols: ์ฌ์ฉํ ์นผ๋ผ ์ง์
header์ต์ ์ผ๋ก ์นผ๋ผ์ ์ง์ ํ ์ ์๋ค.
index_col ์ต์ ์ ํ์ผ์ ์ฝ์ด์ฌ๋ ์ธ๋ฑ์ค๋ฅผ ์ง์ ํ์ฌ ์ฝ์ด์ฌ ์ ์๊ฒ ํด์ค๋ค.
๋ฐ์ดํฐํ๋ ์์์ set_index()๋ก ์ด์ ์ธ๋ฑ์ค๋ก ๋ณ๊ฒฝํ ์๋ ์๋ค.
usecols ์ต์ ์ ์ฌ์ฉํ ์นผ๋ผ์ ์ง์ ํ์ฌ ์ฝ์ด์จ๋ค.
์นผ๋ผ์ ์ด๋ฆ ํ๊บผ๋ฒ์ ๋ณ๊ฒฝํ๊ธฐ
๋ถํ์ํ ํ ์ญ์ ํ๊ธฐ
to_csv()๋ก ์ ์ฒ๋ฆฌ ๋ ๋ฐ์ดํฐํ๋ ์์ ํ์ผ๋ก ์ ์ฅํ๊ธฐ
์๋ฃํ ๋ค๋ฃจ๊ธฐ#
.astype(์๋ฃํ)
import pandas as pd
scores = [[84,87,78], [21,15,84], [87,84,76], [100,87,99],[59,99,59],[46,77,56]]
names=['์ฒ ์','์์ด','๊ธธ๋','๋ฏธ์','์์ด','์ฒ ์ด']
lectures=['๊ตญ์ด','์ํ','์์ด']
d1 = pd.DataFrame(scores, index=names, columns=lectures)
d1
| ๊ตญ์ด | ์ํ | ์์ด | |
|---|---|---|---|
| ์ฒ ์ | 84 | 87 | 78 |
| ์์ด | 21 | 15 | 84 |
| ๊ธธ๋ | 87 | 84 | 76 |
| ๋ฏธ์ | 100 | 87 | 99 |
| ์์ด | 59 | 99 | 59 |
| ์ฒ ์ด | 46 | 77 | 56 |
d2 = d1.astype('str')
d2
| ๊ตญ์ด | ์ํ | ์์ด | |
|---|---|---|---|
| ์ฒ ์ | 84 | 87 | 78 |
| ์์ด | 21 | 15 | 84 |
| ๊ธธ๋ | 87 | 84 | 76 |
| ๋ฏธ์ | 100 | 87 | 99 |
| ์์ด | 59 | 99 | 59 |
| ์ฒ ์ด | 46 | 77 | 56 |
d2.sum()
๊ตญ์ด 8421871005946
์ํ 871584879977
์์ด 788476995956
dtype: object
๋๋ฝ๊ฐ ์ฒ๋ฆฌํ๊ธฐ#
๋๋ฝ ๋ฐ์ดํฐ ํ์ธ
isnull(): ๋๋ฝ ๋ฐ์ดํฐ์ด๋ฉด True, ์ ํจํ ๋ฐ์ดํฐ์ด๋ฉด False๋ฅผ ๋ฐํ
notnull():์ ํจํ ๋ฐ์ดํฐ์ด๋ฉด True, ๋๋ฝ๋ฐ์ดํฐ์ด๋ฉด False๋ฅผ ๋ฐํ
scores = [[84,87,78], [21,15,84], [87,84,76], [100,87,99],[59,99,59],[46,77,56]]
names=['์ฒ ์','์์ด','๊ธธ๋','์ฌ๊ธฐ','์์ด','์ฒ ์ด']
lectures=['๊ตญ์ด','์ํ','์์ด']
d2 = pd.DataFrame(scores, index=names, columns=lectures)
d2
| ๊ตญ์ด | ์ํ | ์์ด | |
|---|---|---|---|
| ์ฒ ์ | 84 | 87 | 78 |
| ์์ด | 21 | 15 | 84 |
| ๊ธธ๋ | 87 | 84 | 76 |
| ์ฌ๊ธฐ | 100 | 87 | 99 |
| ์์ด | 59 | 99 | 59 |
| ์ฒ ์ด | 46 | 77 | 56 |
d1๊ณผ d2๋ฅผ ๋ํด์ ์ผ๋ถ๋ฌ ๋๋ฝ๊ฐ์ ๋ง๋ค์ด์ ํ ์คํธํด๋ณด์.
d3=d1+d2
d3
| ๊ตญ์ด | ์ํ | ์์ด | |
|---|---|---|---|
| ๊ธธ๋ | 174.0 | 168.0 | 152.0 |
| ๋ฏธ์ | NaN | NaN | NaN |
| ์์ด | 118.0 | 198.0 | 118.0 |
| ์ฌ๊ธฐ | NaN | NaN | NaN |
| ์์ด | 42.0 | 30.0 | 168.0 |
| ์ฒ ์ | 168.0 | 174.0 | 156.0 |
| ์ฒ ์ด | 92.0 | 154.0 | 112.0 |
d3.isnull()
#d3.notnull()
| ๊ตญ์ด | ์ํ | ์์ด | |
|---|---|---|---|
| ๊ธธ๋ | False | False | False |
| ๋ฏธ์ | True | True | True |
| ์์ด | False | False | False |
| ์ฌ๊ธฐ | True | True | True |
| ์์ด | False | False | False |
| ์ฒ ์ | False | False | False |
| ์ฒ ์ด | False | False | False |
๋๋ฝ๋ฐ์ดํฐ์ ๊ฐ์๋ฅผ ํ์ธํ๋ ค๋ฉด .isnull().sum()์ผ๋ก null์ธ ๋ฐ์ดํฐ์ ๊ฐ์๋ฅผ ํฉํ๋ค.
d3.isnull().sum()
๊ตญ์ด 2
์ํ 2
์์ด 2
dtype: int64
๋๋ฝ ๋ฐ์ดํฐ ์ ๊ฑฐ
ํ์ ๊ฑฐ: .dropna(subset=[โ์ด1โ,โ์ด2โ] axis=0)
โ์ด1โ ๋๋ โ์ด2โ ์ค ํ๋๋ผ๋ NaN์ด๋ฉด ํด๋น ํ(row)์ ์ ๊ฑฐ
subset ์ต์ ์ ์๋ตํ๋ฉด ๋ชจ๋ ์ด์ ๊ธฐ์ค์ผ๋ก NaN์ด ์๋ ํ์ ์ ๊ฑฐ
์ด์ ๊ฑฐ: .dropna(axis=1)
NaN์ด ํ๋๋ผ๋ ์๋ ์ด ์ ์ฒด๋ฅผ ์ ๊ฑฐ
d4=d3.dropna(axis=0)
d4
| ๊ตญ์ด | ์ํ | ์์ด | |
|---|---|---|---|
| ๊ธธ๋ | 174.0 | 168.0 | 152.0 |
| ์์ด | 118.0 | 198.0 | 118.0 |
| ์์ด | 42.0 | 30.0 | 168.0 |
| ์ฒ ์ | 168.0 | 174.0 | 156.0 |
| ์ฒ ์ด | 92.0 | 154.0 | 112.0 |
๋๋ฝ ๋ฐ์ดํฐ ์นํ
.fillna(๊ฐ)
min_kor = d3['๊ตญ์ด'].min()
d3['๊ตญ์ด'].fillna(min_kor, inplace=True)
d3
| ๊ตญ์ด | ์ํ | ์์ด | |
|---|---|---|---|
| ๊ธธ๋ | 174.0 | 168.0 | 152.0 |
| ๋ฏธ์ | 42.0 | NaN | NaN |
| ์์ด | 118.0 | 198.0 | 118.0 |
| ์ฌ๊ธฐ | 42.0 | NaN | NaN |
| ์์ด | 42.0 | 30.0 | 168.0 |
| ์ฒ ์ | 168.0 | 174.0 | 156.0 |
| ์ฒ ์ด | 92.0 | 154.0 | 112.0 |
์ค๋ณต๋ฐ์ดํฐ ์ฒ๋ฆฌ#
.duplicated(): ์ค๋ณต๋ ํ์ด๋ฉด True, ์๋๋ฉด False์ด๋ค.
d3.duplicated()
๊ธธ๋ False
๋ฏธ์ False
์์ด False
์ฌ๊ธฐ True
์์ด False
์ฒ ์ False
์ฒ ์ด False
dtype: bool
d3['๊ตญ์ด'].duplicated()
๊ธธ๋ False
๋ฏธ์ False
์์ด False
์ฌ๊ธฐ True
์์ด True
์ฒ ์ False
์ฒ ์ด False
Name: ๊ตญ์ด, dtype: bool
์ค๋ณตํ ์ ๊ฑฐ: .drop_duplicates(subset=์ปฌ๋ผ๋ช ๋ฆฌ์คํธ)
d3.drop_duplicates(subset=['๊ตญ์ด', '์์ด'])
| ๊ตญ์ด | ์ํ | ์์ด | |
|---|---|---|---|
| ๊ธธ๋ | 174.0 | 168.0 | 152.0 |
| ๋ฏธ์ | 42.0 | NaN | NaN |
| ์์ด | 118.0 | 198.0 | 118.0 |
| ์์ด | 42.0 | 30.0 | 168.0 |
| ์ฒ ์ | 168.0 | 174.0 | 156.0 |
| ์ฒ ์ด | 92.0 | 154.0 | 112.0 |
์๊ณ์ด ๋ฐ์ดํฐ#
๋ค๋ฅธ ์๋ฃํ์ ์๊ณ์ด ๊ฐ์ฒด๋ก ๋ณํ
to_datetime(): ๋ฌธ์์ด์ timestamp๋ก ๋ณํ
import pandas as pd
data = [['1990-03-02', 90], ['1991-08-08', 95], ['1990-11-22',90], ['1991-01-05', 88]]
names=['์ฒ ์','์์ด','๊ธธ๋','๋ฏธ์']
column=['์๋
์์ผ','์ ์']
d1 = pd.DataFrame(data, index=names, columns=column)
d1
| ์๋ ์์ผ | ์ ์ | |
|---|---|---|
| ์ฒ ์ | 1990-03-02 | 90 |
| ์์ด | 1991-08-08 | 95 |
| ๊ธธ๋ | 1990-11-22 | 90 |
| ๋ฏธ์ | 1991-01-05 | 88 |
์๋ ์์ผ์ ํ์ธํด๋ณด๋ฉด object ํ์ ์ด๋ค.
d1.info()
<class 'pandas.core.frame.DataFrame'>
Index: 4 entries, ์ฒ ์ to ๋ฏธ์
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 ์๋
์์ผ 4 non-null object
1 ์ ์ 4 non-null int64
dtypes: int64(1), object(1)
memory usage: 96.0+ bytes
object ํ์ ์ ์๋ ์์ผ์ ์๊ณ์ด ๋ฐ์ดํฐํ์ ์ธ datetimeํ์ผ๋ก ๋ฐ๊ฟ๋ณด์.
d1['์๋
์์ผ'] = pd.to_datetime(d1['์๋
์์ผ'])
d1
| ์๋ ์์ผ | ์ ์ | |
|---|---|---|
| ์ฒ ์ | 1990-03-02 | 90 |
| ์์ด | 1991-08-08 | 95 |
| ๊ธธ๋ | 1990-11-22 | 90 |
| ๋ฏธ์ | 1991-01-05 | 88 |
datetime์ผ๋ก ๋ณํํ ํ์ธํด๋ณด๋ฉด ํ์ ์ด ๋ณ๊ฒฝ๋ ๊ฒ์ ์ ์ ์๋ค.
d1.info()
<class 'pandas.core.frame.DataFrame'>
Index: 4 entries, ์ฒ ์ to ๋ฏธ์
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 ์๋
์์ผ 4 non-null datetime64[ns]
1 ์ ์ 4 non-null int64
dtypes: datetime64[ns](1), int64(1)
memory usage: 96.0+ bytes
์๊ณ์ด ๋ฐ์ดํฐ ํ์ฉ
๋ ์ง ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฆฌํ ์ ์๋ค.
์ฐ-์-์ผ ์ ๋ณด์์ ์ฐ,์,์ผ ์ถ์ถ: dt.year, dt.month, dt.day๋ฅผ ์ฌ์ฉ
d1['๋
'] = d1['์๋
์์ผ'].dt.year
d1['์'] = d1['์๋
์์ผ'].dt.month
d1['์ผ'] = d1['์๋
์์ผ'].dt.day
d1
| ์๋ ์์ผ | ์ ์ | ๋ | ์ | ์ผ | |
|---|---|---|---|---|---|
| ์ฒ ์ | 1990-03-02 | 90 | 1990 | 3 | 2 |
| ์์ด | 1991-08-08 | 95 | 1991 | 8 | 8 |
| ๊ธธ๋ | 1990-11-22 | 90 | 1990 | 11 | 22 |
| ๋ฏธ์ | 1991-01-05 | 88 | 1991 | 1 | 5 |
df.to_period(freq=None, axis=0)
freq : ์ํ๋ ์๊ฐ ๋จ์๋ก ๋ณํ(โYโ,โMโ,โDโ, โWโ)
axis : ๋ณํํ ๊ธฐ์ค ์ถ
d1['๋
์'] = d1['์๋
์์ผ'].dt.to_period(freq='M')
d1
| ์๋ ์์ผ | ์ ์ | ๋ | ์ | ์ผ | ๋ ์ | |
|---|---|---|---|---|---|---|
| ์ฒ ์ | 1990-03-02 | 90 | 1990 | 3 | 2 | 1990-03 |
| ์์ด | 1991-08-08 | 95 | 1991 | 8 | 8 | 1991-08 |
| ๊ธธ๋ | 1990-11-22 | 90 | 1990 | 11 | 22 | 1990-11 |
| ๋ฏธ์ | 1991-01-05 | 88 | 1991 | 1 | 5 | 1991-01 |
๋ ์ง ์ธ๋ฑ์ค๋ฅผ ํ์ฉํด๋ณด์.
d2 = d1.set_index('์๋
์์ผ')
d2
| ์ ์ | ๋ | ์ | ์ผ | ๋ ์ | |
|---|---|---|---|---|---|
| ์๋ ์์ผ | |||||
| 1990-03-02 | 90 | 1990 | 3 | 2 | 1990-03 |
| 1991-08-08 | 95 | 1991 | 8 | 8 | 1991-08 |
| 1990-11-22 | 90 | 1990 | 11 | 22 | 1990-11 |
| 1991-01-05 | 88 | 1991 | 1 | 5 | 1991-01 |
d2[d2.index.year == 1990]
| ์ ์ | ๋ | ์ | ์ผ | ๋ ์ | |
|---|---|---|---|---|---|
| ์๋ ์์ผ | |||||
| 1990-03-02 | 90 | 1990 | 3 | 2 | 1990-03 |
| 1990-11-22 | 90 | 1990 | 11 | 22 | 1990-11 |
d2.loc['1990']
| ์ ์ | ๋ | ์ | ์ผ | ๋ ์ | |
|---|---|---|---|---|---|
| ์๋ ์์ผ | |||||
| 1990-03-02 | 90 | 1990 | 3 | 2 | 1990-03 |
| 1990-11-22 | 90 | 1990 | 11 | 22 | 1990-11 |
today = pd.to_datetime('2025-11-18')
today
Timestamp('2025-11-18 00:00:00')
d2['๋ ์ง_์ฐจ์ด'] = today-d2.index
d2
| ์ ์ | ๋ | ์ | ์ผ | ๋ ์ | ๋ ์ง_์ฐจ์ด | |
|---|---|---|---|---|---|---|
| ์๋ ์์ผ | ||||||
| 1990-03-02 | 90 | 1990 | 3 | 2 | 1990-03 | 13045 days |
| 1991-08-08 | 95 | 1991 | 8 | 8 | 1991-08 | 12521 days |
| 1990-11-22 | 90 | 1990 | 11 | 22 | 1990-11 | 12780 days |
| 1991-01-05 | 88 | 1991 | 1 | 5 | 1991-01 | 12736 days |
chatGPT๋ก ์์ธ์ธ๊ตฌ๋ฐ์ดํฐ ํ์ฉํด๋ณด๊ธฐ#
๋ชฉํ:
๊ฐ ๊ตฌ๋ณ ํ๊ตญ์ธ์ ๋น์จ ๊ตฌํ๊ธฐ
๊ฐ ๊ตฌ๋ณ ์ธ๊ตญ์ธ์ ๋น์จ ๊ตฌํ๊ธฐ
๊ฐ ๊ตฌ๋ณ ๊ณ ๋ น์์ ๋น์จ ๊ตฌํ๊ธฐ
์ธ๊ตฌ์๊ฐ ์ ์ ์์๋๋ก 5๊ฐ ๊ตฌ ์ถ๋ ฅํ๊ธฐ
์ธ๊ตญ์ธ ์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๊ธฐ
๊ณ ๋ น์ ๋น์จ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๊ธฐ
์ธ๊ตฌ์๊ฐ ๊ฐ์ฅ ๋ง์ ์์น๊ตฌ์ ์ธ๊ตฌ์ ์ต๋๊ฐ ๊ตฌํ๊ธฐ
์ธ๊ตฌ์๊ฐ ๊ฐ์ฅ ์ ์ ์์น๊ตฌ์ ์ธ๊ตฌ์ ์ต์๊ฐ ๊ตฌํ๊ธฐ
์ธ๊ตฌ์์ ๊ณ ๋ น์์ ๊ฐ์ ์๊ด ๊ด๊ณ ๊ตฌํ๊ธฐ
๐ ๊ฐ ๊ตฌํ๊ธฐ
๊ฐ ๊ตฌ๋ณ ํ๊ตญ์ธ์ ๋น์จ ๊ตฌํ๊ธฐ
๊ฐ ๊ตฌ๋ณ ์ธ๊ตญ์ธ์ ๋น์จ ๊ตฌํ๊ธฐ
๊ฐ ๊ตฌ๋ณ ๊ณ ๋ น์์ ๋น์จ ๊ตฌํ๊ธฐ
๐ ๊ฐ์ ๋ฐ๋ผ ์ ๋ ฌํ๊ธฐ
- ์ธ๊ตฌ์๊ฐ ์ ์ ์์๋๋ก 5๊ฐ ๊ตฌ ์ถ๋ ฅํ๊ธฐ
- ์ธ๊ตญ์ธ ์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๊ธฐ
- ๊ณ ๋ น์ ๋น์จ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๊ธฐ
๐ ๋ฐ์ดํํ๋ ์ ํ์ํ ํต๊ณ๋ด๊ธฐ
- ์ธ๊ตฌ์๊ฐ ๊ฐ์ฅ ๋ง์ ์์น๊ตฌ์ ์ธ๊ตฌ์ ์ต๋๊ฐ ๊ตฌํ๊ธฐ
- ์ธ๊ตฌ์๊ฐ ๊ฐ์ฅ ์ ์ ์์น๊ตฌ์ ์ธ๊ตฌ์ ์ต์๊ฐ ๊ตฌํ๊ธฐ
- ์ธ๊ตฌ์์ ๊ณ ๋ น์์ ๊ฐ์ ์๊ด ๊ด๊ณ ๊ตฌํ๊ธฐ
F37.101 ์ปดํจํ ๊ธฐ์ด: ์ฒ์ ๋ง๋๋ ์ปดํจํ (First Adventures in Computing) ์์ธ๋ํ๊ต ํ๋ถ๋ํ ๋ณํด์