LoginSignup
0
1

More than 3 years have passed since last update.

GCIデータサイエンティスト育成講座の解答を作ってみた(6章)

Posted at

松尾研究室のGCIデータサイエンティスト育成講座
をやってみたところ、解答が無かったので、自分で作ってみました。
間違えていたらすみません、教えて頂けると嬉しいです

<練習問題 1>
下記の2つのデータテーブルに対して、内部結合してみましょう。

pd.merge(attri_data_frame5,attri_data_frame4,on="ID")

<練習問題 2>
attri_data_frame4をベースにattri_data_frame5のテーブルを外部結合してみましょう。

pd.merge(attri_data_frame5,attri_data_frame4,how="right")

<練習問題 3>
attri_data_frame4に対して、以下のデータを縦結合してみましょう。

<練習問題 1>
以前の章で使用した「student-mat.csv」のデータを使います。ageを2倍にしたカラムを追加してみましょう。

# chapter1で用意したデータがあるpathに移動して、以下を実行してください。例) cd pathの名前
student_data_math = pd.read_csv("student-mat.csv",sep=";")
student_data_math["d_age"]=student_data_math["age"].map(lambda x:2*x)
student_data_math

<練習問題 2>
上記と同じデータで、「absences」のカラムについて、以下の3つのビンに分けてそれぞれの人数を数えてみましょう。なお、cutのオプション設定で、デフォルトは右側が閉区間になっていますが、今回は0が入るためのright=Falseを追加してください。

# 分割の粒度
absences_bins = [0,1,5,100]
cut_ab=pd.cut(student_data_math.absences,absences_bins,right=False)
pd.value_counts(cut_ab)

<練習問題 3>
上記と同じデータで、「absences」のカラムについて、qcutを用いて3つのビンに分けてみましょう。

# 分割の粒度
absences_bins = [0,1,5,100]
cut_ab=pd.qcut(student_data_math.absences,3)
pd.value_counts(cut_ab)

<練習問題 1>
先ほど使用した「student-mat.csv」を使って「student-mat.csv」を使って、pandasの集計処理してみましょう。まずは、schoolを軸にして、G1の平均点をそれぞれ求めてみましょう。

student_data_math.groupby("school")["G1"].mean()

<練習問題 2>
次は、schoolと性別を軸にして、G1,G2,G3の平均点をそれぞれ求めてみましょう。

student_data_math.groupby(["school","sex"])["G1"].mean()
student_data_math.groupby(["school","sex"])["G2"].mean()
student_data_math.groupby(["school","sex"])["G3"].mean()

<練習問題 3>
次は、schoolと性別を軸にして、G1,G2,G3の最大値、最小値をまとめて算出してみましょう。

functions=["max","min"]
student_data_math.groupby(["school","sex"])["G1"].agg(functions)
student_data_math.groupby(["school","sex"])["G2"].agg(functions)
student_data_math.groupby(["school","sex"])["G3"].agg(functions)

<練習問題 1>
以下のデータに対して、1列でもNaNがある場合は削除し、その結果を表示してください。

# データの準備
import numpy as np
from numpy import nan as NA
import pandas as pd


sample_data_frame2 = pd.DataFrame(np.random.rand(15,6))

# NAにする
sample_data_frame2.ix[2,0] = NA
sample_data_frame2.ix[5:8,2] = NA
sample_data_frame2.ix[7:9,3] = NA
sample_data_frame2.ix[10,5] = NA


sample_data_frame2.dropna()

<練習問題 2>
上記で準備したデータに対して、NaNを0で埋めてください。

sample_data_frame2.fillna(0)

<練習問題 3>
上記で準備したデータに対して、NaNをそれぞれの列の平均値で埋めてください。

sample_data_frame2.fillna(sample_data_frame2.mean())

6.3.1 総合問題1
以前使用した「student-mat.csv」を使って、以下の問いに答えてください。

(1) 上記のデータに対して、年齢×性別でG1の平均点を算出し、縦軸が年齢、横軸が性別となるような表(テーブル)を作成しましょう。

student_data_math.groupby(["age","sex"],as_index=False)["G1"].mean()

(2) (1)で表示した結果テーブルについて、NAになっている行(レコード)を全て削除した結果を表示しましょう。

student_data_math.groupby(["age","sex"],as_index=False)["G1"].mean().dropna()
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1