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) ์„œ์šธ๋Œ€ํ•™๊ต ํ•™๋ถ€๋Œ€ํ•™ ๋ณ€ํ•ด์„