Code
1 + 12
2026/04/17
2026/04/17
最近流行りのプログラミング言語です。
機械学習らへんからめっちゃ流行りだした。データサイエンティストに受けたのでそのへんのことが一通りできる。
Googleの提供するコード実行環境。デフォルトでpythonが動く。
pythonを手元のpcにインストールするのが手間なのでこの環境を使います。
略してcolab (コラボ) と呼ぶことにします。
colabはgoogle driveの中のファイルとして存在します。
なので、まずはこのゼミのためのフォルダをgoogle drive上に作成します。
ここの操作は初回のみ
google colabのファイルひとつひとつのことを「ノートブック (notebook)」とよぶ
新しいnotebookを作成する。
これから表示するコードは「セル」に書いていく。
再生ボタン |> をクリックするとコードが実行される。
実行の仕方は、実行したい行を選択→Ctrl + Enter (Macでは⌘ + Enter) <- これ違うかも
Colabでは、結果を残したい計算はその都度セルに書いて実行するのが基本です。あとで見返したときに、どの順番で何を実行したかがそのまま残ります。
ノートブックのセルに以下の内容を打ち込んでください。セル左のRunボタンを押すか、Ctrl + Enter (Macの場合は⌘ + Enter)で実行してください。
以後の例では、数値の並びや表形式データを扱うためにNumPyとpandasを使います。最初のセルで読み込んでおくと便利です。
簡単な計算は、以下の通り
Pythonでも情報を自分で名前をつけたオブジェクト (変数とも呼ぶ) として保存できます。
「=」の左はオブジェクト名、右はその中身を表します。なので、「xという名前のオブジェクトに3を入れる」という指示をしています。中身を確認するには、そのオブジェクト名(今回の場合z)をそのまま打てば大丈夫です。
一度オブジェクトを作っておけば、それを使った計算も可能です。
文字列でもオブジェクトになります(その場合” “で囲みます)
これは数字じゃないので計算はできません
複数の数値の並びをまとめて扱うときは、リストを使うと便利です。
まずリストにデータを格納し、それをpd.DataFrameに変換する流れが基本です。
このリストをpd.DataFrameに変換すると、行名や列名をつけられて扱いやすくなります。
indexは行の名前、columnsは列の名前です。
| 列1 | 列2 | |
|---|---|---|
| 行1 | 435 | 165 |
| 行2 | 265 | 135 |
中に入っているものが全て数字なら、計算が可能です。
Pythonでも関数は重要です。足し算引き算とかよりも高度な命令は関数やメソッドを使って行います。先ほど作ったベクトル(vec)を使って
Pythonでは、関数(対象)の形もあれば、対象.メソッド()の形もあります。今の例は前者です。
np.mean(vec)は、np.meanvecオブジェクトの中で重要な形式として、データフレームがあります。これは、縦方向に観測値を、横方向に変数を並べたデータを言います。
dframeという名前のデータフレームに
| age | gender | |
|---|---|---|
| 0 | 18 | female |
| 1 | 21 | male |
| 2 | 22 | male |
| 3 | 23 | female |
| 4 | 34 | female |
エクセル等のデータを読み込んで分析する場合は、このデータフレーム形式です。
データフレームの中の特定の列を指定する場合は、「データフレーム名["列名"]」と書きます。
データフレーム内の一部を取り出して関数を使って計算できます
test_scoreとしてください。mean()に相当するメソッドを先に作成した点数の配列に対して使う。Nとしてください。
len()関数は配列の長さを返します。関数の()の中に指定する値をパラメータと呼ぶ。例えば三つの引数を取る関数 example_function(A=2, B=10, C="ice")に関して、Aを第一パラメータ、Bを第二パラメータ、Cを第三パラメータと呼ぶ。パラメータに代入する値 (2, 10, “ice”) のことを引数という。 ただし、両方まとめて引数と呼んだりもする。関数ごとにパラメータの数や指定の仕方は異なる。
関数の中には(というかほとんどが)複数の引数を持ちます。
array([0.1 , 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2 ])
np.arange()は連続した数を作る関数。start=0.1から、二つ目の引数stop=0.21の手前まで、三つ目の引数step=0.01ごとに数字を並べる多くの関数は引数の定位置を持っていて、その順番に従った場合、上記のstartやstopといった指示は省略可能です。
array([0.1 , 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2 ])
定位置以外の順番でやる場合は、指示が必要です。以下も同じです。
Pythonでも、半角スペースの入れ方で意味が変わらない場面は多いです。なので、以下は同じ結果になります。
でも、可読性のため、=の前後や2項演算子(+とか-とか)、あとコンマの後などには半角スペースを入れることが一般的です。
日本人がプログラムを打つときに失敗しがちなのが、記号やスペースを全角にすることです。代表的なものは全角カッコや全角コンマや全角スペースです。全角スペースはひらがなや漢字などと同じ文字として認識されるので、全角スペースを入れるとエラーになります。半角スペース二つと全角スペースは、ぱっと見見分けがつかないので注意!
Pythonでも、()や[]の中では改行しても動作します。特に構造が深いときは、改行したほうが見やすいかもしれません。例えば、上でやった行列の作成コマンド
は、以下のように書いても全く同じように動作します。
あまり改行しすぎるのもかえって読みにくいかもしれません。自分が見やすいように程よく改行してください。
より高度なことをしたり、同じことをより簡単にしたりするために追加の機能を足すことができます。
この追加の機能をパッケージといいます。
Python本体がスマートフォンのOSのようなもので、パッケージはアプリのようなもの。
Pythonでは、必要なパッケージを最初にインストールしてから使います。ColabにはNumPyやpandasが最初から入っていることが多いですが、入っていない環境では以下のようにします。
Colabでは、ノートブックの先頭セルにこのようなインストール用コードを書くのが一般的です。
パッケージを使う時には、分析ファイルを実行する最初の段階で以下のコマンドを使います(スマートフォンにすでに入っているアプリを開くイメージ)。
さっきはデータを下記のように手打ちしました。
しかし、アンケートデータや、企業の会計データ等をこのように手打ちするのは現実的ではありません。エクセル等で集計されたデータを読み込むのが一般的です。
以下では、エクセルファイルを読み込む方法についてまとめています。
dataフォルダを作り、その中に2_tests.csvをアップロードしてくださいエクセルで列が変数、行が観測となるようにデータを作られていることを想定します。まず、これを表計算ソフト上でcsv形式で保存します1。この講義では、Colab上のdataフォルダに置いた想定で進めます。
dataフォルダに入れたファイルを読み込むには、pd.read_csv("ファイル名")を使います2。ここでは、2_tests.csvと言う名前のデータを、testsと言う名前で読み込んでいます。
読み込んだデータを見てみます。最初のいくつかだけが表示されるhead()メソッドが便利です。
現在のデータにはない、4教科の合計点が欲しいとします。Pythonでは、新しい列を代入する形で作ることが多いです。今回は元のデータに付け足す形で作ります。
testsの各列を使って作った新しい変数を、all列として追加しています。
プログラミングをやってて一番むかつき、嫌いになる要因はエラーメッセージ
できることは
「エラーが出てたら99.99%自分が悪い(パソコンは悪くない)」ということを自覚すること
Pythonにも分析に必要なさまざまな機能が装備されています。
しかし、
などは、パッケージとして提供されます。
pandas、数値計算にNumPyを使うことが多いです。この講義でも、表の処理はpandas、配列の計算はNumPyを中心に進めます。
標準のPythonだけでも書けることは多いですが、データ分析ではこの2つを使うほうがずっと実用的です.
この回の内容を復習するための課題です。
ノートブックの最初のセルに import numpy as np と import pandas as pd を書いて実行してから始めてください。
身長 170 cm、体重 65 kg の人のBMIを計算してください。それぞれ変数 height、weight として保存してから計算してください。
\[\text{BMI} = \frac{\text{体重 (kg)}}{\text{身長 (m)}^2}\]
(ヒント: 身長の単位に注意してください)
以下は10人の1週間の読書時間(時間)です。
reading という名前で保存してください以下のデータをデータフレーム members として作成し、年齢(age列)の平均を計算してください。
| name | age | hometown |
|---|---|---|
| Aさん | 18 | 大阪 |
| Bさん | 20 | 東京 |
| Cさん | 19 | 名古屋 |
| Dさん | 21 | 福岡 |