▶ これからデータ分析の学習を始める方向けに、学習の進め方をまとめています。次の記事を参考にしてください。
はじめに
今回は、Pythonでデータ分析をするうえで基本となる、リストについて解説をしていきます。リストは複数のデータを並べて管理するものです。データ分析の初歩の段階では細かな文法まで抑えておく必要はありません。今回整理するような初歩的内容をまず知っておけば十分でしょう。今後、データ分析を進めていくうえで、必要に応じで深堀して学んでいけばよいのです。肩の力を抜いて気楽にいきましょう。では、早速、みていきます。
リスト
リストの中身は、数値でも文字列でも構いません。Pythonで扱うデータであれば、なんでも入れることができます。また、データ型をそろえる必要もなく、文字列や数値が混在していても構いません。
リストは中に入れられたデータの順番が管理されていて、この順番(インデックスといいます)を使って、データにアクセスすることができます。
リストの作り方
リストは[ ] (角括弧)を使って定義します。単純に角括弧の中に、リストの要素を並べていきます。
[要素0,要素1,要素2,...]
リストを定義して変数に代入するには、次のようにします。
test_list1= [要素0,要素1,要素2,...]
空のリストは、
test_list2=[]
のようにして作ることができます。
要素の追加
リストに要素を追加するには、appendを使います。ここからは実際にコードを書いて、試していくとわかりやすいですね。
test_list=[1,2,3,4,5]
test_list
すると、次のように結果が返ります。
[1, 2, 3, 4, 5]
まずは、簡単な数字のリストを作りました。これに要素を追加してみましょう。ここでは、10を追加することにします。
# リストに要素を追加する
test_list.append(10)
test_list
[1, 2, 3, 4, 5, 10]
上記のように、リストを格納した変数に対して、append()メソッドを使います。追加したい要素をappend()メソッドで指定します。この方法では、一度に追加できる要素は1つだけです。
場合によっては、一度に複数の要素を追加したい時もあるでしょう。その場合は、リストの足し算で実現します。追加したい要素のリストを作成しておき、これを足すことで実現できます。
add_list=['10月1日','10月2日','10月3日']
test_list + add_list
[1, 2, 3, 4, 5, 10, '10月1日', '10月2日', '10月3日']
いかがでしょうか?追加したいリストをadd_listとして、これを足し算するとちゃんと要素が追加されていますね。冒頭でリストの要素はデータ型がそろっていなくてもよい、と説明しました。そこで、ここでは、追加する要素は文字列型としましたが、うまく追加できています。
リストから要素を取り出す
リストではデータの順番が管理されています。これをインデックスといいます。リストのインデックスは0から始まることに注意してください。先ほど定義した、test_listを使ってみてきます。
まず、リストから要素を取り出す基本は、
リスト名[要素のインデックス]
となります。要素のインデックスは0から採番されるため、例えば、インデックス0に対応するのは(先頭の)1という要素、インデックス3に対応するのは(先頭から4番目の)5という要素になります。
test_list[0]
1
もう一つ見ておきましょう。
test_list[4]
5
スライスを使って要素を取り出す
スライスを使うとリスト内の連続した複数の要素を取り出すことができます。スライスは、:(コロン)をつかって区切ったインデックスで表します。次のような形となります。
リスト名[最初の要素のインデックス:最後の要素のインデックス+1]
:(コロン)の後のインデックス番号の要素は含まないことに注意してください。そのため、「最後の要素のインデックス+1」としています。これも実際に試してみましょう。
test_list[0:3]
[1, 2, 3 ]
test_list[0:3]では、インデックス0からインデックス2までの3つの要素を抽出することができます。同様に、
test_list[3:5]
[4, 5]
test_list[3:5]では、 インデックス3からインデックス4までの2つの要素を抽出することができます。
要素の置き換え
要素のインデックス指定とイコールによる代入を組み合わせると、リストの要素の置き換えをすることができます。これも例を見てみましょう。
test_list
まずはリストの中身を確認しておきましょう。結果は以下のようになります。
[1, 2, 3, 4, 5, 10]
test_listは、1,2,3,4,5,10という要素が並んでいますね。最初の要素を100に置き換えるには、インデックス0を指定して、そこに100を代入すればよい、というわけです。やってみましょう。
test_list[0]=100
test_list
[100, 2, 3, 4, 5, 10]
使っているうちに、必要に迫られて学ぶことになるので、まずは以下を押さえておけばよいです。これを知っているだけでも、ちょっとした処理に取り掛かることができます。とにかく、基本文法を身につけて早く実践に取り掛かることを意識しましょう。
リスト型の注意点
リスト型には、一つ注意点があります。※慣れないとミスしがちなのでよく読んで理解して、常に気を付けるようにしてください。
それは、
「リストの変数を別の変数に代入した場合、代入した変数の要素の値を変えると元の変数の要素の値も変わる」
という特性です。
言葉ではわかりにくいので、例を示します。
alphabet_list=['a','b','c','d','e']
copy_list=alphabet_list
copy_list[0]='A'
alphabet_list
['A', 'b', 'c', 'd', 'e']
これは、まずalphabet_listというリストがあって、これをcopy_listに代入しています。このcopy_listのインデックス0の要素を大文字’A’に置き換えています。
すると、もとのリストであるalphabet_listのインデックス0の要素も大文字’A’に置き換わります。これは、明示的なリストとして変数に代入することで防ぐことができます。次のようにします。
alphabet_list=['a','b','c','d','e']
copy_list=alphabet_list[:]
copy_list[0]='A'
alphabet_list
['a', 'b', 'c', 'd', 'e']
今度は元のリストalphabet_listは変更されていません。一方、コピーしたcopy_list1を確認すると、次のようにインデックス0の要素が置き換わっています。
copy_list
['A', 'b', 'c', 'd', 'e']
最後は少し不思議な感じがするかもしれませんね。これはalphabet_listもcopy_listも同一のデータを参照しているために起こります。明示的にリストにすれば、元データ自体が異なるためこのようなことは起こりません。
copy( )メソッドを使う場合は次のようにします。
alphabet_list=['a','b','c','d','e']
copy_list=alphabet_list.copy( )
まとめ
データ分析をするにあたり初めに理解して起きたいリストの基礎はこれだけです。コピーに関しては、はじめは意味が分からなければ、そのままコピーして要素を書き換えると、元のデータも書き換わる、ということを覚えておけばそれで構いません。
書き換わってはいけないときは、copy( )メソッドあるいは、スライスを使う、ということだけ気を付けるようにしてください。
▶ データ分析をする環境の構築はお済みですか?Windows用の環境構築手順はこちらの記事を参考にしてください。
コメント