【Pythonデータ処理①】NumPyとは何か|配列を扱うための基礎
Phase 1 では、Pythonの基礎文法と、データを扱うための考え方を整理してきました。ここからの Phase 2 では、実際のデータ処理に近い内容に進みます。その入口として、まず押さえておきたいのが NumPy です。
NumPy は、Pythonで数値データを効率よく扱うためのライブラリです。データサイエンスでは、1つの数値だけを見るよりも、たくさんの数値をまとめて扱う場面が多くあります。そこで役立つのが、NumPy の配列という考え方です。
最初は少し専門的に見えるかもしれませんが、考え方はシンプルです。Phase 1 で学んだリストを出発点にして、「複数の数値をもっと計算しやすい形で扱う道具」と考えると入りやすくなります。
この記事で整理すること
この記事では、NumPy の基本的な役割と、配列を使って数値データを扱う考え方をまとめます。
NumPyとは何か- Pythonのリストと
NumPy配列の違い NumPy配列の基本的な作り方- 配列でまとめて計算する方法
- 配列の形を見るという考え方
NumPyがデータ処理でどう役立つか
今回のポイントは、複数の数値を配列としてまとめて扱う感覚をつかむことです。
ここがわかると、数値データをまとめて計算する流れが見えやすくなり、次に扱う pandas の表形式データにも進みやすくなります。
NumPyとは何か
NumPy は、Pythonで数値計算を行うための基本的なライブラリです。特に、複数の数値をまとめて持ち、それらに対して同じ処理を一度に行いたいときに使います。
たとえば、点数、売上、気温、株価、アクセス数、アンケートのスコアなど、データ分析で扱う値の多くは数値です。こうした数値は、1つだけで見るよりも、複数をまとめて計算する場面が多くあります。
NumPy を使うと、複数の数値を配列として扱えます。配列にすると、足し算、掛け算、平均、合計などの処理をまとめて行いやすくなります。
データサイエンスの入口では、NumPy を「数値データをまとめて計算するための土台」として押さえておくと理解しやすいです。
リストだけだと数値計算で扱いにくい場面がある
Phase 1 では、複数の値を扱うためにリストを学びました。リストはとても便利で、複数の値をまとめて持つことができます。
ただし、数値の集まりをまとめて計算したいときには、リストの動きに注意が必要です。たとえば、2つのリストを足してみます。
a = [1, 2, 3]
b = [4, 5, 6]
print(a + b)
実行すると、次のようになります。
[1, 2, 3, 4, 5, 6]
リストどうしを + でつなぐと、要素ごとの足し算ではなく、リストの連結になります。
データ分析では、対応する位置どうしを足したい、すべての値を2倍したい、平均からの差を求めたい、という場面がよくあります。そのような計算をしやすくするために、NumPy 配列を使います。
配列とは何か
NumPy で中心になるのが配列です。配列は、複数の数値をまとまった形で持つためのデータ構造です。
見た目はリストに似ていますが、数値計算に向いた性質を持っています。リストは、文字列や数値などを柔軟に入れられる入れ物です。NumPy 配列は、数値の集まりをまとめて計算するために使いやすい構造です。
たとえば、点数の一覧、毎日の売上、株価の終値、気温の推移などは、配列として扱うと計算しやすくなります。
この段階では、配列を「複数の数値を計算しやすい形でまとめたもの」と考えておくと十分です。
NumPyを使う準備
NumPy を使うときは、まずライブラリを読み込みます。慣例として、np という名前で使うことが多いです。
import numpy as np
この1行を書くことで、NumPy の機能を np という短い名前で使えるようになります。
この書き方は多くの教材やコードで使われています。今後 np.array()、np.mean()、np.sum() などの形が何度も出てきます。
NumPy配列を作る
NumPy 配列を作るには、np.array() を使います。まずは、Pythonのリストから配列を作ってみます。
import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr)
実行すると、次のように表示されます。
[1 2 3 4]
このコードでは、リストとして並んでいた数値を、NumPy 配列として扱える形に変えています。
見た目はリストに近いですが、Pythonの中では別のデータ構造です。型を確認すると、その違いがわかります。
import numpy as np
arr = np.array([1, 2, 3, 4])
print(type(arr))
type() で確認すると、通常のリストとは異なる型として扱われていることがわかります。
Phase 1 で学んだ型の確認は、ここでも役立ちます。見た目が似ていても、型が違うと計算のされ方も変わります。
配列ではまとめて計算できる
NumPy 配列の大きな特徴は、要素ごとの計算をまとめて行えることです。
まず、2つの配列を足してみます。
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b)
実行すると、次のようになります。
[5 7 9]
対応する位置どうしが足し算されています。1番目どうし、2番目どうし、3番目どうしがそれぞれ計算されています。
定数との計算もできます。
import numpy as np
a = np.array([1, 2, 3])
print(a * 2)
実行すると、次のようになります。
[2 4 6]
配列のすべての要素が2倍されています。1つずつ取り出して計算するコードを書かなくても、まとめて処理できます。
この「まとめて計算できる」感覚は、データ処理でとても重要です。単位を変換する、割合に直す、平均との差を求める、値を標準化する、といった操作につながります。
合計や平均を求める
NumPy では、数値の集まりに対する基本的な計算も簡単にできます。
たとえば、点数の合計と平均を求めてみます。
import numpy as np
scores = np.array([70, 82, 91, 65])
print(np.sum(scores))
print(np.mean(scores))
np.sum() は合計、np.mean() は平均を求める関数です。
点数、売上、気温、価格など、数値データを扱うときには、合計や平均を確認する場面が多くあります。NumPy を使うと、こうした基本的な計算を同じ流れで扱えます。
今の段階では、関数をたくさん覚える必要はありません。まずは、配列に対してまとめて計算できること、合計や平均のような基本的な計算ができることを押さえておきます。
最大値と最小値を求める
データの範囲をざっと見るときには、最大値と最小値も役立ちます。
import numpy as np
scores = np.array([70, 82, 91, 65])
print(np.max(scores))
print(np.min(scores))
np.max() は最大値、np.min() は最小値を求めます。
最大値と最小値を見ると、データがどのくらいの範囲に広がっているかをつかめます。たとえば、点数なら最高点と最低点、売上なら最大売上と最小売上、金融データなら価格やリターンの範囲を確認できます。
平均だけを見るとわからない情報も、最大値と最小値を見ることで見えてきます。このような確認は、次の Phase で扱う記述統計にもつながります。
配列の形を見る
NumPy では、データの中身に加えて、形も重要です。ここでいう形とは、要素がどのように並んでいるかということです。
まず、1次元の配列を見てみます。
import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr.shape)
このコードでは、配列の形を確認しています。1次元の配列で、要素数が4つであることがわかります。
次に、2次元の配列を作ります。
import numpy as np
matrix = np.array([
[1, 2, 3],
[4, 5, 6]
])
print(matrix)
print(matrix.shape)
この配列は、2行3列の形をしています。
データサイエンスでは、データが何個あるかに加えて、どのような形で並んでいるかを確認することが大切です。1次元のデータなのか、2次元のデータなのか、何行何列なのかを見ることで、処理の見通しがよくなります。
1次元配列と2次元配列
1次元配列は、数値が一列に並んだようなデータです。たとえば、点数の一覧や、ある銘柄の株価の時系列などがイメージしやすいです。
scores = np.array([70, 82, 91, 65])
2次元配列は、行と列を持つデータです。表のような形をイメージできます。
matrix = np.array([
[70, 82, 91],
[65, 74, 88]
])
2次元になると、行と列の考え方が出てきます。この感覚は、次に扱う pandas の DataFrame にかなり近いです。
NumPy で配列の形を見る練習をしておくと、pandas で行数や列数を確認するときにも理解しやすくなります。
NumPyとpandasのつながり
Phase 2 では、このあと pandas を使って表形式データを扱います。pandas は、CSVファイルを読み込んだり、行や列を取り出したり、欠損値を処理したりするときに使うライブラリです。
NumPy で学ぶ「数値をまとめて扱う」「配列の形を見る」「まとめて計算する」という感覚は、pandas に進んだあとも役立ちます。
たとえば、pandas で点数の列や売上の列を取り出すと、その列に対して平均を求めたり、割合を作ったり、条件で絞り込んだりします。そこでも、複数の数値をまとめて処理する感覚が使われます。
そのため、NumPy は単独で覚える内容というより、データ処理全体の土台として捉えると理解しやすくなります。
データサイエンスでどう役立つか
データサイエンスでは、多くの場面で数値の集まりを扱います。売上データ、株価データ、アクセス数、アンケートの点数、気温、実験結果など、数値として処理できるデータはたくさんあります。
NumPy を使うと、こうした数値の集まりに対して、まとめて計算できます。たとえば、合計、平均、最大値、最小値を出したり、すべての値を同じルールで変換したりできます。
機械学習でも、データは多くの場合、数値の集まりとして扱われます。特徴量、ベクトル、行列といった考え方も、NumPy の配列とつながっています。
今の段階では高度な計算まで進む必要はありません。まずは、数値データを配列として扱い、まとめて計算する基本をつかむことが大切です。
よくある混乱
ここでは、NumPy を学び始めたときに混乱しやすい点を整理します。
- リストと配列の違いが曖昧になる
- 見た目が似ているため、計算結果も同じだと思ってしまう
- 配列の形を確認する習慣がない
np.array()、np.sum()、np.mean()などの書き方に慣れないNumPyを難しい数値計算だけの道具だと感じてしまう
特に大事なのは、リストと配列の計算の違いです。リストでは連結になる操作も、NumPy 配列では要素ごとの計算になります。
また、配列では形を見ることも重要です。shape を確認すると、データがどのように並んでいるかを把握しやすくなります。
今の段階で押さえるべきこと
現時点で押さえたいのは、NumPy が数値データをまとめて扱うためのライブラリであることです。
NumPyは数値計算の基本ライブラリであるnp.array()で配列を作れる- 配列では要素ごとの計算をまとめて行える
np.sum()やnp.mean()で合計や平均を求められるshapeで配列の形を確認できる- 配列の考え方は
pandasや機械学習にもつながる
ここが整理できると、数値データをPythonで扱う感覚がかなり具体的になります。次の pandas に進むための準備としても十分です。
次に学ぶこと
ここまでで、NumPy の基本的な役割と、配列を使った数値データの扱い方を整理しました。
次は、表形式データを扱うためのライブラリである pandas を整理します。NumPy が数値の配列を扱うための土台だとすると、pandas は行と列を持つデータを扱うための中心的な道具です。
CSVファイルを読み込んだり、列を取り出したり、欠損値を確認したりする作業に進むことで、よりデータサイエンスらしい内容に入っていきます。
まとめ
NumPy は、Pythonで数値データを効率よく扱うためのライブラリです。複数の数値を配列としてまとめ、要素ごとの計算や合計、平均、最大値、最小値などの処理を行えます。
配列では、値の中身に加えて形を見ることも重要です。shape を確認すると、データが1次元なのか、2次元なのか、何行何列なのかを把握できます。
ここでは、リストから配列へ、単独の値から数値データのまとまりへ、という見方を押さえました。この感覚を土台にして、次は pandas で表形式データを扱っていきます。