๋ฌ๋์คํผ ์์ ์ ๋ฆฌ
* ํ๋ค์ค ๊ธฐ๋ณธ ํจ์
๋ฐ์ดํฐ ํ์ผ ์ฝ๊ธฐ : read_excel(), read_csv()
๋ฐ์ดํฐ ์ ํํ๊ธฐ : df.loc(), df.iloc()
์ธ๋ฑ์ค/ ์ปฌ๋ผ ๋ณ๊ฒฝํ๊ธฐ : columns/ index , reset_index()
pandas vs excel
pandas : ๊ฐ๋ณ๊ณ ๋นจ๋ผ์ ๋์ฉ๋ ํ์ผ ์์ ์ ์์ ๋กญ๊ฒ ํ ์ ์๋ค.
excel : ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ๋์ ๋ณด์ธ๋ค. (๋ฐ์ดํฐ๊ฐ ๋ง์ ์ง์ ๋ณด๊ธฐ ์ด๋ ค์ธ ์ ์๋ค. )
pandas ๊ตฌ์กฐ
- DataFrame : ํ ํํ
- index : DB์ key ๊ฐ๋ , ์์ ์์๋ ๋ณดํต ์ฒซ ๋ฒ์งธ ์ด์ ๋ฐฐ์นํ๋ ๋ฐ์ดํฐ (vlookup ๋ฑ์ ํ์ฉ)
- columns : ํ๋์ ์์ฑ์ ๊ฐ์ง ๋ฐ์ดํฐ์ ์งํฉ -> index + column ํ๋๋ก ๋๋์ด ์ดํด ๋ณผ ์ ์์
- Series : ํ๋์ ์์ฑ์ ๊ฐ์ง ๋ฐ์ดํฐ ์งํฉ ( DataFrame ์์ ํ๋์ ์ด ๋ฐ์ดํฐ )
1. Pandas ๋ถ๋ฌ์ค๊ธฐ
- pandas ์ค์น
!pip install pandas
- pandas ๋ถ๋ฌ์ค๊ธฐ
import pandas as pd
2. ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ & ๋ฐ์ดํฐ ์ดํด๋ณด๊ธฐ
* ํ์ผ์ ๊ฒฝ๋ก
- ์ ๋๊ฒฝ๋ก : "c:ํด๋1/ํด๋2/.../ํ์ผ๋ช .ํ์ฅ์"
- ์๋๊ฒฝ๋ก : "./ํด๋3/.../ํ์ผ๋ช .ํ์ฅ์" , "../ํด๋4/.../ํ์ผ๋ช .ํ์ฅ์" (์ฅฌํผํฐ ๋ ธํธ๋ถ ํ์ผ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ์ง์ )
- ./ : ํ์ฌ ์์น ../ : ๋ถ๋ชจ ํด๋
* ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ๋ค์ธ ๋ค์๋ head(), info(), descrive() ๋ช ๋ น์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ดํด๋ณด๋ ์ต๊ด ๊ฐ๊ธฐ
temp = pd.read_excel('./data/exam.xlsx')
temp
temp.head(2)
head ์ธ์์ ๊ฐ์๋ฅผ ์ง์ ํด ์ค ์ ์๋ค.
temp.tail()
- info () : ๋ฐ์ดํฐํ๋ ์์ ์ธ๋ฑ์ค, ์ปฌ๋ผ์ ๋ฐ์ดํฐ ๊ฐ์์ ์ข ๋ฅ ํ์ธ
temp.info()
- describe() : ์์นํ ๋ฐ์ดํฐ (inf, float) ๊ฐ ๋ค์ด์๋ ์ปฌ๋ผ์ ๊ธฐ์ดํต๊ณ๋ (๊ฐ์,ํ๊ท ,ํ์คํธ์ฐจ,์ฌ๋ถ์ ๋ฑ) ํ์ธ
temp.describe()
2-1 ์ธ๋ฑ์ค ์ง์
- set_index() : ์ธ๋ฑ์ค ์ปฌ๋ผ ์ง์ ํ๊ธฐ (์ปฌ๋ผ -> ์ธ๋ฑ์ค)
data = temp.set_index('๋ฒํธ')
data.head()
set_index๋ฅผ ์ด์ฉํ์ฌ '๋ฒํธ' ์ปฌ๋ผ์ ์ธ๋ฑ์ค๋ก ์ง์ ํด ์ฃผ์๋ค.
- index_col : ์์ ํ์ผ ์ฝ์ด์ฌ ๋ ์ธ๋ฑ์ค ์ง์
temp2 = pd.read_excel('./data/exam.xlsx', index_col = 0) # index_col = '๋ฒํธ' (์ปฌ๋ผ๋ช
ํ์ฉ)
temp2.head()
3. ๋ฐ์ดํฐ ์ ํํ๊ธฐ
- ์ ์ ํํ๊ธฐ (1๊ฐ)
df.iloc[row, column] : ์ธ๋ฑ์ค ๋ฒํธ
df.lic[row, column] : ์ด๋ฆ
data
data.iloc[1, 2]
55
data.loc['1๋ฒ','์ํ']
75
print(data.loc['3๋ฒ','์์ด'])
print(data.iloc[2, 1])
100
100
print(data.loc['1๋ฒ', '๊ตญ์ด'])
print(data.iloc[0, 0])
70
70
- ์ ์ ํํ๊ธฐ (๋ณต์)
: ๋ฆฌ์คํธ ( [์กฐ๊ฑด1, ์กฐ๊ฑด2, ... ์กฐ๊ฑดn] ) ํน์ ์์:์ข ๋ฃ ํํ๋ก ๋ฒ์ ์ง์
data.loc['1๋ฒ', ['๊ตญ์ด', '์์ด']]
๊ตญ์ด 70
์์ด 80
Name: 1๋ฒ, dtype: int64
data.loc[ ['1๋ฒ','2๋ฒ'] , '์ํ']
๋ฒํธ
1๋ฒ 75
2๋ฒ 55
Name: ์ํ, dtype: int64
data.loc['1๋ฒ', '์์ด': ]
์์ด 80
์ํ 75
Name: 1๋ฒ, dtype: int64
- ์ปฌ๋ผ ์ ํํ๊ธฐ (1๊ฐ)
: data.์ปฌ๋ผ๋ช or data.['์ปฌ๋ผ๋ช ']
data.loc[ : , '์ํ']
data['์ํ']
data['์์ด']
- ์ปฌ๋ผ ์ ํํ๊ธฐ (๋ณต์)
: ์ํ๋ ์์๋๋ก ์ ํ ๊ฐ๋ฅ
data[ ['์ํ','์์ด'] ]
data[ ['์ํ','์์ด','๊ตญ์ด'] ]
์๋๋ ๊ตญ์ด ์์ด ์ํ ์์์๋๋ฐ ์์๊ฐ์ด ์์๋ฅผ ๋ฌ๋ฆฌ ํ์ฌ ์ถ๋ ฅํ ์ ์๋ค.
- ํน์ ์กฐ๊ฑด ๋ฐ์ดํฐ ์ ํํ๊ธฐ (ํ๊ฐ)
pd[condition] : True์ธ ๋ฐ์ดํฐ๋ง ์ถ๋ ฅ
-> condition : True / False ๋ก ๊ตฌ์ฑ๋ ๋ฆฌ์คํธ or ์๋ฆฌ์ฆ
data
cond = data['์ํ'] < 80
cond
์ด๋ ๊ฒ ์ํ ์ปฌ๋ผ์ ๋ํด ์กฐ๊ฑด์ ์์ฑํ๋ฉด boolํ์ ์ ๋ฐํํด ์ค๋ค.
data[ cond ]
์์ ์กฐ๊ฑด์ ๋ฐ์ดํฐํ๋ ์์ ์ ์ฉํ๋ฉด True์ธ row๋ค๋ง ๋์ค๊ฒ ๋๋ค.
cond = [True, False, True] # data['์์ด'] > 80
data[cond]
๋ฆฌ์คํธ์ ์ง์ boolํ์ ์ ๋ฃ์ด ๋ฝ์์ค ์๋ ์๋ค. ์ด ๋ ๋ฆฌ์คํธ์ ๊ฐ์์ row์ ๊ฐ์๋ ๊ฐ์์ผ ํ๋ค.
- ํน์ ์กฐ๊ฑด ๋ฐ์ดํฐ ์ ํํ๊ธฐ (์ฌ๋ฌ๊ฐ์ ์กฐ๊ฑด)
& : and , ๋ชจ๋ ์กฐ๊ฑด ๋ง์กฑ True
| : or , ํ ๊ฐ๋ผ๋ ๋ง์กฑํ๋ฉด True
cond3 = (data['์์ด'] > 80)
cond4 = (data['์ํ'] > 80)
data[ cond3 | cond4]
cond3 = (data['์์ด'] > 80)
cond4 = (data['์ํ'] > 80)
cond = cond3 & cond4
data[ cond ]
cond = (data['์์ด'] >= 70) & (data['์ํ'] >= 70) & (data['์ํ'] < 90)
data[ cond ]
cond = (data['์์ด'] >= 70) \
& (data['์ํ'] >= 70) \
& (data['์ํ'] < 90)
data[ cond ]
์ค์ ๋ฐ๊ฟ ๋ \(์ญ์ฌ๋์ฌ) ๋ฅผ ์ฌ์ฉํด ์ค๋ค. ๊ฐ๋ ์ฑ์ด ์ข์์ง๋ค.
cond_first = ( data['๊ตญ์ด'] > 80)
cond_second = ( data['์์ด'] > 80)
cond = cond_first & cond_second
data[cond]
cond_first = ( data['๊ตญ์ด'] > 80 )
cond_second = ( data['์์ด'] > 80 )
cond = cond_first | cond_second
data[cond]
index & column
data.index
Index(['1๋ฒ', '2๋ฒ', '3๋ฒ'], dtype='object', name='๋ฒํธ')
data.index = ['๊ฐ๋ฐ', '๋๋ฐ', '๋ค๋ฐ']
์ธ๋ฑ์ค๋ฅผ ๋ฆฌ์คํธ๋ก ์ค์ ํด ์ค ์ ์๋ค.
data
์ค์ ํ ๋๋ก ๋ฐ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
data.columns
Index(['๊ตญ์ด', '์์ด', '์ํ'], dtype='object')
data.columns = ['Korean','English', 'Math']
๋์ผํ๊ฒ ์ปฌ๋ผ๋ ๋ฐ๊ฟ์ค ์ ์๋ค.
data
data.reset_index()
* reset_index : drop=False๊ฐ ๊ธฐ๋ณธ ๊ฐ ( ํ์ฌ ์ธ๋ฑ์ค๋ฅผ ์ปฌ๋ผ์ผ๋ก ์ฎ๊ฒจ ์ฃผ๊ณ ์ธ๋ฑ์ค๋ฅผ ๋ฆฌ์ ) ,
drop = True ( ํ์ฌ ์ธ๋ฑ์ค์ ์๋ ๊ฐ์ ์ปฌ๋ผ์ผ๋ก ๋ณ๊ฒฝํ์ง ์๊ณ ์ธ๋ฑ์ค ์ด๊ธฐํ )