๐ Today I Learn/๐ Python
[Pandas] ์ ์ฉํ ํ๋ค์ค ํจ์ (.loc / .groupby/ .idxmax)
ny:D
2024. 5. 5. 17:01
240430 Today I Learn
Pandas '.loc[]' ๋ฐ์ดํฐํ๋ ์์์ ํ ์กฐํํ๊ธฐ
๐ก dataframe.loc[ ํ ์ธ๋ฑ์ฑ ๊ฐ, ์ด ์ธ๋ฑ์ฑ ๊ฐ]
- ๋ผ๋ฒจ๋ก ์ธ๋ฑ์ฑ, ๋๋ฒํธ ํฌํจ
- ์ฌ๋ผ์ด์ฑ ๊ฐ๋ ์ ์ฉ ๊ฐ๋ฅ
โถ๏ธ ํ์ฉ ์์ ) ๊ฐ์ฅ ๋ง์ ๊ฐ์กฑ์ ๊ฐ์ง ์น๊ฐ ์ฐพ๊ธฐ
family = df['SibSp']+df['Parch']
name = ''
for i, k in enumerate(family):
if k == max(family):
print(df.loc[i]['Name'])
## Sage, Master. Thomas Henry
## Sage, Miss. Constance Gladys
## Sage, Mr. Frederick
## Sage, Mr. George John Jr
## Sage, Miss. Stella Anna
## Sage, Mr. Douglas Bullen
## Sage, Miss. Dorothy Edith "Dolly"
- family์ ์๊ฐ ๊ฐ์ฅ ๋ง์ max(family)์ ๊ฒฝ์ฐ df์์ ํด๋น ๋ฐ์ดํฐ์ ํ`i`์ ๊ตฌํ ํ
- ํด๋น ํ์์ `Name`์ปฌ๋ผ์ ์ ํํด์ฃผ๋ฉด, ๊ฐ์ฅ ๋ง์ ๊ฐ์กฑ์ ๊ฐ์ง ์น๊ฐ์ ์ด๋ฆ์ ์ถ๋ ฅํ ์ ์๋ค.
Pandas '.groupby()'๋ฅผ ์ด์ฉํ ์ง๊ณ
๐ก dataframe.groupby(๊ทธ๋ฃน์ด๋๋์ปฌ๋ผ)[๊ณ์ฐํ๊ณ ์ถ์ ์ปฌ๋ผ].์ง๊ณํจ์()
- ์ง๊ณํจ์ : sum, count, mean, max, min
โถ๏ธ ํ์ฉ ์์ ) ์ฑ๋ณ์ ๋ฐ๋ฅธ ์์กด์ ์ ๊ณ์ฐ
df.groupby('Sex')['Survived'].sum()
## Sex
## female 0.74
## male 0.19
- sex : female, male
- survived : 0(dead), 1(survived)
- ์ฑ๋ณ๋ก ๊ทธ๋ฃนํ๋ฅผ ํ๊ณ , ๊ฐ๊ฐ์ ์ฑ๋ณ์์ 'survived'๋ฅผ ๋ชจ๋ ํฉํ๋ฉด ์ฑ๋ณ๋ณ ์์กด์ ์๋ฅผ ๊ตฌํ ์ ์๋ค.
Pandas idxmax(), idxmin() ์ต๋/์ต์๊ฐ์ด ํฌํจ๋ ํ/์ด ๊ตฌํ๊ธฐ
๐ก dataframe.idxmax(axis=0, skipna=True)
- axis : {0 : ํ / 1:์ด } ๊ธฐ์ค์ด ๋ ์ถ
- skipna : ๊ฒฐ์ธก์น ๋ฌด์ ์ฌ๋ถ. True๋ฉด ๊ฒฐ์ธก์น๊ฐ ํฌํจ๋ ์ด์ ๋ฌด์ํ๊ณ False๋ฉด NaN๋ฅผ ์ถ๋ ฅ
โถ๏ธ ํ์ฉ ์์ ) ๊ฐ์ฅ ๋ง์ ํ์น๊ฐ ์๋ฅผ ๊ฐ์ง ์ ์ค ๋ฑ๊ธ ์ฐพ๊ธฐ
grouped = df.groupby('Pclass')['Name'].count()
## Pclass
## 1 216
## 2 184
## 3 491
pclass=grouped.idxmax()
print(f"๊ฐ์ฅ ๋ง์ ํ์น๊ฐ์ด ์ด์ฉํ ์ ์ค ๋ฑ๊ธ์ {pclass}๋ฑ๊ธ ์
๋๋ค.")
## ๊ฐ์ฅ ๋ง์ ํ์น๊ฐ์ด ์ด์ฉํ ์ ์ค ๋ฑ๊ธ์ 3๋ฑ๊ธ ์
๋๋ค.
- ์ ์ค๋ฑ๊ธ `Pclass`๋ฅผ ๊ธฐ์ค์ผ๋ก name์ ์๋ฅผ countํด grouped์ ์ ์ฅ
- grouped์์ ์ต๋๊ฐ์ด ํฌํจ๋ ํ(์ด ๊ฒฝ์ฐ 3)์ ๋ฐํํ๋ค.