#index
#Jupyter Notebook使い方
以下を読んでインストールし、使い方を学ぶ。
データ分析で欠かせない!Jupyter Notebookの使い方【初心者向け】
#Pythonの基礎
##変数
文字列を作成するときは、シングルクォーテーションまたはダブルクォーテーションで囲む。
また**Pythonには変数の型宣言が基本的に必要ない。**値を代入するだけで使える。
msg = 'test'
print(msg) # 出力:test
##演算
data = 1
print(data) # 出力: 1
data = data + 10
print(data) # 出力: 11
##リスト
リストとは複数の値を一纏めにして扱うためのもの。他の言語の配列と同じ。
data_list = [1,2,3,4,5,6,7,8,9,10]
print(data_list) # 出力: [1,2,3,4,5,6,7,8,9,10]
print('2番目の数:', data_list[1]) # 出力: 2番目の数:2
print('要素数:', len(data_list)) # 出力: 要素数:10
# リストに2を掛けても、リスト全体がもう一度繰り返されるだけ。2倍したい場合はfor文やNumpyを使う
print(data_list * 2) # 出力: [1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10]
リストの要素を追加したい場合はappend
、削除したい場合はremove
やpop
、del
などを使う。
data_list2 = [1,2,3,4,5]
print(data_list2) # 出力: [1,2,3,4,5]
# 括弧で指定した値と同じ要素を検索し、最初の要素を削除
data_list2.remove(1)
print(data_list2) # 出力: [2,3,4,5]
data_list3 = [1,2,3]
data_list3.append(10)
print(data_list3) # 出力: [1, 2, 3, 10]
##辞書型
辞書型では、キーと値をペアにして複数の要素を管理することができる。
Pythonで辞書を表現するには、{キー:値}
のようにコンロ区切りで表記する。
次の例のように、「appleが100」「bananaが200」などのように、何か指定したキーに対して値を保持させたい時に使う。
dic_data = {'apple':100, 'banana':200}
print(dic_data['banana']) # 出力: 200
dic_data["banana"] # 出力: 200
辞書の要素を追加したいときは対象の辞書[キー] = 要素
dic_data ["orange"] = 300
print(dic_data) # 出力: {'apple': 100, 'banana': 200, 'orange': 300}
辞書の要素を削除したいときはdel 対象の辞書[キー]
del dic_data["apple"]
print(dic_data) # 出力: {'banana': 200, 'orange': 300}
【追記】
キーや、値だけをリストとして取り出したいときは、.keys()
や.values()
を使う。
それぞれ、取得した一覧は、dict_keys
、dict_values
として取得される。
dic_data = {'apple':100, 'banana':200}
dic_data.keys() # 出力: dict_keys(['apple', 'banana'])
dic_data.values() # 出力: dict_values([100, 200])
以下のfor文
のところでも同じようにkeys()やvalues()を用いて取り出しているが、for文を使うとリストではなく、すべてのキーや値を順に取り出すことができる。
##タプル
リストと同く複数の値を格納できる型であるが、変更できない点と実行速度が少し早い点が異なる。
タプルの使い方やリストとの違いについて解説
list_sample = [1, 2, 3, 4, 5]
tuple_sample = (1, 2, 3, 4, 5)
#括弧がなくても良い
tuple_sample2 = 1, 2, 3, 4, 5
print(list_sample) # 出力: [1, 2, 3, 4, 5]
print(tuple_sample) # 出力: (1, 2, 3, 4, 5)
print(tuple_sample2) # 出力: (1, 2, 3, 4, 5)
##集合
集合もリストと同く複数の値を格納できる型であるが、重複した要素は無視される点と要素に順番がない点が異なる。
【Python入門】すぐわかる!set型(集合型)の基本まとめ
set_data1 = set([1,2,3])
set_data2 = set([1,2,3,3,2,1])
print(set_data1) # 出力: {1, 2, 3}
print(set_data2) # 出力: {1, 2, 3}
##if文
if [条件式]:
[条件式がTrueのときに行う処理]
else:
[条件式がFalseのときに行う処理]
elif
は他の言語で言うとelse if
if [条件式1]:
[条件式がTrueのときに行う処理]
elif [条件式2]:
[elifの条件式2がTrueのときに行う処理]
else:
[if文の条件式1もelifの条件式2もどちらもFalseのときに行う処理]
data_list4 = [1,2,3,4,5,6]
findvalue = 10
if findvalue in data_list4:
print('{0} は見つかりました。' .format(findvalue))
else:
print('{0}は見つかりませんでした。' .format(findvalue))
# 出力: 10は見つかりませんでした。
結果を表示するのに用いた'文字列'.format(値,...)
は文字列フォーマットと言い、上で指定している{0}は、formatの括弧の最初に指定した値を埋め込むための指定である。
print('{0}と{1}を足すと{2}です。' .format(2,3,5))
# 出力: 2と3を足すと5です。
##for文
他の言語と同様な動きをする。書き方は以下を参考。
data_list5 = [1,2,3,4,5]
total = 0
for num in data_list5:
total += num
print('合計:',total) # 出力: 合計: 15
辞書型でfor文を使って要素を取り出す際には、
key()メソッド:キーを取り出す
values()メソッド:値を取り出す。
items()メソッド:両方を取り出す。
の3つがある。
dic_data2 = {'apple':100, 'banana':200, 'orange':300}
for all_data in dic_data2:
print(all_data)
# 出力: apple
# banana
# orange
for all_data in dic_data2.keys():
print(all_data)
# 出力: apple
# banana
# orange
for all_data in dic_data2.values():
print(all_data)
# 出力: 100
# 200
# 300
for all_data in dic_data2.items():
print(all_data)
# 出力: ('apple', 100)
# ('banana', 200)
# ('orange', 300)
for all_data1,all_data2 in dic_data2.items():
print(all_data1,all_data2)
# 出力: apple 100
# banana 200
# orange 300
##range関数
連続した整数のリストを作りたい時に利用する関数。
range(N)
とした時、0〜N-1までの整数が出力されることに注意する。
for i in range(10):
print(i)
0
1
2
3
4
5
6
7
8
9
さらにrange関数では括弧の中に最初の値
,最後の値-1
,飛ばす値
を指定できる。
#1から9までの2個飛ばし
for i in range(1,10,2):
print(i)
1
3
5
7
9
##内包表記
for文を使って取り出したデータを、さらに別のリストとして結果を作成する方法。
#dataから値を取り出して変数iに格納。これを2倍にしてdata1へ
data = [1,2,3,4,5]
data1 = []
data1 = [i * 2 for i in data]
print(data1) # 出力: [2, 4, 6, 8, 10]
条件を指定し、条件に合致するものだけを新しいリストの対象にすることも出来る。
先に条件に合うi
だけを取り出して2倍していることがわかる。
data = [1,2,3,4,5]
[i * 2 for i in data if i % 2 ==0] # 出力: [4, 8]
##zip関数
それぞれ異なるリストを同時に取り出していく処理を実行する。
たとえば、[1,2,3]というリストと、[11,12,13]という2つのリストがあるとき、それぞれ同じインデックスで値を取って表示される。
for x , y in zip([1,2,3], [11,12,13]):
print(x, 'と', y)
1 と 11
2 と 12
3 と 13
##while文
num = 1 #初期値
while num <= 10:
print(num)
num = num + 1
1
2
3
4
5
6
7
8
9
10
##関数
一連の処理をひとまとめにする仕組み。
書き方としては、defの後に関数名、引数があれば、()の中に、引数名を記述。この引数が入力となって、returnで結果を返し(返り値)、これが出力となる。
def calc_multi(a,b):
return a*b
calc_multi(3,10) # 出力: 30
##無名関数
関数には無名関数と呼ばれるものがあり、これを使うと、コードを簡素化出来る。
無名関数を書くには、lambda(ラムダ)
というキーワードを使用する。
無名関数は、リストなどの要素に対して何か関数を実行したいときに、よく使う。
(lambda a,b: a*b)(3,10) # 出力: 30
ここでlambda a, b:
というのが、関数名(a, b)に相当する部分。
そして:
で区切って、その関数の処理(ここではreturn a * b
)を記述するというのが、無名関数の基本的な書き方となる。
##map
要素に対して、何か処理したいときは、map関数を使う。
関数を引数や戻り値として使う関数で、各要素に対して、何か処理や操作したいときに使う。
def calc_double(x):
return x * 2
#forを使う場合
for num in [1,2,3,4]:
print(calc_double(num)) # 出力: ①
#map関数を使う場合
list(map(calc_double, [1,2,3,4])) # 出力: ②
①の出力
2
4
6
8
②の出力 [2, 4, 6, 8]
無名関数を使えば、別に関数を用意しなくても直接関数の処理を記述出来る。
list(map(lambda x : x * 2, [1,2,3,4])) # 出力: [2, 4, 6, 8]