ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터사이언스스쿨 4장 연습문제 답
    데이터분석 2021. 8. 3. 19:59

    https://datascienceschool.net/01%20python/04.04%20%EB%8D%B0%EC%9D%B4%ED%84%B0%ED%94%84%EB%A0%88%EC%9E%84%EC%9D%98%20%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%A1%B0%EC%9E%91.html

     

    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. 타이타닉호 승객의 평균 나이를 구하라.
    2. 타이타닉호 승객중 여성 승객의 평균 나이를 구하라.
    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 카테고리는 다음과 같이 정의된다.

    1. 20살이 넘으면 성별을 그대로 사용한다.
    2. 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 카테고리는 다음과 같이 정의된다.

    1. 성별을 나타내는 문자열 male 또는 female로 시작한다.
    2. 성별을 나타내는 문자열 뒤에 나이를 나타내는 문자열이 온다.
    3. 예를 들어 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 카테고리는 다음과 같이 정의된다.

    1. 20살 미만이면 성별에 관계없이 “미성년자”라고 한다.
    2. 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

    댓글

Designed by Tistory.