๐Ÿ—‚๏ธ2024.07.18 TIL

Donghyunยท2024๋…„ 7์›” 18์ผ
0

TIL (Today I Learned)

๋ชฉ๋ก ๋ณด๊ธฐ
19/53
post-thumbnail

๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ(pandas)

๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ/์ €์žฅํ•˜๊ธฐ

  1. csv ํŒŒ์ผ ์ €์žฅํ•˜๊ธฐ: .to_csv(โ€™.file_name.csvโ€™)

    • ์ธ๋ฑ์Šค๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. csv ํŒŒ์ผ ์ฝ์–ด์˜ค๊ธฐ: pd.read_csv(โ€™file_name.csvโ€™)

  3. ์ปฌ๋Ÿผ ์ด๋ฆ„ ๋ณ€๊ฒฝ

    data = {
        'name': ['Alice', 'Bob', 'Charlie'],
        'age': [25, 30, 35],
        'gender': ['female', 'male', 'male']
    }
    
    df = pd.DataFrame(data)
    df.rename(columns={'๋‚˜์ด': 'age', '์„ฑ๋ณ„': '๋‚จ/์—ฌ'})

๋ฐ์ดํ„ฐ ํ™•์ธํ•˜๊ธฐ

  1. df.head(): ๋ฐ์ดํ„ฐ์˜ ๋จธ๋ฆฌ ๋ถ€๋ถ„์„ ํ™•์ธ ๊ฐ€๋Šฅ
  2. df.info(): ๋ฐ์ดํ„ฐ์˜ ์ •๋ณด(์ปฌ๋Ÿผ, null ๊ฐ’ ํ™•์ธ, ๋ฐ์ดํ„ฐ ํƒ€์ž…)๋ฅผ ํ™•์ธ ๊ฐ€๋Šฅ
  3. df.describe() : ๋ฐ์ดํ„ฐ์˜ ๋‹ค์–‘ํ•œ ํ†ต๊ณ„๋Ÿ‰์„ ์š”์•ฝํ•ด์ค€๋‹ค.

๋ฐ์ดํ„ฐ ์„ ํƒ

  1. .iloc: ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์˜ ํ–‰์ด๋‚˜ ์ปฌ๋Ÿผ์—ย ์ธ๋ฑ์Šคย ๊ฐ’์œผ๋กœ ์ ‘๊ทผ
  2. .loc : ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์˜ ํ–‰์ด๋‚˜ ์ปฌ๋Ÿผ์—ย label์ด๋‚˜ boolean array๋กœ ์ ‘๊ทผ
  3. isin() : Series(์‹œ๋ฆฌ์ฆˆ)๋‚˜ DataFrame(๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„)์˜ ๊ฐ’๋“ค ์ค‘์—์„œ ํŠน์ • ๊ฐ’์ด๋‚˜ ๋ฆฌ์ŠคํŠธ ์•ˆ์— ํฌํ•จ๋œ ๊ฐ’๋“ค์„ ์ฐพ์•„๋‚ด๋Š” ๋ฉ”์†Œ๋“œ

๋ฐ์ดํ„ฐ ๋ณ‘ํ•ฉ

  1. concat() : ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์„ย ์œ„์•„๋ž˜๋กœย ํ˜น์€ย ์ขŒ์šฐ๋กœย ์—ฐ๊ฒฐ
    • axis: ์—ฐ๊ฒฐํ•˜๊ณ ์ž ํ•˜๋Š” ์ถ•(๋ฐฉํ–ฅ)์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 0์œผ๋กœ, ์œ„์•„๋ž˜๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒฝ์šฐ์— ํ•ด๋‹น. 1๋กœ ์„ค์ •ํ•˜๋ฉด ์ขŒ์šฐ๋กœ ์—ฐ๊ฒฐ.
    • ignore_index: ๊ธฐ๋ณธ๊ฐ’์€ False์ด๋ฉฐ, ์—ฐ๊ฒฐ๋œ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์˜ ์ธ๋ฑ์Šค๋ฅผ ์œ ์ง€. True๋กœ ์„ค์ •ํ•˜๋ฉด ์ƒˆ๋กœ์šด ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑ. (True โ†’ ๊ธฐ์กด ์ธ๋ฑ์Šค๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ์ƒˆ๋กญ๊ฒŒ ์ธ๋ฑ์Šค๋ฅผ ์„ค์ •)
  2. merge() : ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์—์„œ ๊ณตํ†ต๋œ ์—ด์ด๋‚˜ ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ขŒ์šฐ๋กœ ํ•ฉ์นœ๋‹ค
    • left์™€ย right: ๋ณ‘ํ•ฉํ•  ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ์ค‘ ๋ณ‘ํ•ฉ๋˜๋Š” ๊ธฐ์ค€์ด ๋˜๋Š” ์™ผ์ชฝ(left)๊ณผ ์˜ค๋ฅธ์ชฝ(right) ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์ž…๋‹ˆ๋‹ค.
    • how: ๋ณ‘ํ•ฉ ๋ฐฉ๋ฒ•์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ, 'inner', 'outer', 'left', 'right' ๋“ฑ์˜ ์˜ต์…˜์ด ์žˆ๋‹ค.
    • on: ๋ณ‘ํ•ฉ ๊ธฐ์ค€์ด ๋˜๋Š” ์—ด ์ด๋ฆ„(ํ˜น์€ ์—ด ์ด๋ฆ„์˜ ๋ฆฌ์ŠคํŠธ)์„ ์ง€์ •.
      • left_on๊ณผย right_on: ์™ผ์ชฝ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„๊ณผ ์˜ค๋ฅธ์ชฝ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์—์„œ ๋ณ‘ํ•ฉํ•  ์—ด ์ด๋ฆ„์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ.

๋ฐ์ดํ„ฐ ์ง‘๊ณ„

  1. groupby() : ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์„ ๊ทธ๋ฃนํ™”ํ•˜๊ณ , ๊ทธ๋ฃน ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• (split), ์ ์šฉ(apply), ๊ฒฐํ•ฉ(combine)ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณต
    • ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์„ ํŠน์ • ๊ธฐ์ค€์— ๋”ฐ๋ผ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ง‘๊ณ„, ๋ณ€ํ™˜, ํ•„ํ„ฐ๋ง ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
      1. ๊ทธ๋ฃน ์ƒ์„ฑ: ๊ธฐ์ค€ ์—ด(ํ˜น์€ ์—ด๋“ค)์„ ์ง€์ •ํ•˜์—ฌ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์„ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.
      2. ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์—ฐ์‚ฐ ์ˆ˜ํ–‰: ๊ทธ๋ฃน ๋‹จ์œ„๋กœ ์›ํ•˜๋Š” ์—ฐ์‚ฐ(ํ‰๊ท , ํ•ฉ, ๊ฐœ์ˆ˜ ๋“ฑ)์„ ์ˆ˜ํ–‰.
      3. ๊ฒฐ๊ณผ ๊ฒฐํ•ฉ: ๊ฐ ๊ทธ๋ฃน์˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์œผ๋กœ ๊ฒฐํ•ฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์„ ์ƒ์„ฑ.
  2. pivot_table() : ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์—์„œ ํ”ผ๋ฒ— ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
    • ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜์—ฌ ์š”์•ฝ, ์ง‘๊ณ„๋œ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํ…Œ์ด๋ธ” ํ˜•ํƒœ
    • ex) ํ”ผ๋ฒ— ํ…Œ์ด๋ธ” ์ƒ์„ฑ: ๋‚ ์งœ๋ฅผ ํ–‰ ์ธ๋ฑ์Šค๋กœ, ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์—ด ์ธ๋ฑ์Šค๋กœ, ๊ฐ’์€ 'Value'์˜ ํ•ฉ์œผ๋กœ ์ง‘๊ณ„
      pivot = df.pivot_table(index='Date', columns='Category', values='Value', aggfunc='sum')
  3. ๋ฐ์ดํ„ฐ ์ •๋ ฌ
    • sort_values() : ์ปฌ๋Ÿผ ๊ธฐ์ค€
    • sort_index() : ์ธ๋ฑ์Šค ๊ธฐ์ค€
profile
๋ฐ์ดํ„ฐ๋ถ„์„ ๊ณต๋ถ€ ์ผ๊ธฐ~!

0๊ฐœ์˜ ๋Œ“๊ธ€