記事の概要
データサイエンティストに向けての勉強に当たり、しばらくの間Codecademy等でのインプットを中心に行ってきましたが、インプットするだけではなく、ちゃんと知識を集約してアウトプットすることが大事ということで、本格的に学んできたことの発信をしていきたいと思います。
第1回はPython言語の基本的な性質について、私のなじみ深いJava等の言語に比べた違いを主に紹介します。
Pythonとは
Pythonは動的型付け言語であり、for文などを書かなくとも1行でループ処理を含む処理が書けるようにさまざまな特徴的な文法が存在する。
数値計算・データ可視化・機械学習・ディープラーニングなどを簡単に扱えるライブラリが多数存在し、データ分析を行う際のデファクトスタンダードといえる言語である。
基本的な文法
割り算
Javaのint型割り算と同じように、余りを切り捨てて整数にしたい場合には「//」を使う。
print(12 / 5) #2.4
print(12 // 5) #2
累乗
累乗は「**」で簡単に計算可能。
print(12 / 5) #2.4
複数行文字列
ダブルクォーテーションを3つ続けたもので囲うと、複数行の文字列を表現できる。
multi_line = """
あいうえお
かきくけこ
さしすせそ
"""
複数戻り値
Pythonの関数は複数の戻り値を返すことが可能。
def square_point(x_value, y_value):
x_2 = x_value * x_value
y_2 = y_value * y_value
return x_2, y_2
x, y = square_point(2, 3)
リスト
zipメソッド
zipメソッドは、同じ要素数をもつ1次元リスト2つ以上を引数にとり、各要素をペア(引数2つの場合)とした2次元リストを返す。
names = ['Jenny', 'Alexus', 'Sam', 'Grace']
heights = [61, 70, 67, 65]
names_and_heights = zip(names, heights)
print(names_and_heights)
[('Jenny', 61), ('Alexus', 70), ('Sam', 67), ('Grace', 65)]
rangeメソッド
range(l, r, d)は、開区間[l,r)までの数について、lからスタートしてdずつ増えた数列をリストとして返す。
my_range = range(1, 100, 10)
print(list(my_range)
[1, 11, 21, 31, 41, 51, 61, 71, 81, 91]
slice
リストのスライス[l:r]は、開区間[l,r)の要素を抜き出した新たなリストを返す。
lまたはrを省略した場合、それぞれ最初から、最後までを抜き出す。
また特殊な記法として[-x:]と書くと、最後からx個の要素を抜き出す。
fruits = ['apple', 'banana', 'cherry', 'date']
print(fruits[0:3])
print(fruits[:3])
print(fruits[2:])
print(fruits[-3:])
['apple', 'banana', 'cherry']
['apple', 'banana', 'cherry']
['cherry' , 'date']
['banana', 'cherry', 'date']
countメソッド
リスト内に指定の要素がいくつ存在するかを簡単に取得する方法として、countメソッドがある。
letters = ['m', 'i', 's', 's', 'i', 's', 's', 'i', 'p', 'p', 'i']
print(letters.count('i'))
4
ソート
リストを並び替えるにはsortメソッドを使う。
また、sortedメソッドは、元のリストを並び替えた新しいリストを返す。
names = ['Xander', 'Buffy', 'Angel', 'Willow', 'Giles']
sorted_list = names.sorted()
print(sorted_list)
names.sort()
print(names)
['Angel', 'Buffy', 'Giles', 'Willow', 'Xander']
['Angel', 'Buffy', 'Giles', 'Willow', 'Xander']
zipメソッドで作成した2次元リストやディクショナリで特定のインデックス(キー)を指定してソートしたい場合は、Lambda式を使うか、itemgetterを使う方法がある。詳細はこの記事が詳しい。
リスト内包表記
Pythonで簡単にリストを作る方法にリスト内包表記がある。
new_values = [value + 100 for value in my_values]
後置ifを使用して、特定の要素のみのリストを作成するなど、様々な応用がある。詳細はこの記事が詳しい。
第1回はこの程度で。次回はNumPy, Scipyあたりになります。