๐ก Index
1. ๋ฐ์ดํฐ ์ ๋ ์
1) ๋ฐ์ดํฐ ํ๋ ์์ [ ] ์ฐ์ฐ์
(1) ์ปฌ๋ผ(col)์ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ ์ ํ๋ ๊ฒฝ์ฐ
# ํ๋์ col์ ๋ํด ์
๋ ์
ํ๋ ๊ฒฝ์ฐ
df['col_name']
# ๋๊ฐ ์ด์์ Col์ ๋ํด ์
๋ ์
ํ๋ ๊ฒฝ์ฐ
# -> Col๋ค์ ๋ฆฌ์คํธํํ๋ก ๋ฌถ๋๋ค๊ณ ์๊ฐํ๋ฉด [[]]์ ๊ฐ์ด ์ฌ์ฉํ๋ ์ด์ ๋ฅผ ์ดํดํ๊ธฐ ํธํ๋ค.
df[['col_name1','col_name2']]
# Series ํํ๋ ์ธ๋ฑ์ค๊ฐ ๋ถ์ฌ๋์ด ํ๋ฆฐํธ๋๋ค๋ ๊ฒ์ด ๋ฆฌ์คํธ์๋ ๋ค๋ฅธ ์ ์ด๋ค.
type(df['col_name']) # output: pandas.core.series.Series
# ํน์ ์กฐ๊ฑด์ ๋ถ์ฌํ๊ณ ์ถ์ ๊ฒฝ์ฐ
df[df['col_name']== 2]] # col_name์ ๊ฐ์ด 2์ธ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํ ์ถ์ถ
(2) ๋ก์ฐ(row)๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ ์ ํ๋ ๊ฒฝ์ฐ
# row ์ฌ๋ผ์ด์ฑ
df[0:4] # 0๋ถํฐ 3๊น์ง์ ํ ํ๋ฆฐํธ
2) ๋ฐ์ดํฐ ํ๋ ์์ iloc ์ฐ์ฐ์
iloc๋ ํํ ์ฐ๋ฆฌ๊ฐ 0๋ถํฐ ์ธ๋ฑ์ค๋ฅผ ๋ถ์ฌํ๋ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ์ ํ๋ค๊ณ ๋ณด๋ฉด๋๋ค. ๋ค๋ง ์ฃผ์ํ ์ ์ ํ์ฌ ๋ฐ์ดํฐํ๋ ์์ ์ง์ ๋์ด์๋ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ ๊ฒ์ ์๋๋ค.(๋ฐ์ดํฐํ๋ ์์ ์ง์ ๋ ์ธ๋ฑ์ค ๊ธฐ์ค์ loc) ์ธ๋ฑ์ค๋ ๋ฌธ์์ผ์๋, ์ซ์์ผ์๋ ์๊ณ ๋ ๊ทธ ๊ฐ์ด ์ซ์์ผ์ง๋ผ๋ 0๋ถํฐ ์ ๋ ฌ์ด ์ ๋์ด์์ง ์์ ์๋ ์๊ธฐ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ iloc๋ ์ปดํจํฐ๊ฐ ์์์ ์ง์ ํ 0๋ถํฐ ์์ํ๋ ์ธ๋ฑ์ค๋ก ์๊ฐํ๋ฉด ์ดํด๊ฐ ๋น ๋ฅด๋ค. (Like ํ์ ๋ฒํธ)
# ํน์ ๋ฐ์ดํฐ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
df.iloc[4,5] # 4๋ฒ์งธ ํ์ 5๋ฒ์งธ ์ปฌ๋ผ์ ๊ฐ
# iloc์ ์ธ๋ฑ์ฑ์ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ => ์๋ฌ
df.iloc[0,'name'] # ์ด์ ๊ฐ์ด ์ซ์๊ฐ ์๋ ๋ฌธ์ํ์ ์
๋ ฅํ๋ฉด ์๋ฌ๊ฐ ๋ฌ๋ค.
# ์ฌ๋ผ์ด์ฑ ์ด์ฉํ์ฌ ์ถ์ถ
df.iloc[:5,[0,2]] # ์ฒ์๋ถํฐ 5๋ฒ์งธ๊น์ง์ ๋ฐ์ดํฐ์ 1,3๋ฒ์จฐ ์ด ์ถ์ถ
3) ๋ฐ์ดํฐํ๋ ์์ loc ์ฐ์ฐ์
loc๋ ์์ ๋งํ ๊ฒ ์ฒ๋ผ ํ์ฌ ๋ฐ์ดํฐํ๋ ์์ ์ค์ ๋์ด์๋ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ถ์ถํ๋ค.
# ํน์ ๋ฐ์ดํฐ ์ถ์ถํ๊ธฐ
df.loc[1,'Name'] # iloc์ ๋ฌ๋ฆฌ ์ธ๋ฑ์ค๊ฐ ์๋ ๊ฐ์ ์
๋ ฅํ ์ ์๋ค.
# ์ฌ๋ผ์ด์ฑ ์ด์ฉํ๊ธฐ
df.loc[2:4] # 2 ~ 4๋ฒ์งธ ํ ์ถ์ถ
# df์ ์ธ๋ฑ์ค๊ฐ ๋ฌธ์ํ์ผ๋ก ๋์ด์์ ๊ฒฝ์ฐ ์ถ์ถ
df.loc['g'] # ์ธ๋ฑ์ค๊ฐ ์ซ์ํ์ด ์๋ ๋ฌธ์ํ์ผ ๊ฒฝ์ฐ์๋ ์ซ์๋ฅผ ์ด์ฉํด loc๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
df.loc['c:'] # ์ธ๋ฑ์ค๊ฐ c์ธ ํ์์๋ถํฐ ๋๊น์ง ๋ค ์ถ์ถ
2. ํน์ ์ปฌ๋ผ(col) ๋ฐ์ดํฐ ์ดํด๋ณด๊ธฐ
1 ) Unique๊ฐ ํ์ธํ๊ธฐ
# ๋ฐฉ๋ฒ 1
col_name.unique() # uniqueํ ๊ฐ๋ค์ array ํํ๋ก ๋ฐํ
col_name.unique()[2] # unique ๊ฐ๋ค ์ค์์ 3๋ฒ์งธ ๊ฐ ๋ฐํ
# ๋ฐฉ๋ฒ 2
np.unique(list(df['col_name']))
3. ํน์ ์กฐ๊ฑด ๋ง์กฑํ๋ ๋ฐ์ดํฐ ์ถ์ถํ๊ธฐ ; ๋ฐ์ดํฐ ํํฐ๋ง
1 ) ํน์ ์กฐ๊ฑด ๋ง์กฑํ๋ ์ปฌ๋ผ ๊ฐ์ ธ์ค๊ธฐ
# ์ปฌ๋ผ a์ ๊ฐ์ด 3 ์ด์์ธ ๋ฐ์ดํฐ ์ค์์ a, c์ด๋ง ์ถ๋ ฅ
df[df['a'] >= 3][['a','c']]
# ์กฐ๊ฑด ๋ง์กฑ ์ ๋ฌด๋ฅผ bool ๊ฐ์ผ๋ก ์ถ๋ ฅ(์ ์ฅ)ํ๊ธฐ
_a = (df['a'] >= 3) & (df['b'] < 16) # ๊ฐ ํ์ด ์ด๋ฅผ ๋ง์กฑํ๋ ์ง์ ๋ํ True, False ๊ฐ
# a ๊ฐ 3 ์ด์์ด๊ณ , b ๊ฐ 16 ๋ฏธ๋ง์ด๊ฑฐ๋ c ๊ฐ 30 ์ธ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅ
df[(df['a'] >= 3) & ((df['b'] < 16) | (df['c'] == 30))]
2 ) ํน์ ์กฐ๊ฑด ๋ง์กฑํ๋ ์ปฌ๋ผ ์ธ๋ฑ์ค ๊ฐ์ ธ์ค๊ธฐ
df[df['name'] > 20].index
# ์์ฉ -> ํด๋น ์กฐ๊ฑด ๋ง์กฑํ๋ ์ปฌ๋ผ์ ์ญ์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ, ํด๋น ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ๊ณ df.drop(์ธ๋ฑ์ค ๋ฆฌ์คํธ)
3 ) ๋ณต์ ์กฐ๊ฑด ๋ง์กฑํ๋ ๋ฐ์ดํฐ ์ถ์ถ (AND, OR, NOT)
์กฐ๊ฑด | ์ |
AND | & |
OR | | |
NOT | ~ |
- AND
df[(df['col1'] < 100) & ~df['col2'] == 'pass')]
# col1์ ๊ฐ์ด 100 ๋ฏธ๋ง์ด๊ณ col2์ ๊ฐ์ด pass๊ฐ ์๋ row ํ์
- OR
df[(df['col1'] < 100) | ~df['col2'] == 30)]
# col1์ ๊ฐ์ด 100 ๋ฏธ๋ง์ด๊ฑฐ๋ col2์ ๊ฐ์ด 30์ธ ํ์
- ์กฐ๊ฑด์ 3๊ฐ์ด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
→ ์ฐ์ฐ์ ์ฐ์ ์์๋ฅผ ์ฃผ์ํด์ผํ๋ค. NOT > AND > OR ์์ผ๋ก ๋์.
๋ฐ๋ผ์ ์์์ ๋ฐ๋ผ ๋ฆฌํด๋๋ ๊ฐ์ด ๋ค๋ฅด๋ค.
4 ) Isin์ผ๋ก ํน์ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ค๊ธฐ
isin์ ์ฃผ์ํ ์ ์, ์ฃผ์ด์ง ๊ฐ๊ณผ ์ ํํ ์ผ์นํ๋ ๊ฐ์ ๋ํด์๋ง ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค๋ ๊ฒ์ด๋ค.
df[df['name'].isin['Heikkinen, Miss. Laina','Dooley, Mr. Patrick']
๋ง์ผ ํน์ ๋ฌธ์์ด, ๊ธฐํธ ๋ฑ์ ํฌํจํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ณ ์ถ๋ค๋ฉด ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ๋ค.
5 ) Contains๋ก ํน์ ๋ฌธ์์ด์ ๊ฐ์ง ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
df[df['name'].str.contains('H')]
# name ์ปฌ๋ผ์ H๊ฐ ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ๋ฅผ ๋ชจ๋ ๋ฐํ