빅데이터분석기사/작업형1

[작업형1] 평균 / 행(row)별 합 / 고유값 수 구하기

seo0seok 2023. 6. 22. 00:31

// 퇴근후딴짓 님의 강의를 참고하였습니다. //

 

시험환경 : https://bit.ly/3H64wpG

 

문제1)

  • 앞에서 부터 50%의 데이터와 'target'컬럼이 0 값을 가진 데이터만 활용해 'proline'컬럼의 평균을 구하시오. (소수점 절사(버림), 정수형 출력)
# 시험환경 세팅
import pandas as pd
from sklearn import datasets
dataset = datasets.load_wine()
df = pd.DataFrame(dataset['data'], columns=dataset['feature_names'])
df['target'] = dataset['target']
df.to_csv("data1-1.csv", index=False)
# 데이터 파일 읽기 예제
import pandas as pd
a = pd.read_csv("data1-1.csv")
# 사용자 코딩
a = a[:int(len(a)/2)]
cond = a['target'] == 0
a = a[cond]
print(int(a['proline'].mean()))

실행 결과 : 
1115

→ 앞에서 부터 몇 %의 데이터를 구하는 방법은 len으로 데이터의 길이를 구한 후 %만큼 곱해준 후 슬라이스하면 된다.

→ target 컬럼이 0인 조건은 cond 변수에 담아둔다.

→ 50% 데이터와 조건을 만족하는 데이터의 'proline' 컬럼의 평균을 .mean()을 사용하여 구하면 1115가 나온다.

 

문제2)

  • s1, s2, s3, s4, s5, s6, 컬럼의 행(row)별 합을 구하고 그 합이 0.1보다 큰 값의 수를 구하시오.
# 시험환경 세팅
import pandas as pd
from sklearn import datasets
dataset = datasets.load_diabetes()
df = pd.DataFrame(dataset['data'], columns=dataset['feature_names'])
df.to_csv("data1-2.csv", index=False)
# 데이터 파일 읽기 예제
import pandas as pd
a = pd.read_csv("data1-2.csv")
# 사용자 코딩
cols = ['s1', 's2', 's3', 's4', 's5', 's6']
a = a[cols]
# print(a.sum(axis=1))
print(sum(a.sum(axis=1)>0.1))

실행 결과 : 120

→ cols 변수에 해당 컬럼명을 담아 둔후 sum(axis=1) 을 통해 행별로 더한 후 0.1보다 큰 값의 수를 구하면 120개가 된다.

 

문제3)

  • 고유한 값이 가장 많은 컬럼의 이름은?
# 시험환경 세팅
import pandas as pd
from sklearn import datasets
dataset = datasets.load_breast_cancer()
df = pd.DataFrame(dataset['data'], columns=dataset['feature_names'])
df['target'] = dataset['target']
df.to_csv("data1-3.csv", index=False)
# 데이터 파일 읽기 예제
import pandas as pd
a = pd.read_csv("data1-3.csv")
# 사용자 코딩
a = a.nunique()
print(a.sort_values(ascending=False).index[0])

실행 결과 :
smoothness error (컬럼 이름)

→ nunique()를 사용해 고유값의 수를 먼저 구한다.

→ 그 후 sort_values(ascending=False)를 사용해 내림차순으로 정렬한 후 index[0]으로 첫번째 컬럼명을 선택해준다.