Python の入門編として、前回にひき続きリスト(配列)について書いているんですが、やっぱりデータ管理に直結する使い方だけあって結構ボリュームが多いですね。
それでもPythonを使いこなすために覚えておくと便利なので勉強していきたいと思います。
前回までリストの定義や連結などについて書きましたが、数値(インデックス)が一列に並んでいて一つの数値だけで要素を指し示すことができる表を一次元配列といいます。
でも、それではリストとしてあまり役には立ちません。
エクセルのように縦と横に要素があって表として使えるようになり、データ管理もより簡単にできるようになります。
そんな縦と横に要素が並んだリストを2次元配列といいPythonで表現できます。
二次元配列のリスト定義
Pythonにはエクセルのようにマス目があるわけではないので、マス目を自分で設定しなければいけません。
まずは下記のように「city_temps」としてリストを設定します。
このリストにはリストの要素としてさらにリストが入っていますね。
city_temps=[ [14.8, 14.8, 15.1, 15.4, 15.2, 15.4, 17.0, 16.9], 東京 [10.0, 10.4, 11.5, 11.2, 10.9, 10.6, 11.8, 12.2], 秋田 [16.0, 15.5, 15.9, 16.4, 15.9, 15.6, 17.5, 17.1] 熊本 ]
この数値は、1930年から2000年までの東京、秋田、熊本の平均気温をPythonでリスト化したものです。
一番最初の要素、東京の気温は「city_temps[0]」として定義、秋田が「city_temps[1]」熊本が「city_temps[2]」として定義されています。
下記は秋田の要素(平均気温のリスト)を抜き出した例。
city_temps[1]
[10.0, 10.4, 11.5, 11.2, 10.9, 10.6, 11.8, 12.2]
要素の比較
次に各要素を比較してみましょう。
熊本「city_temps[2]」の6番目の要素「17.5度」と熊本「city_temps[2]」の3番目の要素「16.4度」を比較してみると、気温差が1.1度あることがわかります。
city_temps[2][6]-city_temps[2][3]
1.1000000000000014
次に都市間の平均気温を比較してみましょう。
東京「city_temps[0]」の4番目の要素「15.2度」と熊本「city_temps[2]」の4番目の要素「15.9度」を比較してみると以下のようになります。
city_temps[0][4]-city_temps[2][4]
-0.7000000000000011
気温差は0.7度。熊本の方が同じ季節でも0.7度高いということですね。
それでは東京、秋田、熊本の平均気温をグラフで視覚化してみましょう。
リストのグラフ化
グラフ化するにはPython のライブラリ機能「matplotlib」を使います。
Jupiter Notebook に下記の記述をします。
%matplotlib inline
import matplotlib.pyplot as plt
これで、「matplotlib」が使えるようになります。
次に下記のように記述すると、リストをグラフ化してみることができます。
plt.plot(city_temps[0])
plt.plot(city_temps[1])
plt.plot(city_temps[2])
データの2次元配列の感覚はつかめたと思います。
リストをつかった統計の基礎
次に、リストの合計や最大値、最小値を抜き出してみましょう。
リストの合計の求め方は、「sum()」関数を使います。
リストの合計値、最大値、最小値を求める
例えば以下の例。
「monk_fish_team」には小学生5人の身長がリスト化されています。
関数「sum()」を使って5人の身長の合計を求めると、780になります。
monk_fish_team = [158, 157, 163, 157, 145]
sum(monk_fish_team)
780
リスト内の最大値を求める場合は「max()」関数、最小値を求める場合は「min()」関数を使います。
「max()」を実行してみると最大値163を抽出、「min()」を実行して最小値145を抽出しました。
max(monk_fish_team)
163
min(monk_fish_team)
145
でもリストにどれだけ要素が入っているかわからない場合、データの適切な管理ができなくなりますね。
ある要素のデータとある要素のデータを比べたいときに、要素のインデックスがいくつかわからなければ知りたい情報を得ることができません。
リストの要素数を確認する
その場合、リストのデータ数を把握することができる関数「len()」を使います。
例えば以下の例。
len(city_temps[0])
8
東京の平均気温の要素は8要素あるということがわかります。
monk_fish_teamでも実行してみると、以下のような結果がえられます。
len(monk_fish_team)
5
monk_fish_teamの要素数は5個あるということが分かりました。
平均値の計算
ここまでわかったら、平均など簡単なデータ分析ができます。
平均の求め方は、以下のとうり。
monk_fish_teamの合計と要素数を定義し、平均を割りだすと156という答えが出ました。
monk_sum=sum(monk_fish_team)
monk_len=len(monk_fish_team)
monk_mean=monk_sum/monk_len
monk_mean
156
では平均身長と各生徒の身長を比較して見ましょう。
グラフ化してみる
各生徒の身長を表すためにバーグラフを使いますが、そのための関数が「plt.bar()」です。
plt.bar([0,1,2,3,4],monk_fish_team)
この関数を実行することで、以下のバーグラフができます。
次に、平均身長がわかるように、バーグラフに平均身長の線を引いてみます。
plt.plot([0, len(monk_fish_team)],[monk_mean, monk_mean], color='red')
下のようなグラフができますね。
この二つの関数を組み合わせて、出力してみましょう。
plt.bar([0,1,2,3,4],monk_fish_team)
plt.plot([0, len(monk_fish_team)],[monk_mean, monk_mean], color='red')
平均身長と各生徒の身長が一目でわかりますね。
簡単ですが、データ分析を行うことができました。
これらの基礎を組み合わせて、もう少し複雑なデータ分析ができるようになっていくのが楽しみです。