今回の記事では、データ分析をpythonで始めたい初心者のための完全ガイドを紹介していきます。
データサイエンスで使うpythonの基礎中の基礎を、必要な部分に絞って解説してあります。ちょっと長いですが、これを抑えればpythonの基本は必ず身につきます。
サンプルコードをたくさん用いていますので、実際に各々の環境で手を動かしながら勉強していってください。
Pythonデータ分析の重要性

Pythonを使用したデータ分析は現代のビジネスや科学において不可欠なスキルです。
特に下記の点で優れています。
- Pythonは優れたデータ分析ツールやライブラリが非常に多く、統計分析や機械学習、データの可視化、データマイニングがしやすい
- Pythonを使用することで、手作業でのデータ処理の煩わしさを解消し、生産性を向上させることができる。
- pythonは利用者が多いため、学ぶためのコンテンツが多い
初学者はRかpythonで迷う方もいますが、個人的にはpythonを強く勧めます。
やっぱり、いずれは機械学習・ディープラーニングをやりたいってなった時にpythonでないと厳しいですからね!
Pythonデータ分析の基本的なコンセプトについての説明
Pythonデータ分析の基本的なコンセプトには、データの収集、クリーニング、可視化、分析、および予測が含まれます。Pythonを使用してこれらのタスクを行うためには、下記のライブラリを学ぶ必要があります。
- Pandas(データフレームにしてデータを扱いやすく)
- NumPy(行列計算)
- Matplotlib(データ可視化)
- Seaborn(データ可視化)
- Scikit-learn(機械学習)
pythonにはこの他にもたくさんのライブラリがありますが、まずはこの5つのライブラリが重要です。
今回は上記の説明は割愛し、pythonの基礎にしぼって解説します。
Pythonの基本的な文法についての紹介
ではさっそくpythonの基本的な文法を学んでいきましょう。
Pythonの基本的な文法は、数値、文字列、リスト、タプル、辞書、セットなどのデータ型、およびif、for、while、tryなどの制御構造を含みます。以下は、Pythonの基本的な文法の例です。
pythonで数値を扱う
データ分析では数値は必須ですね。
数値は、整数や浮動小数点数として表現されます。Pythonでは、算術演算子や数学関数を使用して数値の計算ができます。
また、pythonでは直接数字同士を演算するというよりは、下記の様に変数(a,b)にいれてから計算します。
そして最後にprint()関数を使う事で、表示する事ができます。
1 2 3 4 5 6 7 8 9 |
a = 10 # 整数の代入 b = 3.14 # 浮動小数点数の代入 # 算術演算子の使用 c = a + b # 足し算 d = a * b # 掛け算 e = a / b # 割り算> f = a ** # べき乗 print(c, d, e, f) # 結果を表示 |
「c = a + b」ではaに代入された10とbに代入された3.14が足し算され、その結果13.14がcに代入されています。
pythonで文字列を扱う
文字列は、文字の並びとして表現されます。Pythonでは、文字列をクオートで囲みます。また文字列の結合やスライスといった操作もできます。
まずは文字列を代入してから結合してみましょう。
1 2 3 4 5 6 7 |
greeting = "Hello" # 文字列の代入 name = "Alice" # 文字列の代入 # 文字列の結合 message = greeting + ", " + name + "!" print(message) |
->「Hello, Alice!」が返ってきます。
もちろん変数にいれず、直接printのあとに文字を入れても大丈夫です。その際クオートを忘れずに!
1 |
print('Hello, Alice!') |
->「Hello, Alice!」
文字列をスライスしてみよう
また、スライスといって文字を指定の場所で区切る事もできます。
1 2 3 4 |
name = 'やまもと たろう' print(name[0]) # 1文字目を表示 print(name[1:3]) # 2文字目から3文字目までを表示 |
->や
->まも
気を付けて欲しいのが、pythonでは1文字目を指定する場合は[0]と指定することです。
また、「:」を使う事で、2個目の様に範囲指定でスライスする事ができます。
あとsplit()関数というのがありまして、これがなかなか使えます。
1 2 3 4 5 |
# 文字列の分割 s = "apple_banana_orange" fruits = s.split("_") print(fruits) |
->[‘apple’, ‘banana’, ‘orange’]
この様に’_’で区切られてリストで返ってきます。
これはスクリプト組む時など自動化の際に良く使います。対象のファイル名を抽出してパスの指定をしたりします。
pythonで要素の集合を扱う
pythonでは文字列や数字を集合で扱う事が非常に多いです。
そんな時に使うのが、下記の物になります。
- リスト
- タプル
- 辞書
- セット
リストとは?
実は先ほどfruits変数を’_’で区切って返ってきたのがリストです。
リストは、カンマで区切られた要素の集合です。以下は、リストを定義して、要素の追加やスライスなどの操作を行うサンプルコードです。
また、一度作ったリストに対してappend()で要素を追加する事もできます。
文字列と同じように要素のスライスもできます。
1 2 3 4 5 6 7 8 9 10 11 |
# リストの定義 fruits = ['apple', 'banana', 'orange'] # リストの要素の追加 fruits.append('grape') print(fruits) # ['apple', 'banana', 'orange', 'grape'] # リストのスライス print(fruits[1:3]) # ['banana', 'orange'] print(fruits[:2]) # ['apple', 'banana'] print(fruits[2:]) # ['orange', 'grape'] |
ちなみにスライスの指定でfruits[2:]とする事で、3番目の要素以降全てと指定する事ができます。逆にfruits[:2]とすると、最初から2番目の要素までをスライスします。
また下記の様にする事で任意の場所に要素を追加できます。
1 2 3 4 5 |
# 先頭に要素を追加 fruits[0] = 'melon' print(fruits) |
->[‘melon’, ‘banana’, ‘orange’, ‘grape’]
タプルとは?
タプルはリストと非常によく似ています。
違いは作成されたタプルは変更できず、要素を追加、削除、変更することはできません。
リストの場合は[]だったのが、()で囲むとタプルになります。
1 2 3 4 5 6 7 8 |
# 要素を持つタプルを作成する fruits = ('apple', 'banana', 'cherry', 'date') # タプルは、リストと同じように、インデックスを使って要素にアクセスできます。 print(fruits[0]) # 出力: apple # タプルは不変であるため、要素の変更はできません。 fruits.append('grape') # エラーが発生します |
辞書とは?
Pythonの辞書(dictionary)は、キーと値のペアを格納することができるデータ型です。
{}で括ります。辞書は、リストやタプルと同様に、複数の要素を格納することができますが、要素を格納する方法が異なります。
以下のサンプルコードを使用して、辞書の使い方を説明します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 辞書の定義 my_dict = {"apple": 100, "banana": 200, "orange": 300} # 要素の取得 print(my_dict["apple"]) # 100 # キーの存在チェック if "apple" in my_dict: # apple existsが返ってくる print("apple exists") # キーの一覧取得 keys = my_dict.keys() print(keys) # dict_keys(['apple', 'banana', 'orange']) # 値の一覧取得 values = my_dict.values() print(values) # dict_values([100, 200, 300]) |
上記のコードでは、my_dict
という辞書を定義して、apple
、banana
、orange
というキーに対応する値を設定しています。また、if
文を使ってapple
というキーが存在するかどうかをチェックし、keys()
メソッドとvalues()
メソッドを使って、それぞれキーと値の一覧を取得しています。
if分に関しては後述します。
もちろん要素の追加や削除もできます。
1 2 3 4 5 6 7 |
# 要素の追加 my_dict["grape"] = 400 print(my_dict) # {'apple': 100, 'banana': 200, 'orange': 300, 'grape': 400} # 要素の削除 del my_dict["apple"] print(my_dict) # {'banana': 200, 'orange': 300, 'grape': 400} |
grape
というキーに対応する値を追加し、del
文を使ってapple
というキーに対応する要素を削除しています。
セットとは?
Pythonのセット(set)は、一意(ユニーク)の要素を格納するためのデータ型です。
{}で括ります。以下は、セットに関するサンプルコードです。
1 2 3 4 5 |
# setの定義 set = {1, 2, 3, 4, 5, 5, 6, 6, 6} print(set) |
->{1, 2, 3, 4, 5, 6}
何個同じ要素があってもユニーク化されて返ってきます。
pythonの基本文法
ではここからはpythonの基本文法に関して解説していきます。
ここでは主に下記について説明します。
- if
- for
- while
if
if分はエクセルの関数で使った事がある人も多いと思います。
Pythonのif文は、ある条件が真であるかどうかを判断して、条件に応じた処理を行うために使用されます。以下はif文のサンプルコードです。
1 2 3 4 5 6 |
x = 10 if x > 5: print("x is greater than 5") else: print("x is less than or equal to 5") |
->x is greater than 5
このように、ifの後に書いた条件式にTrueを返すかFalseを返すかで結果が変わってきます。
また、if文には、elif節を追加することもできます。
これにより、複数の条件式を書く事ができます。
1 2 3 4 5 6 7 8 |
x = 10 if x > 15: print("x is greater than 15") elif x > 5: print("x is greater than 5 but less than or equal to 15") else: print("x is less than or equal to 5") |
->x is greater than 5 but less than or equal to 15
このコードでは、変数x
が10である場合、最初の条件式x > 15
がFalseとなるため、次の条件式x > 5
が評価されます。この条件式はTrueとなるため、print("x is greater than 5 but less than or equal to 15")
が実行されます。
ちなみに、ifとelifの条件に合致しない物は全てelse:が実行されます。
for
for文もデータサイエンスでは非常に良く使います。
Pythonのforループは、指定されたシーケンス(リスト、タプル、文字列など)の各要素に対して反復処理を行います。
1 2 |
for i in range(1, 6): print(i) |
->1 2 3 4 5
上記のコードは、1から5までの整数を反復処理し、各整数を1行に1つずつ出力します。
ちなみにrange(1, 6)の部分はrange()関数で、指定された範囲内の整数のシーケンスを作成するために使用されるビルトイン関数です。
この場合[1, 2, 3, 4, 5]となっています。
range()
関数は3つの引数を取ります:start
、stop
、step
です。start
は数列の開始値、stop
は数列の終了値(この値は数列に含まれません)、step
は各数値間の差を指定します。
例えば、range(0, 10, 2)
とすると、0から始まり2ずつ増加するシーケンスが作成され、0, 2, 4, 6, 8の整数が含まれます。
また、リストを使用したforループの例を以下に示します。
1 2 3 |
numbers = [1, 2, 3] for number in numbers: print(number + 10) # インデントがある |
->11 12 13
numbersに入っている値に全て10を足した数字をprintしています。
ちなみにfor文にはインデントが必要です。
for number in numbers:の次の行を見てください。printの前にスペースが入っていますね。
インデントには、コードブロックの開始と終了を示す重要な役割があります。ブロック内の各行は、同じ数のスペースまたはタブでインデントする必要があります。Pythonでは、一般的にスペース4つが推奨されていますが、スペース2つやタブを使用することもできます。
インデントが入っていなかったり、揃っていなかったりでエラーになる事が非常に多いので注意しましょう!
append
また実務で良く使うのが最初に空のリストを作り、その中に要素をどんどん入れていく事です。
1 2 3 4 5 6 7 8 9 |
# リストの作成 my_list = [] # forループとappendの組み合わせ for i in range(5): my_list.append(i) # 結果の表示 print(my_list) |
->[0, 1, 2, 3, 4]
空のmy_listを作成した後に、range()関数で0~4の数字を入れていってます。
慣れてくるとlist内包表記で1行で書く事もできますが、中級以上になるのでここでは割愛します。
while
whileはfor文に似ていますが少し違います。
指定された条件がTrueである間、繰り返しブロック内のコードを実行し続け、Falseになると終了します。
1 2 3 4 5 |
# 1から10までの数字を表示する例 i = 1 while i <= 10: print(i) i += 1 |
->1 2 3 4 5 6 7 8 9 10
for文の様にiに1が足され続け、10になった瞬間に止まります。
おわりに
ここまでお疲れ様でした。完走した自分を褒めてあげてください。
これで一通りpythonの基礎は身についたと思います。
しかし、最初にお話ししたようにデータ分析ではpandas、numpy、seabornなどの各種ライブラリを使いこなす事が必須です。
また、チーム開発をする場合には書き方のお作法なども必要になってきます。
まずはPEP8にならって書くようにすると良いでしょう。
歩みを止めずに、さらに学習してデータ分析を楽しみましょう!