Python_6 - jjin-choi/study_note GitHub Wiki

ยง Numpy

1. Array ์ •์˜ ๋ฐ ์‚ฌ์šฉํ•˜๊ธฐ

  • c์–ธ์–ด๋กœ ๊ตฌํ˜„๋œ ํŒŒ์ด์ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๊ณ ์„ฑ๋Šฅ ์ˆ˜์น˜๊ณ„์‚ฐ์„ ์œ„ํ•ด ์ œ์ž‘
  • ๋ฒกํ„ฐ ๋ฐ ํ–‰๋ ฌ ์—ฐ์‚ฐ์— ์žˆ์–ด ๋งค์šฐ ํŽธ๋ฆฌ
    • array (ํ–‰๋ ฌ) ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ ์ด์— ๋Œ€ํ•ด ์—ฐ์‚ฐ ์ˆ˜ํ–‰
    • list๋ฅผ np.array ๋กœ ์„ค์ •ํ•˜๋ฉด a.shape๋Š” (4,) ๋กœ, 1์ฐจ์› ๋ฐ์ดํ„ฐ์ด๋ฉฐ ์ด 4 ํฌ๊ธฐ ๊ฐ–์Œ
  • np.eye(n) ์€ 1์ด ๋Œ€๊ฐ์„ ์œผ๋กœ ๋“ค์–ด๊ฐ„ ํ–‰๋ ฌ

2. ์ •์ˆ˜ ์ธ๋ฑ์‹ฑ

  • ์ •์ˆ˜ ์ธ๋ฑ์‹ฑ

    • a[0] : 0ํ–‰ ์ „์ฒด
    • a[0:2] : 0, 1ํ–‰ ์ „์ฒด
    • a0,2 : 0ํ–‰ 2ํ–‰ ๋ฝ‘์œผ๋ผ๋Š” ์˜๋ฏธ
    • a[0, 2], 1, 3 : 0ํ–‰ 1์—ด, 2ํ–‰ 3์—ด
  • ๋ถ€์šธ๋ฆฐ ์ธ๋ฑ์Šค

  • ์œ„์—์„œ ์ด์šฉํ•œ ๋‹ค์ฐจ์› ์ธ๋ฑ์‹ฑ์„ ์‘์šฉํ•˜์—ฌ boolean indexing ๊ฐ€๋Šฅ, ์ฃผ๋กœ ๋งˆ์Šคํฌ ๋ผ๊ณ  ์ด์•ผ๊ธฐ ํ•จ

3. ๋ธŒ๋กœ๋“œ ์บ์ŠคํŠธ

  • ์—ฐ์‚ฐ์€ ๋™์ผํ•œ ์œ„์น˜์— ์žˆ๋Š” ์š”์†Œ๋“ค ๋ผ๋ฆฌ ์ง„ํ–‰
    • np.multiply(a, b) : ํ–‰๋ ฌ์˜ ๊ณฑ์ฒ˜๋Ÿผ ๊ณฑ์…ˆ์ด ์ง„ํ–‰๋˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๊ฐ ์š”์†Œ๋ณ„ ๊ณฑ์…ˆ์ด ์ง„ํ–‰
  • ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ : ์„œ๋กœ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅธ array ๊ฐ€ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ๋” ํ•˜๋Š” ๊ฒƒ
    • vv = np.tile(v, (4,1)) : v์˜ ๋ณต์‚ฌ๋ณธ 4๊ฐœ๋ฅผ ์ฐจ๊ณก์ฐจ๊ณก ์Œ“๋Š”๋‹ค.
    • ํ•˜์ง๋‚˜ ์ด๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š์•„๋„ ์ž๋™์œผ๋กœ ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์ด ๋˜์–ด ์—ด์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์ž๋™์œผ๋กœ tile ๋˜์–ด ์—ฐ์‚ฐ๋œ๋‹ค.

4. ์ „์น˜ ํ–‰๋ ฌ

  • ํ–‰๊ณผ ์—ด์„ ๋ฐ”๊พธ๋Š” ์—ฐ์‚ฐ (x.T ๋กœ ๊ณ„์‚ฐ)
    • ๋‹จ 1์ฐจ์› ๋ฐฐ์—ด์€ ์ „์น˜๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— reshape๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
  • ํ–‰๋ ฌ ๊ณฑ : np.dot(a, b)
  • ํ–‰๋ ฌ ์—ด๊ฐ„, ํ–‰๊ฐ„ ํ†ต๊ณ„ (row R col C)
    • np.sum(a, axis=0) : ํ–‰๊ฐ„ ์—ฐ์‚ฐ, ์ฆ‰ ๊ฐ™์€ ํ–‰๋ผ๋ฆฌ ๋”ํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— (1, C) ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ด
    • np.sum(a, axis=1) : ์—ด๊ฐ„ ์—ฐ์‚ฐ, ์ฆ‰ ๊ฐ™์€ ์—ด๋ผ๋ฆฌ ๋”ํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— (R, 1) ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ด
    • np.prod(๊ณฑ) ์—์„œ axis=0 ์œผ๋กœ ํ•˜๋ฉด ํ–‰๊ฐ„, ๊ฐ™์€ ํ–‰๋ผ๋ฆฌ ๊ณฑํ•ด์ง

ยง Pandas

1. ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„ ๋งŒ๋“ค๊ธฐ

  • ์—‘์…€์ด๋‚˜ csv ํŒŒ์ผ์ฒ˜๋Ÿผ ๊ฐ€๋กœ ์„ธ๋กœ ๋ฐ์ดํ„ฐ ํ†ต๊ณ„๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๊ฐ€๊ณต ์ฒ˜๋ฆฌ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    • csv ์™€ excel ๊ณผ ํ˜ธํ™˜์ด ์ž˜ ๋œ๋‹ค.
  • header ์œ ๋ฌด์˜ ์ฐจ์ด : ๋งจ ์ฒซ๋ฒˆ์งธ์˜ row ๊ฐ€ data ์ธ ๊ฒฝ์šฐ์—๋Š” column title ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— header=None ์ด๋ผ๊ณ  ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
    • index_col = 0 ์€ index column ์„ ์ง€์šฐ๋ผ๋Š” ์˜๋ฏธ

2. ์š”์•ฝ ์ •๋ณด ํ™•์ธํ•˜๊ธฐ

  • head(), tail() : ์•ž / ๋’ค์˜ (default) 5๊ฐœ data ๋ณด์—ฌ์คŒ
  • info() : Dataframe์˜ rangeIndex์™€ ๊ฐ data type, memory usage๋ฅผ ์•Œ๋ ค์คŒ
  • describe()

3. ์—ด ๋‹ค๋ฃจ๊ธฐ

  • dictionary ํ˜•ํƒœ๋กœ ์ถ”์ถœ ๊ฐ€๋Šฅ (ํ˜น์€ data ์›์†Œ๋กœ๋„ ๊ฐ€๋Šฅ) : df['์—ด ์ด๋ฆ„'] ์œผ๋กœ ํ˜ธ์ถœ/์ƒ์„ฑ ๊ฐ€๋Šฅ. ํ˜น์€ df.c1 ํ˜•ํƒœ
  • df.drop('์—ด ์ด๋ฆ„', axis =1 (์—ด ์ง€์šฐ๊ธฐ), inplace=True)
    • inplace=True ๋Š” ์›๋ณธ์— ์ ์šฉํ•˜๋ผ๋Š” ์˜๋ฏธ

4. ํ–‰ ๋‹ค๋ฃจ๊ธฐ

  • ํ–‰์„ ๋ฝ‘์„ ๋•Œ์—๋Š” iloc ์„ ์‚ฌ์šฉํ•œ๋‹ค. (i : index๋กœ list ์—์„œ ์ถ”์ถœ)
  • ํ˜น์€ df.loc['r1'] ์œผ๋กœ ์ถ”์ถœ ๊ฐ€๋Šฅ
  • ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ df.drop ์œผ๋กœ ์ง€์šฐ๊ฒŒ ๋˜๋Š”๋ฐ, axis=0 ์œผ๋กœ ํ•ด์•ผํ•œ๋‹ค.

5. ์›์†Œ ๋‹ค๋ฃจ๊ธฐ

  • iloc ์ด์šฉํ•˜๋ฉด ๊ฐ€๋Šฅ

6. ์™ธ๋ถ€ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ธฐ

  • df.to_csv ํ˜น์€ df.to_excel ๋กœ ์ €์žฅ ๊ฐ€๋Šฅ

ยง Matplotlib

1. ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ž˜ํ”„๋กœ ํ‘œํ˜„ํ•˜๊ธฐ

  • df.plot(kind= ... ) ๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅ
    • 1๊ฐœ์˜ column ์— ๋Œ€ํ•ด์„œ๋งŒ ๋ณด๋ ค๋ฉด df[''].plot() ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
  • kind ์—๋Š” bar, hist (ํžˆ์Šคํ† ๊ทธ๋žจ), scatter ๋“ฑ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • scatter ์€ x, y๋ฅผ ์„ค์ •ํ•ด์ฃผ์–ด ๋‘ column ์˜ ์ƒ๊ด€ ๊ด€๊ณ„๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Œ.
    • box ๋Š” data ์˜ 50% ์„ ํ‘œํ˜„ํ•ด์ฃผ๊ณ  ์–‘ ๋์˜ ๋ง‰๋Œ€๊ธฐ๋Š” 1.5 ๋ฐฐ ํ‘œํ˜„
  • ๊ทธ๋ฆผ์œผ๋กœ๋„ ์ €์žฅ ๊ฐ€๋Šฅ. (matplotlib.pyplot ์„ import ํ•˜์—ฌ plt.savefig ์‚ฌ์šฉ)

2. ์„ ํ˜• ๊ทธ๋ž˜ํ”„ ๊ทธ๋ฆฌ๊ธฐ

  • plt.plot(x, y, 'bo')
  • plt.grid(True)
  • plt.show()

3. ๋ ˆ์ด๋” ์ฐจํŠธ

  • ์‚ฌ์šฉํ•  data ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ

    • df.columns.to_list() ๋ฅผ ์ด์šฉํ•ด์„œ column ์„ list๋กœ ๋ณ€ํ™˜
    • val1 = df.loc[0, :].drop('col').values.tolist()
    • ๋ฐฉ์‚ฌํ˜•์„ ๊ทธ๋ฆด ๋•Œ ์ฒ˜์Œ ์‹œ์ž‘์ ๊ณผ ๋งˆ์ง€๋ง‰ ์ ์„ ์ด์–ด์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— val1 ์˜ ๋งจ ์ฒ˜์Œ ๊ฐ’์„ ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
    • val1 += val1[:1]
    • deg = [n / float(len(var)) * 2 * pi for n in range(len(var))]
  • ํžˆํŠธ๋งต : plt.subplot(111, polar=True)

    • 111 : ํ–‰, ์—ด, ์ˆœ๋ฒˆ ์ฆ‰ 1ํ–‰1์—ด ๊ทธ๋ž˜ํ”„ ์ค‘ ์ฒซ๋ฒˆ์งธ ๊ทธ๋ž˜ํ”„
    • polar ์†์„ฑ : ๊ทธ๋ž˜ํ”„๊ฐ€ ๊ตฌํ˜•์œผ๋กœ ๋ณ€ํ˜•๋จ
    • ๊ตฌํ˜• ๊ทธ๋ž˜ํ”„์˜ ๋ฐ”๊นฅ์ชฝ์— ๋‘˜๋Ÿฌ์Œ“์ธ ๊ฒƒ์€ xticks ์ด๊ณ  ๋‚ด๋ถ€ ๊ฐ’์€ yticks
    • plt.xticks(deg[:-1], var, color='grey', size=10)
    • plt.ylim(0, 100) ๋ฒ”์œ„ ์ง€์ •
    • plt.yticks
    • ax.set_rlabel_position(degree) : y๊ฐ’์— ๋Œ€ํ•œ label ์„ ํ‘œํ˜„ํ•ด์ฃผ๋Š” ์œ„์น˜ ์ง€์ •
  • ๋‚ด์šฉ ์ฑ„์šฐ๊ธฐ

    • ax.plot(deg, val1, linewidth=..., linestyple=..., label=...) : ๊ทธ๋ž˜ํ”„ ์„ ์„ ๊ทธ๋ ค์ฃผ๋Š” ์—ญํ• 
    • ax.fill : ์•ˆ์˜ ์ƒ‰์„ ์ฑ„์›Œ์ฃผ๋Š” ์—ญํ• 
    • plt.legend (๋ฒ”๋ก€) (loc='best', bbox_to_anchor=(,) ์œ„์น˜) : ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•œ ์š”์•ฝ ๋‚ด์šฉ์„ ๋„ฃ์–ด์ฃผ๋Š” ์—ญํ• 

๋งˆ์ง€๋ง‰ ์ธ๊ฐ•

ยง ์‹ค์ „ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ์‹œ๊ฐํ™”

ref : https://github.com/imguru-mooc/python_intermediate