#GCIデータサイエンティスト育成講座
「GCIデータサイエンティスト育成講座」は、東京大学(松尾研究室)が開講している"実践型のデータサイエンティスト育成講座およびDeep Learning講座"で、演習パートのコンテンツがJupyterNoteBook形式で公開(CC-BY-NC-ND)されています。
演習コンテンツは全15Chapterあり、"Pythonの基礎から統計的数値計算や機械学習に関する技術、SQLやMongoDB、分散処理のフレームワークであるSparkなど、ビッグデータ解析に関する技術も学べるように設計されている"、"データのセットアップから解析、可視化やモデルのアウトプットまでを一気通貫で学習できる"とのこと。
Chapter1は「データサイエンティスト講座概要とPythonの基礎」で、講座の内容および流れを理解し、JupyterNoteBookの使い方とPythonの基礎を学習していきます。
日本語で学べる貴重で素晴らしい教材を公開いただいていることへの「いいね!」ボタンの代わりに、解いてみた解答を載せてみます。間違っているところがあったらご指摘ください。
#Chapter1 データサイエンティスト講座概要とPythonの基礎
##1.2.1
[やってみよう]
上の+を押して(もしくは非編集状態で、「b」を押して)セルを追加し、何かのリストを作成して、要素数を出力してみましょう。
[1,2,3]
> [1, 2, 3]
[やってみよう]
上では、melonを表示させましたが、orangeの値を表示させてみましょう。また、キーがappleとorangeの値を足してみましょう。
print(sample_dic_data["orange"])
print(sample_dic_data["apple"] + sample_dic_data["orange"])
> 300
> 400
[やってみよう]
出力が変わるように、数字の設定(ここでは、sample_int)を変更して、実行してみましょう。また、条件文や、出力結果等を変えてみたりしてください。
# 数字の設定
sample_int = 100
if sample_int in sample_data_list:
# " " の中に、扱っている変数を表示させたい場合は、以下のように %dと%を組み合わせる
print("%d は入っています。" % (sample_int))
else:
print("%d は入っていません。" % (sample_int))
> 100 は入っていません。
<練習問題 1>
ある文字列(Data Scienceなど)を変数として、それを1文字ずつ表示させるプログラムを書いてください。
str = "Data Science"
for c in str:
print(c)
> D
> a
> t
> a
>
> S
> c
> i
> e
> n
> c
> e
<練習問題 2>
1から50までの自然数の和を計算するプログラムを書いて、最後の計算結果を表示させるプログラムを書いてください。
total = 0
for i in range(1, 50+1):
total += i
print(total)
> 1275
##1.2.2
[やってみよう]
上のクラス(MyCalcClass)を使って、新しくインスタンスを生成させて(instance_3など)、何か出力等してみましょう。さらにできれば、異なるメソッド(2つの引数の差分など)をこのクラスに追加して、呼び出して使ってみましょう。
class MyCalcClass2(MyCalcClass):
def calc_sub(self, a, b):
return a - b
def calc_sub2(self):
return self.x - self.y
instance_3 = MyCalcClass2(100,10)
print(instance_3.calc_add2())
print(instance_3.calc_sub2())
> 110
> 90
##1.3 総合演習
1.3.1 素数判定
(1)10までの素数を表示させるプログラムを書いてください。なお、素数とは、1とそれ自身の数以外は約数をもたない正の整数のことをいいます。
(2)上記をさらに一般化して、Nを自然数として、Nまでの素数を表示する関数を書いてください。
# (1)
for i in range(2, 10+1):
flag = 1
for j in range(2, i-1):
if ((i) % (j)) == 0:
flag = 0
break
#print(i, flag)
if flag == 1:
print(i)
> 2
> 3
> 5
> 7
# (2)
def printPrimeNum(n):
for i in range(2, n+1):
flag = 1
for j in range(2, i-1):
if ((i) % (j)) == 0:
flag = 0
break
#print(i, flag)
if flag == 1:
print(i)
printPrimeNum(100)
> 2
> ...
> 89
> 97