-
데이터사이언스스쿨 4장 연습문제 답데이터분석 2021. 8. 3. 19:59
4.4 데이터프레임의 데이터 조작 — 데이터 사이언스 스쿨
.ipynb .pdf to have style consistency -->
datascienceschool.net
연습문제 4.4.1 타이타닉호 승객 데이터의 데이터 개수를 각 열마다 구해본다.
import seaborn as sns
titanic=sns.load_dataset("titanic")
titanic.count()
연습문제 4.4.2 sort_values 메서드를 사용하여 타이타닉호 승객에 대해 성별(sex) 인원수, 나이별(age) 인원수, 선실별(class) 인원수, 사망/생존(alive) 인원수를 구하라.
titanic["sex"].value_counts().sort_values()
titanic["age"].value_counts().sort_values()
titanic["class"].value_counts().sort_values()
titanic["survived"].value_counts().sort_values()
연습문제 4.4.3
- 타이타닉호 승객의 평균 나이를 구하라.
- 타이타닉호 승객중 여성 승객의 평균 나이를 구하라.
- 타이타닉호 승객중 1등실 선실의 여성 승객의 평균 나이를 구하라.
titanic["age"].mean()
titanic[titanic["sex"]=="female"]["age"].mean()
titanic[(titanic["sex"]=="female") & (titanic["class"]=="First")]["age"].mean()
연습문제 4.4.4
타이타닉호의 승객에 대해 나이와 성별에 의한 카테고리 열인 category1 열을 만들어라. category1 카테고리는 다음과 같이 정의된다.
- 20살이 넘으면 성별을 그대로 사용한다.
- 20살 미만이면 성별에 관계없이 “child”라고 한다.
titanic["category1"]=titanic.apply(lambda r: r.sex if r.age>20 else "child",axis=1)
연습문제 4.4.5
타이타닉호의 승객 중 나이를 명시하지 않은 고객은 나이를 명시한 고객의 평균 나이 값이 되도록 titanic 데이터프레임을 고쳐라.
titanic["age"] = titanic["age"].fillna(titanic["age"].mean())
연습문제 4.4.6
타이타닉호의 승객에 대해 나이와 성별에 의한 카테고리 열인 category2 열을 만들어라. category2 카테고리는 다음과 같이 정의된다.
- 성별을 나타내는 문자열 male 또는 female로 시작한다.
- 성별을 나타내는 문자열 뒤에 나이를 나타내는 문자열이 온다.
- 예를 들어 27살 남성은 male27 값이 된다.
titanic["category2"] = titanic["sex"]+titanic["age"].astype(int).astype(str)
연습문제 4.4.7
타이타닉호 승객을 ‘미성년자’, ‘청년’, ‘중년’, ‘장년’, ‘노년’ 나이 그룹으로 나눈다.
bins = [1, 20, 30, 50, 70, 100]
labels = ["미성년자", "청년", "중년", "장년", "노년"]그리고 각 나이 그룹의 승객 비율을 구한다. 비율의 전체 합은 1이 되어야 한다.
pd.cut(titanic["age"],bins,labels = labels).value_counts().sort_values()/titanic["age"].count()
연습문제 4.4.8
타이타닉호의 승객에 대해 나이와 성별에 의한 카테고리 열인 category3 열을 만들어라. category3 카테고리는 다음과 같이 정의된다.
- 20살 미만이면 성별에 관계없이 “미성년자”라고 한다.
- 20살 이상이면 나이에 따라 “청년”, “중년”, “장년”, “노년”을 구분하고 그 뒤에 성별을 나타내는 “남성”, “여성”을 붙인다.
titanic["col1"] = pd.cut(titanic["age"],bins,labels=labels)
titanic["category3"]= titanic.apply(lambda r: "미성년자" if r.age<20 else
(r.col1 + "여성" if r.sex=="female" else "남성"),axis=1)개인적으로 공부하면서 작성한 것이므로 정답이 아닐 수 있습니다. 더 나은 방법이 있다면 댓글로 알려주시면 감사하겠습니다.
'데이터분석' 카테고리의 다른 글
ADP 실기 후기 (0) 2022.03.28 Regression: Ordinary Regression VS Logistic Regression (0) 2021.02.18 train/ test dataset 나누기(sklearn) (0) 2021.02.16 Bayesian (0) 2021.02.16 Bias-Variance Trade Off (0) 2021.02.16