3 Thu
ํ์
์ค๋ฌด์์๊ฒ ๋ฐฐ์ฐ๋ Kaggle ๋จธ์ ๋ฌ๋ ์
๋ฌธ
๋จธ์ ๋ฌ๋๊ณผ ๋ฐ์ดํฐ ๋ถ์์ ์ํ ๋๊ตฌ ์๊ฐ
numpy
๋ฐฐ์ด์ ๋ค๋ฃจ๋ ๋๊ตฌ
Numerical Python์ ์ฝ์ด
๋ค์ฐจ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค
pandas
๋ฐ์ดํฐ ํ๋ฅผ ๋ค๋ฃจ๋ ๋๊ตฌ
Python Data Analysis Library์ ์ฝ์ด
2์ฐจ์ ํ ์ด๋ธ ํํ๋ฅผ ๋งค์ฐ ์ ๋ค๋ฃฌ๋ค
Matplotlib
๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๊ฑฐ๋ ๋ถํฌ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์๊ฐํ ํจํค์ง
์ฐ๊ตฌ์ฉ์ผ๋ก ๋ง์ด ์ฐ์ธ MATLAB์ ์ฝ๋ ์คํ์ผ์ ๋ชจ๋ฐฉ
Matlab-style Plotting Library
๊ธฐ๋ฅ์ ๋ง์ผ๋ ์ฝ๊ฐ ๋ถํธํจ
Seaborn
matplotlib์ ๊ฐ์ธ์ ๋ง๋ ์ฌ์ด ํ์ด์ฌ ์๊ฐํ ํจํค์ง
Seaborn์ ํจ์๋ฅผ ํธ์ถํ๋ฉด matplotlib์ ํจ์๊ฐ ํธ์ถ๋๋ค๋ ์๋ฏธ
๋ค์ํ๊ณ ํ๋ คํ ๊ทธ๋ํ๋ฅผ, matplotlib๋ณด๋ค ์ฌ์ด ์ฝ๋๋ก ๊ทธ๋ฆด ์ ์์
๋ํ matplotlib์ ๋ช ๋ น์ด๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉ ๊ฐ๋ฅ
numpy, ๋ฐฐ์ด๊ณผ ํ๋ ฌ์ ๋ค๋ฃจ๋ ๋๊ตฌ
numpy ์ํฌํธ
import numpy as np
๋ฆฌ์คํธ๋ก ๋ฐฐ์ด ์์ฑ
np.array(๋ฆฌ์คํธ)
๋ชจ์ ํ์ธ
np_arr.shape
์ด๊ธฐํ ํจ์
0์ผ๋ก ์ฑ์ฐ๊ธฐ :
np.zeros(shape)
1๋ก ์ฑ์ฐ๊ธฐ :
np.ones(shape)
๋๋คํ ์ซ์ ๋ฐฐ์ด :
np.random.randn(rows, columns)
์ธ๋ฑ์ฑ๊ณผ ์ฌ๋ผ์ด์ฑ
์ธ๋ฑ์ฑ :
np.arr[n][m]
์ธ๋ฑ์ค์ ์์์ 0
์ฌ๋ผ์ด์ฑ :
np.arr[start:end:interval]
๋ง์ง๋ง ์์๋ฅผ ํฌํจํ์ง ์๋๋ค.
Broadcasting, Aggregation
๋ธ๋ก๋์บ์คํ
๋ค์ฐจ์ ๋ํ์ด ๋ฐฐ์ด๊ณผ ํ๋์ ์ซ์๋ฅผ ์ฌ์น์ฐ์ฐ ํ ๊ฒฝ์ฐ ๋ํ์ด ๋ฐฐ์ด์ ๋ชจ๋ ์์์ ๋ํด ํ๋์ ์ซ์์์ ์ฌ์น ์ฐ์ฐ์ด ์ ์ฉ๋๋ค
์ง๊ณ
sum, mean, prod, max, min, argmax, argmin
numpy ์ค์ต
pandas, ํ๊ณผ ์ด์ ๊ฐ์ง ํ
์ด๋ธ์ ๋ค๋ฃจ๋ ๋ฐ์ดํฐ ๋ถ์ ๋๊ตฌ
ํ๋ค์ค์ ๋ฑ์ฅ ์ด์
๋ฐ์ดํฐ์ row์ column์ ๋ผ๋ฒจ๋ง์ ํ๊ณ ์ถ์๊ธฐ ๋๋ฌธ
1์ฐจ์ ๋ฐ์ดํฐ
Series๋ฅผ ์ฌ์ฉํ๋ค
Series ์ ๊ทผ, ์ฐ์ฐ, ์์ฑ
์ด์ด๋ ํ ์ด๋ฆ์ผ๋ก ์ธ๋ฑ์ฑ :
pd.series.loc[์ธ๋ฑ์ค]
๋ฆฌ์คํธ ๋ฒํธ๋ก ์ธ๋ฑ์ฑ :
pd.series.iloc[๋ฒํธ]
์ด ๋ loc๋ ๋์ ํฌํจํ๋ฉฐ iloc๋ ๋์ ํฌํจํ์ง ์๋๋ค
Series ์์ฑ :
new_sr = pd.Series([1, 2, 3, 4], name = 'apple', index=['a', 'b', 'xs', 'e11'])
name์ ๊ธฐ๋ณธ๊ฐ์ None
index์ ๊ธฐ๋ณธ๊ฐ์ 0, 1, 2, 3, ...
2์ฐจ์ ๋ฐ์ดํฐ
DataFrame์ ์ฌ์ฉํ๋ค.
์ฌ๋ฌ ๊ฐ์ Series๋ฅผ ๋ฌถ์ด์ ๋ง๋ ํํ
DataFrame ์ฐ์ฐ ์ด ์ ๋ฆฌ
๋จ์ผ ์ฐ์ฐ
abs()
: ์ ๋๊ฐisna()
: na์ฌ๋ถnotna()
: ์ ํจ์ฌ๋ถpow()
: ๊ฑฐ๋ญ์ ๊ณฑ
์ถ ๋ฐฉํฅ ์ฐ์ฐ (axis = 0 or 1)
mean()
: ํ๊ทmedian()
: ์ค์๊ฐmax(), min()
: ์ต๋๊ฐ, ์ต์๊ฐsum(), prod()
: ๋ํ๊ธฐ, ๊ณฑํ๊ธฐidxmax(), idxmin()
: ์ต๋์์์ ์ธ๋ฑ์ค, ์ต์์์์ ์ธ๋ฑ์ค
๋์ ์ถ ๋ฐฉํฅ ์ฐ์ฐ (axis = 0 or 1)
cummax(), cummin()
: ๋์ ์ต๋๊ฐ, ๋์ ์ต์๊ฐcumprod(), cumsum()
: ๋์ ๊ณฑ์ , ๋์ ๋ง์
์ ๋ ฌ
df.sort_values(์ ๋ ฌ๊ธฐ์ค, axis= ์ถ, ascending=True)
df.rank(axis = ์ถ, ascending=True)
์์ฑ
pd.DataFrame([[0,1 ,2], [3, 4, 5]], index=[0, 1], columns=['a', 'b', 'c']
csvํ์ผ ๋ถ๋ฌ์ค๊ธฐ, ์ ์ฅํ๊ธฐ
์ ์ฅํ๊ธฐ :
df.to_csv('filename')
์ด ๋ ํ๊ธ์๋ฃ์ ๊ฒฝ์ฐ
encoding='cp949'
๋ก ์ง์ ํด์ค์ผํจ
๋ถ๋ฌ์ค๊ธฐ :
pd.read_csv('filename')
๋ง์ฐฌ๊ฐ์ง๋ก ํ๊ธ์๋ฃ์ ๊ฒฝ์ฐ ์ธ์ฝ๋ฉ ๋ช ์
pandas ์ค์ต
<์ฐ์ต๋ฌธ์ >
my_df์์ A005950 ์ข ๋ชฉ์ 2020-09-16์ ์ฃผ๊ฐ๋ฅผ ๋ฝ์๋ณด์ธ์
[7 ]my_df.loc['2020-09-16', 'A005950']
<์ฐ์ต๋ฌธ์ >
my_df์์ A005950 ์ข ๋ชฉ์ 2020-09-10 ~ 2020-09-15 ์ ์ฃผ๊ฐ๋ฅผ ๋ฝ์๋ณด์ธ์
[8] my_df.loc['2020-09-10':'2020-09-15', 'A005950']
<์ฐ์ต๋ฌธ์ >
my_df์์ A005930๊ณผ A005950 ์ข ๋ชฉ์ 2020-09-10 ~ 2020-09-17 ์ ์ฃผ๊ฐ๋ฅผ ์ดํ ๊ฐ๊ฒฉ์ผ๋ก ๋ฝ์๋ณด์ธ์
[9] my_df.loc['2020-09-10':'2020-09-17':2, 'A005950']
<์ฐ์ต๋ฌธ์ >
my_df์์ A005950์ข ๋ชฉ์ ์ ์ฒด ๊ธฐ๊ฐ์ ์ฃผ๊ฐ์ ํ๊ท ์ ๊ตฌํด๋ณด์์ค
[10] my_df.A005950.mean()
<์ฐ์ต๋ฌธ์ >
my_df์์ A005980์ข ๋ชฉ 2020-09-14 ์ดํ ์ฃผ๊ฐ์ ์ผ๋ณ ์ํ๊ฐ๋ฅผ ๊ตฌํด๋ณด์ธ์ (์ํ๊ฐ: 30% ์์น)
[19] my_df.loc['2020-09-14':, 'A005980'] * 1.3
<์ฐ์ต๋ฌธ์ >
my_df์์ ๋ชจ๋ ์ข ๋ชฉ์ 2020-09-17 ~ 2020-09-24 ๊ธฐ๊ฐ์ ์์ต๋ฅ ์ ๊ตฌํด๋ณด์ธ์ (% ๋จ์)
[23](my_df.loc['2020-09-24'] / my_df.loc['2020-09-17'] - 1) * 100
<์ฐ์ต๋ฌธ์ >
my_df์์ 2020-09-16์ผ์์ ์ฃผ๊ฐ ๋ค์ ๋ด๋ฆผ์ฐจ์ ์์๋ก ์ ๋ ฌํด๋ณด์ธ์
[24] my_df.sort_values('2020-09-16', axis='columns', ascending=False)
<์ฐ์ต๋ฌธ์ >
my_df์์ 2020-09-09 ~ 2020-09-18 ์ ์ ์ข ๋ชฉ ์์ต๋ฅ ์ ๊ณ์ฐํ์ฌ ์์๋ฅผ ์ถ๋ ฅํด๋ณด์ธ์ (์์ต๋ฅ ๋์ ์) 9/9 ์ข ๊ฐ ๋งค์ ~ 9/18 ์ข ๊ฐ ๋งค๋
[26] ((my_df.loc['2020-09-18'] / my_df.loc['2020-09-09'] - 1) * 100).rank(ascending=False)
Last updated
Was this helpful?