python入門講座 | 配列タイプ変数入門(リスト, NumPy配列, DataFrameを使う目的)[第21回]

アラサーOLのためのpython入門講座
配列タイプの変数を使うことでデータや複数の数値を一つの変数に格納できます。

Ciao!みなさんこんにちは!このブログでは主に
(1)pythonデータ解析,
(2)DTM音楽作成,
(3)お料理,
(4)博士転職
の4つのトピックについて発信しています。

今回は「アラサーOLのためのpython入門講座」です!この講座では、プログラミング初心者アラサーOLのMi坊さんに、pythonを学習する上でのアドバイスを行います!「パソコンもプログラミングも初心者だけど、プログラミングができるようになりたい!」という方のためにstep-by-stepで解説していきます。

今日は複数の値やデータをまとめて格納できる配列という種類の変数について解説します。例えば、csvやエクセルに格納された1万行のデータを配列として一つの変数に格納することができます。

このような配列タイプの変数はPythonでデータ分析をする際に必須です!この記事を読めば、配列タイプ変数を使う目的を知ることができます。ぜひ最後までお付き合いください!

Kaiko
Kaiko

この記事はこんな人におすすめ

  • 初心者だけどpythonを始めた!
  • pythonの基本的な使い方を知りたい!
  • 独学で学んだpythonの知識を整理したい!

Abstract | 配列を使うことでデータ処理を効率化できる

Pythonでは、他のプログラミング言語同様、配列タイプの変数を使うことができます。Pythonでは、ずばり「配列型」の変数は存在せず、リスト型(list)、辞書型(dict)、タプル型(tuple)やNumPy 配列(array)、Pandas DataFrameなどを使います。

配列タイプの変数を使うことでデータ処理を効率的に行うことができます。表形式で集計されたデータを一つの変数に格納できるので、データの格納を1行のコードで行うことができます。格納されたデータを呼び出すときにも、「何行何列目」のデータという形で呼び出すことができます。これにより、すべての要素や特定の要素に対して同じ処理を簡単に行うことができます。データ分析など、ある程度以上の量のデータを扱う場合は配列タイプの変数を使うことが必須です。



Contents | プログラミングと配列変数

多くのプログラミング言語では配列という型の変数が用意されており、複数の値を一つの配列型変数に格納することができます。配列型の変数を使うことで、表形式で集計された大量のデータの処理を効率的に行うことができます。

Pythonと配列タイプ変数 | リスト型、辞書型、NumPy配列、Pandas DataFrame

Pythonでも複数の値を格納できる種類の変数を利用することができます。Pythonではずばり「配列型」という変数は存在しません。リスト型(list)、辞書型(dict)、タプル型(tuple)やNumPy 配列(array)、Pandas DataFrameなどを使うことになります。今回はこれらを総称し、複数の値を一つの変数に格納できるものを配列タイプ変数と呼びます。「配列型」と言ってしまうとNumPy配列のみを指すように聞こえるため、あえて「タイプ」という言い方をします。リスト型や辞書型、NumPy配列の使い方は今後何回かを使って解説する予定です。

配列タイプ変数を使う目的 | データの格納と呼び出しの効率化

配列タイプ変数使う目的は、一言で言えば、データの格納と呼び出しの効率化です。例えば、以下の表を変数に読み込むことを考えましょう。果物の名前とそれぞれの単価が書かれた表です。1行目はヘッダーです。

# FruitePrice[yen]
apple150
banana50
orange100
表1. 読み込みたいデータ

配列タイプ変数によるデータ格納の効率化

配列タイプ変数を使うことで、データやパラメータ数値を効率的に格納することができます。配列タイプ変数を使わない場合には、

# 配列変数を使わない例(個別に変数を定義する)
price_apple = 150
price_banana = 50
price_orange = 100

のように、一つひとつのセルに対して変数を用意しなければなりません。今は3行だけのデータなのでこれでも良いですが、データがもっと沢山になった場合には大量の変数を用意することになってしまいます。

一方で、表1がテキストファイル(input.txt)で用意されていたとしたら、NumPy配列に

# 配列タイプ(NumPy array)を使う例
prices = np.genfromtxt('input.txt', fmt='%s')

という1行の処理で全データを読み込むことができます。入力データが何万行、何万列になろうと1行で済みます

データ呼び出しの効率化

変数に格納されたデータを呼び出す、すなわち値を参照するときにも効率的に行うことができます。
配列タイプ変数を使わない場合、「price_banana」などの個別の変数をベタ打ちで呼び出す必要があります。

# 個別の変数を呼び出す例
print(price_banana)

NumPy arrayのような配列タイプ変数に格納された値の場合、「何行目の何列目」を指定して呼び出すことができます。さらに、1列目の値(Fruite)が”banana”の行を呼び出すといった操作も可能です。

# NumPy arrayの値を呼び出す例
print(prices[1,1])    #2行目2列目を呼び出す
print(prices[:,1][ prices[:,0] == 'banana'])   # 1列目がbananaの値段を呼び出す

何行何列目という指定ができるため、例えばfor文でループすることで、同じ処理をすべての要素に対して行ったり、特定の行や列だけに対して行うことも簡単にできます。

# for文でループする例
for i in range(len(prices))
   print('Fruite: %s, Price: %s' % (prices[i,0], prices[i, 1]))

もしも配列タイプ変数を使わないと、要素の数だけコードをベタ打ちで書くことになります。データが何万行になったらとてもそんなことできません。ある程度以上の量のデータを処理する必要がある場合、配列タイプの変数を使わないと対応できません。配列タイプ変数を使うこなすことはデータ処理においては必須です。

ちなみにNumPyではループしなくてもすべての要素や特定の要素に同じ処理を行うことができます。Pythonなどのインタプリタ言語のループ処理はC言語などのコンパイル言語と比べて遅いです。データ分析など、要素の数が多い場合にはNumPy arrayを使ってループ処理を避けることで高速化します。

このように、配列タイプ変数を使うことで、データや複数値の格納や参照を効率的に行うことができます。



Conclusion | まとめ

最後までご覧いただきありがとうございます!配列タイプ変数を使う目的について解説しました!データ処理など、プログラミングには必須の知識です。リスト型、辞書型、NumPy配列など、それぞれの配列タイプ変数の使い方は、今後数回に分けて実例つきで解説します。ぜひマスターしましょう!

以上「python入門講座 | 配列タイプ変数入門(リスト, NumPy配列, DataFrame)を使う目的」でした!
またお会いしましょう!Ciao!



References | 参考

以下の教科書を参考にして進めています!より詳しく学びたい方は購入して読んでみてください!

Pythonの参考教科書

コメント

タイトルとURLをコピーしました