๋น
๋ฐ์ดํฐ๋ถ์๊ธฐ์ฌ ์ค๊ธฐ ์ํ์ ๊ตฌ๋ฆ goorm ํ๊ฒฝ์์ ์งํ๋๋๋ฐ,
๋น
๋ถ๊ธฐ 10ํ ์ค๊ธฐ์ํ์ ๋ณด๋ฆ๊ฐ๋ ์๋๊ณ ์ฒดํํ๊ฒฝ์ ์๋ 1~3 ์ ํ ๋ฌธ์ ๋ค์ด ๋ชจ๋ ๋ณ๊ฒฝ๋ ๋ฐ ์๋ค.
์ด๋ฒ ํฌ์คํ
์์๋ ๋ณ๊ฒฝ๋ ์ฒดํํ๊ฒฝ 1์ ํ ๋ฌธ์ ํ์ด๋ฅผ ํด๋ณด๋ ค ํ๋ค.
<<ํ์ฌ์ ์ง์ ์ฐ๋ด๊ณผ ๊ทผ์ ์ฐ์ ๋ฑ์ ๊ดํ ๋ฐ์ดํฐ>>
- ์ง์ID: ๊ณ ์ ์๋ณ์
- ๋ถ์: ์์ ๋ถ์
- ์ฐ๋ด: ์ฐ๊ฐ ๊ธ์ฌ
- ๊ทผ์์ฐ์: ์ด ๊ทผ๋ฌด๊ธฐ๊ฐ
- ์ฑ๊ณผ๋ฑ๊ธ: ์ฑ๊ณผ ๋ฑ๊ธ(A, B, C)
- ๊ต์ก์ฐธ์ฌํ์: ํ์ฌ ๊ต์ก์ ์ฐธ์ฌํ ํ์
- ๊ณ ๊ฐ๋ง์กฑ๋: ๋ด๋น ์
๋ฌด์ ๋ํ ๊ณ ๊ฐ์ ๋ง์กฑ๋
import pandas as pd
df = pd.read_csv("data/employee_performance.csv")
print(df.head())
> ์ง์ID ๋ถ์ ์ฐ๋ด ๊ทผ์์ฐ์ ์ฑ๊ณผ๋ฑ๊ธ ๊ต์ก์ฐธ์ฌํ์ ๊ณ ๊ฐ๋ง์กฑ๋
0 E1 Marketing 57285 4.0 A 14 8.0
1 E2 Finance 31605 15.0 C 5 4.0
2 E3 IT 101158 10.0 A 19 4.0
3 E4 Finance 102303 25.0 A 8 9.0
4 E5 Finance 57139 13.0 A 19 7.0
โถ ๋จผ์ df.info()๋ก ๋ฐ์ดํฐ ํ์์ ํด๋ณด๋ฉด ๊ฒฐ์ธก์น์ ๋ฐ์ดํฐํ์
ํ์ธ์ด ๊ฐ๋ฅํ๊ณ ,
์ ๊ณต ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ๊ทผ์์ฐ์์ ๊ณ ๊ฐ๋ง์กฑ๋์ ๊ฒฐ์ธก์น๊ฐ ์กด์ฌํ๋ค.
# print(df.info())
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 ์ง์ID 1000 non-null object
1 ๋ถ์ 1000 non-null object
2 ์ฐ๋ด 1000 non-null int64
3 ๊ทผ์์ฐ์ 952 non-null float64
4 ์ฑ๊ณผ๋ฑ๊ธ 1000 non-null object
5 ๊ต์ก์ฐธ์ฌํ์ 1000 non-null int64
6 ๊ณ ๊ฐ๋ง์กฑ๋ 895 non-null float64
print(df.isnull().sum()) # ํด๋น ์ปฌ๋ผ ๊ฒฐ์ธก์น ๊ฐ์ ํ์ธ
์ง์ID 0
๋ถ์ 0
์ฐ๋ด 0
๊ทผ์์ฐ์ 48
์ฑ๊ณผ๋ฑ๊ธ 0
๊ต์ก์ฐธ์ฌํ์ 0
๊ณ ๊ฐ๋ง์กฑ๋ 105
dtype: int64
โถ ์ํ ์์์ ๋ฐ๋ผ ์ฝ๋ฉํ๊ธฐ
1) ๊ณ ๊ฐ๋ง์กฑ๋๊ฐ ์๋ ์ง์์ ๊ฒฝ์ฐ, ํ๊ท ๊ณ ๊ฐ๋ง์กฑ๋๋ก ๊ฒฐ์ธก์น ์ฑ์ฐ๊ธฐ
mean_1=df['๊ณ ๊ฐ๋ง์กฑ๋'].mean()
df['๊ณ ๊ฐ๋ง์กฑ๋']=df['๊ณ ๊ฐ๋ง์กฑ๋'].fillna(mean_1)
print(df.isnull().sum())
์ง์ID 0
๋ถ์ 0
์ฐ๋ด 0
๊ทผ์์ฐ์ 48
์ฑ๊ณผ๋ฑ๊ธ 0
๊ต์ก์ฐธ์ฌํ์ 0
๊ณ ๊ฐ๋ง์กฑ๋ 0
dtype: int64
2) ๊ทผ์์ฐ์๊ฐ ์๋ ์ง์์ ๊ฒฝ์ฐ, ํด๋น ์ง์ ์ญ์
df=df.dropna(subset='๊ทผ์์ฐ์')
์ ๊ณต ๋ฐ์ดํฐ์ ๊ฒฐ์ธก์น๋ ๊ทผ์์ฐ์์ ๊ณ ๊ฐ๋ง์กฑ๋ ๋ ์ปฌ๋ผ์ ์กด์ฌํ์๊ณ
๊ณ ๊ฐ๋ง์กฑ๋์ ๊ฒฐ์ธก์น๋ ํ๊ท ๊ณ ๊ฐ๋ง์กฑ๋๋ก ๋์ฒดํ ์ํ์ด๋ฏ๋ก
์ด์ ๊ทผ์์ฐ์์๋ง ๊ฒฐ์ธก์น๊ฐ ์กด์ฌํ๋ค.
๋ฐ๋ผ์
df=df.dropna() ๋ผ๊ณ ์
๋ ฅํด๋ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋ค.
print(df.info())
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 ์ง์ID 952 non-null object
1 ๋ถ์ 952 non-null object
2 ์ฐ๋ด 952 non-null int64
3 ๊ทผ์์ฐ์ 952 non-null float64
4 ์ฑ๊ณผ๋ฑ๊ธ 952 non-null object
5 ๊ต์ก์ฐธ์ฌํ์ 952 non-null int64
6 ๊ณ ๊ฐ๋ง์กฑ๋ 952 non-null float64
3) ์ง์์ ๊ณ ๊ฐ๋ง์กฑ๋์ 3์ฌ๋ถ์์ ๊ฐ ๊ณ์ฐ [์ ์ถํ์: ๋ฒ๋ฆผํ์ฌ ์ ์(integer)๋ก ์์ฑ]
Q3=df['๊ณ ๊ฐ๋ง์กฑ๋'].quantile(0.75)
print(int(Q3))
# ์ ๋ต 8
4) ๋ถ์๋ณ๋ก ํ๊ท ์ฐ๋ด์ ๊ตฌํ๊ณ , ๋ ๋ฒ์งธ๋ก ํ๊ท ์ฐ๋ด์ด ๋์ ๋ถ์์ ํ๊ท ์ฐ๋ด ๊ณ์ฐ
[์ ์ถํ์: ๋ฒ๋ฆผํ์ฌ ์ ์(integer)๋ก ์์ฑ]
df1=df.groupby('๋ถ์')[['์ฐ๋ด']].mean()
print(df1)
> ์ฐ๋ด
๋ถ์
Finance 71319.595092
HR 75460.411392
IT 70314.602740
Marketing 73320.153374
Operations 73926.703947
Sales 74690.188235
df1=df1.sort_values('์ฐ๋ด', ascending=False)
print(df1)
> ์ฐ๋ด
๋ถ์
HR 75460.411392
Sales 74690.188235
Operations 73926.703947
Marketing 73320.153374
Finance 71319.595092
IT 70314.602740
print(int(df1['์ฐ๋ด'].iloc[1]))
# ์ ๋ต 74690
โถ ๋ต์์ ์ถ
โ 3)์์ ๊ณ์ฐํ ๊ฐ ์
๋ ฅ ---> 8
โฉ 4)์์ ๊ณ์ฐํ ๊ฐ ์
๋ ฅ ---> 74690
๋น์ ๊ณต์ ๋น ๋ฐ์ดํฐ๋ถ์๊ธฐ์ฌ ํ๊ธฐ ์ค๊ธฐ 1ํธ ํฉ๊ฒฉํ๊ธฐ
๋๊ธ