@@ -88,9 +88,9 @@ ax = monthly.plot(kind='bar')
8888```
8989![ Monthly Time Series Averages] ( ../images/timeseries-3.png )
9090
91- ### ๋ฐ์ดํฐํ๋ ์
91+ ### ๋ฐ์ดํฐํ๋ ์(DataFrame)
9292
93- ๋ฐ์ดํฐํ๋ ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ผํ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง ์๋ฆฌ์ฆ ๋ชจ์์
๋๋ค. ์ฌ๋ฌ ์๋ฆฌ์ฆ๋ฅผ ๋ฐ์ดํฐํ๋ ์์ผ๋ก ๊ฒฐํฉํ ์ ์์ต๋๋ค:
93+ ๋ฐ์ดํฐํ๋ ์(DataFrame)์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ผํ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง ์๋ฆฌ์ฆ ๋ชจ์์
๋๋ค. ์ฌ๋ฌ ์๋ฆฌ์ฆ๋ฅผ DataFrame์ผ๋ก ๊ฒฐํฉํ ์ ์์ต๋๋ค:
9494``` python
9595a = pd.Series(range (1 ,10 ))
9696b = pd.Series([" I" ," like" ," to" ," play" ," games" ," and" ," will" ," not" ," change" ],index = range (0 ,9 ))
@@ -126,15 +126,15 @@ df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
126126```
127127์ฌ๊ธฐ์ ` .T ` ๋ ํ๊ณผ ์ด์ ๋ณ๊ฒฝํ๋ DataFrame์ ์ ์นํ๋ ์์
, ์ฆ ํ๊ณผ ์ด์ ๋ณ๊ฒฝํ๋ ์์
์ ์๋ฏธํ๋ฉฐ ` rename ` ์์
์ ์ฌ์ฉํ๋ฉด ์ด์ ์์ ์ ์ผ์นํ๋๋ก ์ด ์ด๋ฆ์ ๋ฐ๊ฟ ์ ์์ต๋๋ค.
128128
129- ๋ค์์ ๋ฐ์ดํฐํ๋ ์์์ ์ํํ ์ ์๋ ๋ช ๊ฐ์ง ๊ฐ์ฅ ์ค์ํ ์์
์
๋๋ค:
129+ ๋ค์์ DataFrame์์ ์ํํ ์ ์๋ ๋ช ๊ฐ์ง ๊ฐ์ฅ ์ค์ํ ์์
์
๋๋ค:
130130
131- ** ํน์ ์ปฌ๋ผ ์ ํ(Column selection)** . ` df['A'] ` ๋ฅผ ์์ฑํ์ฌ ๊ฐ๋ณ ์ด์ ์ ํํ ์ ์์ต๋๋ค. ์ด ์์
์ ์๋ฆฌ์ฆ๋ฅผ ๋ฐํํฉ๋๋ค. ๋ํ ` df[['B','A']] ` ๋ฅผ ์์ฑํ์ฌ ์ด์ ํ์ ์งํฉ์ ๋ค๋ฅธ ๋ฐ์ดํฐํ๋ ์์ผ๋ก ์ ํํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ค๋ฅธ ๋ฐ์ดํฐํ๋ ์์ด ๋ฐํ๋ฉ๋๋ค.
131+ ** ํน์ ์ปฌ๋ผ ์ ํ(Column selection)** . ` df['A'] ` ๋ฅผ ์์ฑํ์ฌ ๊ฐ๋ณ ์ด์ ์ ํํ ์ ์์ต๋๋ค. ์ด ์์
์ ์๋ฆฌ์ฆ๋ฅผ ๋ฐํํฉ๋๋ค. ๋ํ ` df[['B','A']] ` ๋ฅผ ์์ฑํ์ฌ ์ด์ ํ์ ์งํฉ์ ๋ค๋ฅธ DataFrame์ผ๋ก ์ ํํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ค๋ฅธ DataFrame์ด ๋ฐํ๋ฉ๋๋ค.
132132
133133** ํํฐ๋ง(Filtering)** ์ ๊ธฐ์ค์ ๋ฐ๋ผ ํน์ ํ๋ง ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด ` A ` ์ด์ด 5๋ณด๋ค ํฐ ํ๋ง ๋จ๊ธฐ๋ ค๋ฉด ` df[df['A']>5] ` ๋ผ๊ณ ์ธ ์ ์์ต๋๋ค.
134134
135- > ** ์ฃผ์** : ํํฐ๋ง์ด ์๋ํ๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ํํ์ ` df['A']<5 ` ๋ ์๋ ์๋ฆฌ์ฆ ` df['A'] ` ์ ๊ฐ ์์์ ๋ํด ํํ์์ด ` True ` ์ธ์ง ์๋๋ฉด ` False ` ์ธ์ง๋ฅผ ๋ํ๋ด๋ ` ๋ถ์ธ(Boolean) ` ์๋ฆฌ์ฆ๋ฅผ ๋ฐํํฉ๋๋ค. ๋ถ์ธ ๊ณ์ด์ด ์ธ๋ฑ์ค๋ก ์ฌ์ฉ๋๋ฉด ๋ฐ์ดํฐํ๋ ์์์ ํ์ ํ์ ์งํฉ์ ๋ฐํํฉ๋๋ค. ๋ฐ๋ผ์ ์์์ Python ๋ถ์ธ ํํ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ` df[df['A']>5 ๋ฐ df['A']<7] ` ๋ฅผ ์์ฑํ๋ ๊ฒ์ ์๋ชป๋ ๊ฒ์
๋๋ค. ๋์ , ๋ถ์ธ ๊ณ์ด์ ํน์ ` & ` ์ฐ์ฐ์ ์ฌ์ฉํ์ฌ ` df[(df['A']>5) & (df['A']<7)] ` ๋ก ์์ฑํด์ผ ํฉ๋๋ค(* ์ฌ๊ธฐ์ ๋๊ดํธ๊ฐ ์ค์ํฉ๋๋ค* ).
135+ > ** ์ฃผ์** : ํํฐ๋ง์ด ์๋ํ๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ํํ์ ` df['A']<5 ` ๋ ์๋ ์๋ฆฌ์ฆ ` df['A'] ` ์ ๊ฐ ์์์ ๋ํด ํํ์์ด ` True ` ์ธ์ง ์๋๋ฉด ` False ` ์ธ์ง๋ฅผ ๋ํ๋ด๋ ` ๋ถ์ธ(Boolean) ` ์๋ฆฌ์ฆ๋ฅผ ๋ฐํํฉ๋๋ค. ๋ถ์ธ ๊ณ์ด์ด ์ธ๋ฑ์ค๋ก ์ฌ์ฉ๋๋ฉด DataFrame์์ ํ์ ํ์ ์งํฉ์ ๋ฐํํฉ๋๋ค. ๋ฐ๋ผ์ ์์์ Python ๋ถ์ธ ํํ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ` df[df['A']>5 ๋ฐ df['A']<7] ` ๋ฅผ ์์ฑํ๋ ๊ฒ์ ์๋ชป๋ ๊ฒ์
๋๋ค. ๋์ , ๋ถ์ธ ๊ณ์ด์ ํน์ ` & ` ์ฐ์ฐ์ ์ฌ์ฉํ์ฌ ` df[(df['A']>5) & (df['A']<7)] ` ๋ก ์์ฑํด์ผ ํฉ๋๋ค(* ์ฌ๊ธฐ์ ๋๊ดํธ๊ฐ ์ค์ํฉ๋๋ค* ).
136136
137- ** ์๋ก์ด ๊ณ์ฐ ๊ฐ๋ฅํ ์ด ๋ง๋ค๊ธฐ** . ์ฐ๋ฆฌ๋ ์ง๊ด์ ์ธ ํํ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐํ๋ ์์ ๋ํ ์๋ก์ด ๊ณ์ฐ ๊ฐ๋ฅํ ์ด์ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.:
137+ ** ์๋ก์ด ๊ณ์ฐ ๊ฐ๋ฅํ ์ด ๋ง๋ค๊ธฐ** . ์ฐ๋ฆฌ๋ ์ง๊ด์ ์ธ ํํ์ ์ฌ์ฉํ์ฌ DataFrame์ ๋ํ ์๋ก์ด ๊ณ์ฐ ๊ฐ๋ฅํ ์ด์ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.:
138138``` python
139139df[' DivA' ] = df[' A' ]- df[' A' ].mean()
140140```
@@ -152,7 +152,7 @@ df['LenB'] = df['B'].apply(lambda x : len(x))
152152df[' LenB' ] = df[' B' ].apply(len )
153153```
154154
155- ์์ ์์
ํ์ ๋ค์๊ณผ ๊ฐ์ ๋ฐ์ดํฐํ๋ ์์ด ์์ฑ๋ฉ๋๋ค:
155+ ์์ ์์
ํ์ ๋ค์๊ณผ ๊ฐ์ DataFrame์ด ์์ฑ๋ฉ๋๋ค:
156156
157157| | A | B | DivA | LenB |
158158| --- | --- | ------ | ---- | ---- |
@@ -166,12 +166,12 @@ df['LenB'] = df['B'].apply(len)
166166| 7 | 8 | very | 3.0 | 4 |
167167| 8 | 9 | much | 4.0 | 4 |
168168
169- ** ์ซ์๋ฅผ ๊ธฐ์ค์ผ๋ก ํ ์ ํ** ` iloc(์ ์ ์์น:integer location) ` ๊ตฌ์ฑ์ ์ฌ์ฉํ์ฌ ์ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐ์ดํฐํ๋ ์์์ ์ฒ์ 5๊ฐ ํ์ ์ ํํ๋ ค๋ฉด:
169+ ** ์ซ์๋ฅผ ๊ธฐ์ค์ผ๋ก ํ ์ ํ** ` iloc(์ ์ ์์น:integer location) ` ๊ตฌ์ฑ์ ์ฌ์ฉํ์ฌ ์ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด DataFrame์์ ์ฒ์ 5๊ฐ ํ์ ์ ํํ๋ ค๋ฉด:
170170``` python
171171df.iloc[:5 ]
172172```
173173
174- ** ๊ทธ๋ฃนํ(Grouping)** ๋ ์ข
์ข
Excel์ * ํผ๋ฒ ํ
์ด๋ธ* ๊ณผ ์ ์ฌํ ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ฃผ์ด์ง ` LenB ` ์์ ๋ํด ` A ` ์ด์ ํ๊ท ๊ฐ์ ๊ณ์ฐํ๋ ค๊ณ ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ` LenB ` ๋ก ๋ฐ์ดํฐํ๋ ์์ ๊ทธ๋ฃนํํ๊ณ ` mean ` ์ ํธ์ถํ ์ ์์ต๋๋ค:
174+ ** ๊ทธ๋ฃนํ(Grouping)** ๋ ์ข
์ข
Excel์ * ํผ๋ฒ ํ
์ด๋ธ* ๊ณผ ์ ์ฌํ ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ฃผ์ด์ง ` LenB ` ์์ ๋ํด ` A ` ์ด์ ํ๊ท ๊ฐ์ ๊ณ์ฐํ๋ ค๊ณ ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ` LenB ` ๋ก DataFrame์ ๊ทธ๋ฃนํํ๊ณ ` mean ` ์ ํธ์ถํ ์ ์์ต๋๋ค:
175175``` python
176176df.groupby(by = ' LenB' ).mean()
177177```
@@ -193,7 +193,7 @@ This gives us the following table:
193193
194194### ๋ฐ์ดํฐ ์ป๊ธฐ
195195
196- ์ฐ๋ฆฌ๋ Python ๊ฐ์ฒด์์ ์๋ฆฌ์ฆ ๋ฐ ๋ฐ์ดํฐํ๋ ์์ ๊ตฌ์ฑํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ฌ์ด์ง ๋ณด์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฐ์ดํฐ๋ ์ผ๋ฐ์ ์ผ๋ก ํ
์คํธ ํ์ผ ๋๋ Excel ํ์ ํํ๋ก ์ ๊ณต๋ฉ๋๋ค. ์ด ์ข๊ฒ๋ Pandas๋ ๋์คํฌ์์ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด CSV ํ์ผ์ ์ฝ๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ๋จํฉ๋๋ค:
196+ ์ฐ๋ฆฌ๋ Python ๊ฐ์ฒด์์ ์๋ฆฌ์ฆ ๋ฐ DataFrame์ ๊ตฌ์ฑํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ฌ์ด์ง ๋ณด์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฐ์ดํฐ๋ ์ผ๋ฐ์ ์ผ๋ก ํ
์คํธ ํ์ผ ๋๋ Excel ํ์ ํํ๋ก ์ ๊ณต๋ฉ๋๋ค. ์ด ์ข๊ฒ๋ Pandas๋ ๋์คํฌ์์ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด CSV ํ์ผ์ ์ฝ๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ๋จํฉ๋๋ค:
197197``` python
198198df = pd.read_csv(' file.csv' )
199199```
@@ -202,7 +202,7 @@ df = pd.read_csv('file.csv')
202202
203203### ์ถ๋ ฅ(Printing) ๋ฐ ํ๋กํ
(Plotting)
204204
205- ๋ฐ์ดํฐ ๊ณผํ์๋ ์ข
์ข
๋ฐ์ดํฐ๋ฅผ ํ์ํด์ผ ํ๋ฏ๋ก ์๊ฐํํ ์ ์๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ฐ์ดํฐํ๋ ์์ด ํด ๋ ์ฒ์ ๋ช ํ์ ์ธ์ํ์ฌ ๋ชจ๋ ์์
์ ์ฌ๋ฐ๋ฅด๊ฒ ์ํํ๊ณ ์๋์ง ํ์ธํ๋ ค๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๊ฒ์ ` df.head() ` ๋ฅผ ํธ์ถํ์ฌ ์ํํ ์ ์์ต๋๋ค. Jupyter Notebook์์ ์คํํ๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐํ๋ ์์ ๋ฉ์ง ํ ํ์์ผ๋ก ์ธ์ํฉ๋๋ค.
205+ ๋ฐ์ดํฐ ๊ณผํ์๋ ์ข
์ข
๋ฐ์ดํฐ๋ฅผ ํ์ํด์ผ ํ๋ฏ๋ก ์๊ฐํํ ์ ์๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. DataFrame์ด ํด ๋ ์ฒ์ ๋ช ํ์ ์ธ์ํ์ฌ ๋ชจ๋ ์์
์ ์ฌ๋ฐ๋ฅด๊ฒ ์ํํ๊ณ ์๋์ง ํ์ธํ๋ ค๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๊ฒ์ ` df.head() ` ๋ฅผ ํธ์ถํ์ฌ ์ํํ ์ ์์ต๋๋ค. Jupyter Notebook์์ ์คํํ๋ ๊ฒฝ์ฐ DataFrame์ ๋ฉ์ง ํ ํ์์ผ๋ก ์ธ์ํฉ๋๋ค.
206206
207207๋ํ ์ผ๋ถ ์ด์ ์๊ฐํํ๊ธฐ ์ํด 'plot' ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ณด์์ต๋๋ค. ` plot ` ์ ๋ง์ ์์
์ ๋งค์ฐ ์ ์ฉํ๊ณ ` kind= ` ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ๋ค์ํ ๊ทธ๋ํ ์ ํ์ ์ง์ํ์ง๋ง, ํญ์ ์์ ` matplotlib ` ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๋ณต์กํ ๊ฒ์ ๊ทธ๋ฆด ์ ์์ต๋๋ค. ๋ฐ์ดํฐ ์๊ฐํ๋ ๋ณ๋์ ๊ฐ์์์ ์์ธํ ๋ค๋ฃฐ ๊ฒ์
๋๋ค.
208208
0 commit comments