# 새로운 데이터 불러오기
# 상위 폴더로 경로 지절할땐 '../' 을 사용
df = pd.read_csv('../data/fake_company.csv')
< (중요!) 카테고리컬 데이터 ( Categorical Data ) >
# 중복이 발생하는 데이터 ex) 성별, 나이 등..
# 유니크한 데이터의 개수와 데이터 확인
# 상단에 데이터에서 'Year'을 가지고 실행
df['Year'].unique()
array([1990, 1991, 1992], dtype=int64)
ㄴ 데이터의 종류는 총 3가지인것 확인
# 유니크한 항목이 몇개인지 숫자로 바로 확인할떄
df['Year'].nunique()
3
# 'Department' 컬럼을 가지고 실행
df['Department'].unique()
array(['HR', 'RD', 'Admin'], dtype=object)
df['Department'].nunique()
3
# 이전장에서 사용하였던 .describe() 함수를 문자열(컬럼)을 지정하여 사용하면 갯수 중복성 정도를 알려준다.
df['Name'].describe()
count 9
unique 3
top Alice
freq 3
Name: Name, dtype: object
ㄴ count : 총 데이터수 , unique : 데이터 종류, top : 가장 많이 표시된 값, freq : top 데이터가 나온 빈도
< (중요!!) 카테고리컬 데이터의 경우, 데이터 분석시! 데이터별로 묶어서 데이터를 분석할 수 있다. >
## 각 년도별로, 지급한 연봉 총합을 구해라
# ~별로 라는 말이 나오면 .group by로 생각해라
# .groupby는 카테고리컬 데이터 즉 중복이 발생되는 데이터에서 주로 사용한다.
df.groupby('Year')[ 'Salary' ].sum()
Year
1990 153000
1991 162000
1992 174000
Name: Salary, dtype: int64
# 각 직원별로, 얼마씩 받았는지 평균연봉을 구하라
df.groupby('Name')[ 'Salary' ].mean()
Name
Alice 54000.0
Bob 50000.0
Charlie 59000.0
Name: Salary, dtype: float64
# 년도별로, 연봉의 총합, 평균, 표준편차를 보여주세요
print(df.groupby('Year')[ 'Salary' ].sum())
print(df.groupby('Year')[ 'Salary' ].mean())
print(df.groupby('Year')[ 'Salary' ].std())
Year
1990 153000
1991 162000
1992 174000
Name: Salary, dtype: int64
Year
1990 51000.0
1991 54000.0
1992 58000.0
Name: Salary, dtype: float64
Year
1990 3605.551275
1991 5291.502622
1992 5291.502622
Name: Salary, dtype: float64
< print로 개별로 묶지않고 .agg (통계함수) 를 사용하여 한번에 출력할수 있다. >
df.groupby('Year')[ 'Salary' ].agg(['sum' , 'mean' , 'std'])
< 컬럼별로 중복된 항목이 몇개씩인지 구하기 >
# Name 컬럼은, 각 이름별로 몇개의 데이터가 있나? (1)
df.groupby('Name')['Name'].count()
Name
Alice 3
Bob 3
Charlie 3
Name: Name, dtype: int64
# Name 컬럼은, 각 이름별로 몇개의 데이터가 있나? (2) => 자주 사용하는 함수 열의 value 값을 카운트
df['Name'].value_counts()
Name
Alice 3
Bob 3
Charlie 3
Name: count, dtype: int64