๋ฌ๋์คํผ ์์ ์ ๋ฆฌ
< ์ด์ ๊ธ >
https://silvercoding.tistory.com/48
[python pandas] pandas ๊ธฐ์ด ์ฌ์ฉ (1)
๋ฌ๋์คํผ ์์ ์ ๋ฆฌ * ํ๋ค์ค ๊ธฐ๋ณธ ํจ์ ๋ฐ์ดํฐ ํ์ผ ์ฝ๊ธฐ : read_excel(), read_csv() ๋ฐ์ดํฐ ์ ํํ๊ธฐ : df.loc(), df.iloc() ์ธ๋ฑ์ค/ ์ปฌ๋ผ ๋ณ๊ฒฝํ๊ธฐ : columns/ index , reset_index() pandas vs excel panda..
silvercoding.tistory.com
1. pandas ๋ถ๋ฌ์ค๊ธฐ
import pandas as pd
2. ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ & ์ดํด๋ณด๊ธฐ
fpath = './data/exam.xlsx'
data = pd.read_excel(fpath, index_col = '๋ฒํธ')
index_col='๋ฒํธ' ๋ก ์ง์ ํ์ฌ ์์ ํ์ผ ๋ถ๋ฌ์ค๊ธฐ
* head(), info(), describe() ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ดํด๋ณด๋ ์ต๊ด ๊ฐ๊ธฐ
data.head()
data.info()
data.describe()
3. ๋ฐ์ดํฐ ์ถ๊ฐํ๊ธฐ
df[ '์ปฌ๋ผ๋ช ' ] = data ( df.์ปฌ๋ผ๋ช = data ํํ๋ ์ฌ์ฉ ๋ถ๊ฐ๋ฅ )
- ํ๋์ ๊ฐ ์ถ๊ฐ : ์ ์ฒด ๋ชจ๋ ๋์ผํ ๊ฐ์ผ๋ก ์ถ๊ฐ๋จ
- ๊ทธ๋ฃน ์ถ๊ฐ : ๋ฆฌ์คํธ, ํ๋ค์ค์ ์๋ฆฌ์ฆ๋ก ์ถ๊ฐ
data['์ํ']
data.์ํ
๋ฐ์ดํฐ๋ฅผ ์ ํํ ๋ ์์ ๊ฐ์ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์์ฑํด์ฃผ์๋ค.
- ํ๊ฐ ๊ฐ ์ถ๊ฐ
data['์์
'] = 90
data.head()
๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ๋ data.์์ ์ ํํ๋ก๋ ๋ถ๊ฐ๋ฅ ํ๋ค. ํ๊ฐ์ ๊ฐ์ ์ถ๊ฐํ๋ฉด ๋ชจ๋ row์ ๊ฐ์ ๊ฐ์ด ๋ค์ด๊ฐ๊ฒ ๋๋ค.
- ์ฌ๋ฌ ๊ฐ ์ถ๊ฐ
data['์ฒด์ก'] = [100, 80, 60]
data.head()
๋ฆฌ์คํธ๋ก ์ฌ๋ฌ ๊ฐ์ ์ถ๊ฐํด ์ค ์๋ ์๋ค. ์ด ๋ ์ฃผ์ํ ์ ์ ๋ฆฌ์คํธ ์์ ๊ฐ์์ row๊ฐ์๊ฐ ๊ฐ์์ผ ํ๋ค.
data['๊ตญ์์'] = (data['๊ตญ์ด'] + data['์์ด'] + data['์ํ'] ) / 3
data.head()
์ด๋ ๊ฒ ์ปฌ๋ผ ๊ฐ์ ์ฐ์ฐ์ ํตํ์ฌ ์๋ก์ด ์ปฌ๋ผ์ ๋ง๋ค์ด ์ค ์๋ ์๋ค.
4. ๋ฐ์ดํฐ ํ ๋ณํฉํ๊ธฐ
fpath = './data/exam.xlsx'
A = pd.read_excel(fpath, index_col = '๋ฒํธ')
A.head()
ํ์ผ์ ๋ค์ ๋ถ๋ฌ์์ A ๋ณ์์ ์ ์ฅํด ์ค๋ค.
fpath2 = './data/exam_extra.xlsx'
B = pd.read_excel(fpath2, index_col = '๋ฒํธ')
B.head()
์ถ๊ฐ ํ ์์ ํ์ผ์ ๋ถ๋ฌ์ B ๋ณ์์ ์ ์ฅํด ์ค๋ค.
- merge()
๋ณํฉ ๊ธฐ์ค์ ์ธ์์ ๋ฃ์ด ์ค์ ํด์ค ์ ์๋ค. ์ด ๋, left_on ๊ณผ left_index ์ค 1๊ฐ, right_on ๊ณผ right_index ์ค 1๊ฐ๋ฅผ ์จ์ผ ํ๊ณ , ๋๊ฐ์ง๋ฅผ ํ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
total = pd.merge(A, B, how = 'left', left_index = True, right_index = True)
total.head()
left์ผ ๊ฒฝ์ฐ A๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋ณ์ด ๋๋ค. 4๋ฒ, 5๋ฒ์ ๋์ค์ง ์๊ณ , B์ 3๋ฒ์ NaN์ผ๋ก ์ฑ์์ง๋ค.
pd.merge(A, B, how = 'right', left_index = True, right_index = True)
์์ ๊ฐ์ด ์์ฑ๋์์ ๋ , B์ ๋ง์ถ์ด ํฉ๋ณ๋๋ค. ๋ฐ๋ผ์ 3๋ฒ์ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
pd.merge(A, B, how = 'inner', left_index = True, right_index = True)
inner๋ฅผ ์ฌ์ฉํ์์ ๊ฒฝ์ฐ , A ์ B ๋ชจ๋ ์กด์ฌํ๋ ์ธ๋ฑ์ค์๋ง ํฉ๋ณํด์ค๋ค.
pd.merge(A, B, how = 'outer', left_index= True, right_index=True)
outer๋ฅผ ์ฌ์ฉํ์์ ๊ฒฝ์ฐ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํฉ๋ณํด ์ค๋ค.
5 . ์ ์ฅํ๊ธฐ
total = pd.merge(A, B, how = 'left', left_index = True, right_index = True)
total
์ต์ข ๋ชจ๋ธ์ left, A๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋ณํ ๋ฐ์ดํฐํ๋ ์์ผ๋ก total ๋ณ์๋ฅผ ์ ์ธํ๊ณ , ์ ์ฅ์ ํด๋ณด์ !
total.to_excel('./data/exam_total.xlsx')
total.to_excel('./data/exam_total_withoutindex.xlsx', index = False)
index = False ์ธ์๋ฅผ ์ฌ์ฉํ์ฌ '๋ฒํธ' ์ปฌ๋ผ์ ์ ์ธํ๊ณ ์ ์ฅํ ์ ์๋ค.