๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
- ๋ฐ์ดํฐ ํ์์ ๋ํ ์ฒ๋ฆฌ
- ๊ณต๋ฐฑ ๋ฌธ์
- str.strip() : ์์ชฝ ๊ณต๋ฐฑ ์ ๊ฑฐ
- str.lstrip() : ์ผ์ชฝ ๊ณต๋ฐฑ ์ ๊ฑฐ
- str.rstip() : ์ค๋ฅธ์ชฝ ๊ณต๋ฐฑ ์ ๊ฑฐ
- ๋ฐ์ดํฐ ํ์
- ๋ถ๊ท์นํ ๋์๋ฌธ์
- ๋ถ๊ท์นํ ๊ตฌ๋ถ ๊ธฐํธ
- ์ ํจํ์ง ์์ ๋ฌธ์
- ๋ถ๊ท์นํ ๋ ์ง ๋ฐ ์๊ฐ ํ๊ธฐ
- ๊ณต๋ฐฑ ๋ฌธ์
1. ๋ผ๋ฒจ ํ์ ํต์ผ
- ๋ฐ์ดํฐ์ ์ธ์ฝ๋ฉ ์์ ์ ํฌํจ
1-1) dictionary ํ์
์ผ๋ก encoding map์ ์์ฑํด์ ์ ์ฉ
โ
df = pd.DataFrame({ })
_map = { }
1-2) df ๋ณ์์ ' ' ์ปฌ๋ผ์ ๊ฐ์ map ํจ์๋ฅผ ์ด์ฉํด ๋ณํ
โ df[' '].map( )
1-3) ์ฐพ์ ๋ฐ๊พธ๊ธฐ์ธ replace()๋ฅผ ์จ๋ ๋ฉ๋๋ค.
โ df[' '] = df[' '].replace([ ๊ธฐ์กด๊ฐ ], [ ๋ฐ๊ฟ๊ฐ ])
2. ๋ฌธ์ ํ์(๋์๋ฌธ์, ๊ธฐํธ ๋ฑ) ํต์ผ
2-1) ์ํ๋ ๊ฐ์ ๋ฐ์ดํฐ ํ๋ ์ ์์ฑ
df1 = pd.DataFrame(data)
df1
2-2) ์ปฌ๋ผ๋ช
์ ์๋ฌธ์๋ก ๋ฐ๊พธ๋ ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ
๋น ๋ฆฌ์คํธ์ ์๋ฌธ์๋ก ๋ณ๊ฒฝํ ์ปฌ๋ผ์ ๋ชจ๋ ์ ์ฌํ ๋ค ๋์
โ
new_cols = list()#[]
for col in df1.columns:
print(col.lower())
new_cols.append(col.lower())
โป ์๋ฌธ์๋ก ๋ณ๊ฒฝ ์ ์ฉ
โ df1.columns = new_cols
2-3) df.columns์ ๋ฐ๋ก upper() ๋ฑ์ ๊ฑธ ์ ์์
์ ์ฝ๋๋ฅผ ์ด์ฉํด ๋๋ฌธ์๋ก ๊ต์ฒด
โ
df1.columns.str.upper()โคต
df1.columns = new_colsโคต
df1.columns= df1.columns.str.upper()
2-4) ๋ด๋ถ ์์์ ๋ชจ๋ ์๋ฃ๋ฅผ ์๋ฌธ์๋ก ํต์ผ(์ ์ ์๋ฃ๋ ๋ฐฐ์ )
.apply(def๋ก ์ง์ ํ ํจ์๋ช ) = ํด๋น ํจ์์ ๋ฆฌํด ๊ฐ์ผ๋ก ์ปฌ๋ผ ๋ด๋ถ ๊ฐ์ ์ผ๊ด์ ์ผ๋ก ๊ต์ฒด
โ def ํจ์๋ช ( x ):
return x.lower()
๐ ๋งค์ฐ ์ค์ ํจ์. apply()
โ df1[' ์ ์ฉํ ์ปฌ๋ผ '].apply( x_lower)
map์ผ๋ก๋ ๋์ฒด ๊ฐ๋ฅ.
๐ ex) AGE ์ปฌ๋ผ์ ๊ฐ์ 20 ์ด์์ด๋ฉด "์ฑ์ธ", 19 ์ดํ๋ฉด "๋ฏธ์ฑ๋ ์"๋ฅผ ๋ฆฌํดํ๋๋ก is_adult() ํจ์๋ฅผ
์ ์ ํ. apply()๋ก ํ์ฉํด ์ผ๊ด์ ์ผ๋ก ๋ณ๊ฒฝ
โ
def is_adult(value):
if value >= 20:
return "์ฑ์ธ"
else :
return "๋ฏธ์ฑ๋
์"
โ df1['AGE']=df1['AGE'].apply(is_adult)
df1
3. ๋ฐ์ดํฐ ๊ฐ์ ๋ํ ์ฒ๋ฆฌ
- ๊ฒฐ์ธก๊ฐ
- ์ด์์น
- ๋จ์ ์ค๋ณต ๋ฐ์ดํฐ
- ๋์ผํ ์๋ฏธ, ๋ค๋ฅธ ๋ช ์นญ์ ์ค๋ณต ๋ฐ์ดํฐ
- ์ค๋ณต์์ฑ(๋ค์ค๊ณต์ ์ฑ) = ๋ ๋ฆฝ๋ณ์๋ค ๊ฐ์ ์๊ด๊ด๊ณ๊ฐ ๋๋ฌด ๊ฐํ๊ฒ(๊ทผ์ ํ๊ฒ) ์์ฉํ๋ฉด ์ ๋๋ค๋ ๊ฒ
- ๋ถ๊ท์นํ ๋ฐ์ดํฐ ์์ง(๊ฐ๊ฒฉ, ๋จ์)
3-1) ๊ฒฐ์ธก์น ์ฒ๋ฆฌ - ์ญ์
- ๊ฒฐ์ธก์น๊ฐ ํ๋๋ผ๋ ์๋ ๋ ์ฝ๋ ์ญ์
- ๋ชจ๋ ๊ฐ์ด ๊ฒฐ์ธก์ธ ๋ ์ฝ๋ ์ญ์
- ๊ฒฐ์ธก์น๊ฐ ํ๋๋ผ๋ ์๋ ๋ฐ์ดํฐ๋ง ์ ํ
- ๊ฒฐ์ธก์น๊ฐ ํ๋ ์ด์์ธ ๋ ์ฝ๋(row) ์ญ์ : df.dropna( )
- ๋ชจ๋ ๊ฐ์ด ๊ฒฐ์ธก์น์ธ ๋ ์ฝ๋๋ง ์ญ์ : df.dropna(how='all')
- .isnull()์ ๋ชจ๋ ์
์ ๊ตฌ๋ถํด์ NaN๊ฐ ์๋ ์
์ True, ์๋ ์
์ False๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
- ์ปฌ๋ผ๋ณ ๊ฒฐ์ธก์น ๊ฐ์๋ฅผ ์ธ๋ ๋ฒ df.isnull().sum()
3-2) ๊ฒฐ์ธก์น ์ฒ๋ฆฌ - ๋์ฒด ๊ฐ
- ์ฐ์ํ(์ซ์) : ์์ ๊ฐ(0 ๋ฑ ...), mean, median, ์์ธก๊ฐ, ๋๋ฉ์ธ ์ง์ ํ์ฉ
- ๋ช ๋ชฉํ(๋ฌธ์) : mode(์ต๋น๊ฐ), ์์ธก๊ฐ, ๋๋ฉ์ธ์ง์ ํ์ฉ
-์ฐ์ํ ์์์ ๊ฐ์ผ๋ก ๋์ฒด : df.fillna( ์์์ ๊ฐ )
- ์ปฌ๋ผ๋ณ๋ก ํ๊ท ๊ฐ NaN๋ฅผ ์๋ ๊ฐ์ผ๋ก ๊ฐ์ ํ๊ณ ๊ตฌํ ํ๊ท : df.mean()
- ์ ์ฒด ๋ฐ์ดํฐ์ ๋ํ ์ค์๊ฐ์ ๊ตฌํจ : df.median()
- df = pd.DataFrame({'label': ['A','B','B','C','C','C','D']})
์ ๋ฐ์ดํฐ์ ๋ํ ํต๊ณ ๋ถ์ ํจ์ .describe()
4. ๋ฐ์ดํฐ ๋จ์ ํต์ผ(์ ๊ท๋ถํฌ, ํ๊ท /๋ถ์ฐ/ํ์คํธ์ฐจ ์ดํด ํ์)
๐๋งค์ฐ ์ค์ : ํ์คํ(Standardization)
- ํ๊ท ์ ๊ธฐ์ค์ผ๋ก ์ผ๋ง๋ ๋จ์ด์ ธ ์๋์ง๋ฅผ ํ์
- sklearn์์ ์ ๊ณตํ๋ ์ ์ฒ๋ฆฌ ํด๋์ค
- preprocessing ํด๋์ค
- scaler() : ์ ์ฒด ์๋ฃ์ ๋ถํฌ๋ฅผ ํ๊ท 0, ํ์คํธ์ฐจ 1์ด ๋๋๋ก ์ค์ผ์ผ๋ง
- minmax_scale() : ์ต๋/์ต์๊ฐ์ด ๊ฐ๊ฐ 1, 0์ด ๋๋๋ก ์ค์ผ์ผ๋ง
- StandardScaler() : scaler() ํจ์์ ๋์ผํ ๋์
- preprocessing ํด๋์ค
- ํ์คํ : (์์๊ฐ(ํ๋์ ๋ฐ์ดํฐ) - ํ๊ท ) / ํ์คํธ์ฐจ
- ex) ๋ชธ๋ฌด๊ฒ vs ํค
- ํ์คํ ๊ฒฐ๊ณผ : ๋ชธ๋ฌด๊ฒ ์์, ํค ์์
- ํด์ : ๋ชธ๋ฌด๊ฒ๋ ํ๊ท ์ดํ, ํค๋ ํ๊ท ์ด์(=>๋ง๋ฅธ๋ชธ)
- ์ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ scikitlearn ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ
โ
from sklearn.preprocessing import scale, minmax_scale
- ์์ฑํ ์๋ 3๊ฐ์ ์ปฌ๋ผ์ ๋ถ์ด๋ ์ฒ๋ฆฌ๊ณผ์
x, scale(x), minmax_scale(x)
โ
df = pd.DataFrame(np.hstack([x, scale(x), minmax_scale(x)]),
columns=['x', 'scale(x)', 'minmax_scale(x)'])
- ๋ถ์ฌ์ค ์ปฌ๋ผ๋ณ๋ก ์ํํ ์ฐ์์ ์ปฌ๋ผ๋ช ์ผ๋ก ์ ์
np.hstack = ๊ฐ๋ก๋ฐฉํฅ์ผ๋ก ๋ถ์ฌ์ค ๋ฐ๋ผ์ 3๊ฐ์ ์ปฌ๋ผ์ด๋ 9 x 3 ํํ๋ก ๋ง๋ฆ
np.vstack = ์ธ๋ก ๋ฐฉํฅ์ผ๋ก ๋ถ์ฌ์ค ๋ฐ๋ผ์ 27 x 1 ํํ๋ก ๋ง๋ฆ
'ํ๋ฃจ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ 16์ฅ ๐๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ_ํ์ดํ๋ ๋ฐ์ดํฐ์ ํ์ฉ-1๐ (0) | 2022.11.02 |
---|---|
๐ค ๊นจ(์ฐ์น์!)์(๊ณ ํ์!)๊ณต๋ถ : ์๊ด ๋ถ์ (0) | 2022.11.02 |
์ 14์ฅ ๐๋ฐ์ดํฐ ์๊ฐํ_matplotlib๐ (0) | 2022.10.30 |
์ 13์ฅ ๐๋ฐ์ดํฐ ๋ถ์_pandas(Data_Frame)๐ (0) | 2022.10.24 |
์ 12์ฅ ๐๋ฐ์ดํฐ ๋ถ์_pandas(Series ์๋ฃํ)๐ (0) | 2022.10.21 |