[Python] ํ๋ค์ค(Pandas) - DataFrame
๐ ๋ค์ด๊ฐ๋ฉฐ
์ ๋ฒ์ 1์ฐจ์ Series๋ฅผ ๋ดค๋ค. ์ด๋ฒ์ ํ ์ฐจ์ ๋ ๋์๊ฐ DataFrame์ ๋ค๋ฃฌ๋ค.
DataFrame์ด๋? ํ๊ณผ ์ด๋ก ๊ตฌ์ฑ๋ 2์ฐจ์ ๋ฐ์ดํฐ(์์ ๋ฐ์ดํฐ)๋ฅผ ๋ค๋ฃจ๋ ๋ฐ ํจ๊ณผ์ ์ธ ์๋ฃ๊ตฌ์กฐ. ์ฌ๋ฌ ๊ฐ์ Series๊ฐ ๋ชจ์ธ ๊ฒ์ผ๋ก ๋ณผ ์ ์๋ค.
1. DataFrame ์์ฑ
๋์ ๋๋ฆฌ๋ก ์์ฑ (ํค๊ฐ ์ด์ด ๋จ):
1
2
3
4
5
6
7
from pandas import DataFrame
๋์
๋๋ฆฌ = {"x": [10, 40], "y": [20, 30]}
df = DataFrame(๋์
๋๋ฆฌ)
# x y
# 0 10 20
# 1 40 30
2์ฐจ์ ๋ฆฌ์คํธ๋ก ์์ฑ:
1
2
3
4
5
๋ฆฌ์คํธ = [[10, 20], [30, 40]]
df = DataFrame(๋ฆฌ์คํธ)
# 0 1
# 0 10 20
# 1 30 40
์ธ๋ฑ์คยท์ปฌ๋ผ ์ง์ :
1
2
df.index = ["x", "y"] # ํ ๋ผ๋ฒจ(์ผ์ชฝ ์ธ๋ก)
df.columns = ["a", "b"] # ์ด ๋ผ๋ฒจ(์์ชฝ ๊ฐ๋ก)
๐ก DataFrame์ ๊ฐ ์ปฌ๋ผ์ด ํ๋์ Series์ด๊ณ , ๋ฐ๋๋ก row๋ Series๊ฐ ๋ ์ ์๋ค. Series๋ฅผ 2์ฐจ์์ผ๋ก ํ์ฅํ ๊ฒ์ด DataFrame์ด๋ค.
2. ์กฐ๊ฑด(๋ถ๋ฆฌ์ธ) ์ธ๋ฑ์ฑ
1
2
3
4
df[df["์๊ฐ"] >= 90]["์ข
๊ฐ"] # ์๊ฐ 90 ์ด์์ธ ํ์ ์ข
๊ฐ
cond = df["์๊ฐ"] >= 90 # True/False Series
df.loc[cond, ["์๊ฐ", "์ข
๊ฐ"]] # ์กฐ๊ฑด์ ๋ง๋ ํ์ ํน์ ์ด
๐ก
df["์๊ฐ"] >= 90์ด True/False Series๋ฅผ ๋ง๋ค๊ณ , ์ด๋ฅผdf.loc[]์ ๋ฃ์ผ๋ฉด True์ธ ํ๋ง ์ถ์ถ๋๋ค. ์ํ๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ถ๋ถ DataFrame์ ์ป๋๋ค.
3. groupby โ ๊ทธ๋ฃน๋ณ ๋ถ๋ฅ
1
2
3
4
5
6
7
8
df = DataFrame({
'sex': ['m', 'm', 'w', 'm', 'w'],
'weight': [76, 88, 54, 70, 45],
'height': [176, 190, 148, 177, 155]
})
df_ = df.groupby("sex") # sex์ ๊ณ ์ ๊ฐ์ผ๋ก ๊ทธ๋ฃนํ
df_.get_group("m") # 'm' ๊ทธ๋ฃน๋ง ์ถ์ถ
๐ก
groupby()๋ ํ ์ปฌ๋ผ์ ๊ณ ์ ๊ฐ(unique)๋ค๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฌถ๋๋ค. ๊ทธ๋ฃน๋ณ๋ก ์ถ์ถํ๊ฑฐ๋ ์ง๊ณ(ํ๊ท ยทํฉ๊ณ ๋ฑ)์ ํ์ฉํ๋ค.
๐ ์ ๋ฆฌ
1
2
3
4
5
6
Pandas DataFrame
โโ ์์ฑ DataFrame(๋์
๋๋ฆฌ) ๋๋ 2์ฐจ์ ๋ฆฌ์คํธ
โโ ๋ผ๋ฒจ df.index(ํ) / df.columns(์ด)
โโ ๊ตฌ์กฐ ์ปฌ๋ผยทrow ๋ชจ๋ Series
โโ ์กฐ๊ฑด cond = df["์ด"] >= n โ df.loc[cond, [...]]
โโ ๊ทธ๋ฃน groupby("์ด").get_group(๊ฐ)
| ๊ฐ๋ | ํ ์ค ์ ์ |
|---|---|
| DataFrame | ํยท์ด 2์ฐจ์ ๋ฐ์ดํฐ (์์ ํ) |
| loc ์กฐ๊ฑด ์ธ๋ฑ์ฑ | ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํ ์ถ์ถ |
| groupby | ๊ณ ์ ๊ฐ์ผ๋ก ๊ทธ๋ฃนํ |
DataFrame์ โSeries๋ฅผ ๋ชจ์ 2์ฐจ์ ํโ๋ค. ์กฐ๊ฑด ์ธ๋ฑ์ฑ๊ณผ groupby๋ง ์ตํ๋ฉด, ์์ ๋ก ํ๋ ๋ฐ์ดํฐ ํํฐยท์ง๊ณ๋ฅผ ์ฝ๋๋ก ํจ์ฌ ์ ์ฐํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.


Comments powered by Disqus.