本記事について
とある事業会社で事業企画をやっています。
元々は、新規営業1年→エンプラ営業3年やっていました。
事業企画への異動に伴って、ルーチンワークの自動化やスクレイピングに興味を持ちpython学習をスタートしました。
目的達成までは記事を執筆予定です。どうぞよろしくお願いいたします。
開発環境
jupyterlab
使っている本
すっきりわかるpython入門
https://sukkiri.jp/books/sukkiri_python
勉強計画
週5日間1h勉強する。
最初の1weekは1冊終わらせることをgoalに。
start@ 2022/2/21
学習時間
1.5h
学び
データの集まりの概念
コレクションとコンテナ
リスト、ディクショナリ、タプル、セットの4つ
- リスト:複数の値を1列に並べて管理するコレクション
先頭から順にインデックスと言われる管理番号(0から始まる)が振られる。
list[1,2,3,4]
dictionary{キー1:値,キー2:値,キー3:値, ...}
tapple(1,2,3,4,)
set {} # キーは設定しない。
members = ['kamon','asakura','sakamoto']
print(members)
['kamon', 'asakura', 'sakamoto']
print(members[0])
# kamon
# リストの活用
scores = [90,90,90]
total = scores[0] +scores[1] + scores[2]
print('合計{}点'.format(total))
# 合計270点
# 便利なsum関数
sum(scores)
# 270
# 平均を求める
# リストの要素数に置き換わるこの場合、3つ。
avg = total/ len(scores)
print('合計{}点、平均{}点'.format(total,avg))
# 合計270点、平均90.0点
# リストに要素を追加する(append)
members.append('kojima')
members.append('oosaka')
members.append('tokyo')
print(members)
# ['kamon', 'asakura', 'sakamoto', 'kojima', 'oosaka', 'tokyo']
# リストから削除したい
members.remove('oosaka')
print(members)
# ['kamon', 'asakura', 'sakamoto', 'kojima', 'tokyo']
# リストも変更可能
members[0] = 'kamon2'
print(members)
# ['kamon2', 'asakura', 'sakamoto', 'kojima', 'tokyo']
# wantで知っておきたいslice関数
a = [10,20,30,40,50]
print(a[1:3]) # 添字が1以上3未満
# [20, 30]
print(a[0:4])
# [10, 20, 30, 40] # 添字が0以上4未満
# wantで知りたい負の数による指定
print(a[-1]) # 末尾の要素を参照
print(a[-2]) # 末尾から二番目の要素を参照
# 50
# 40
- ディクショナリ
リストは0からはじまる整数をpythonがつける。ディクショナリは開発者が任意の名前をつける。
scores = {'network':60,'database':50,'security':80}
print(scores)
# {'network': 60, 'database': 50, 'security': 80}
scores['programming'] = 65 # programingを追加
scores['security'] = 55 # 要素変更
print(scores)
# {'network': 60, 'database': 50, 'security': 55, 'programming': 65}
del scores['security']
print(scores)
# {'network': 60, 'database': 50, 'programming': 65}
total = sum(scores.values()) # ディクショナリ内の値を合計した数字を変数に代入
print(total)
# 175
- タプル
リストとほぼ同じだが、要素の追加・変更・削除ができない。
score = (70,70,65) # ()で管理する
print(score)
# (70, 70, 65)
- セット
セットは、種類を管理するときに使う。
scores = {30,40,50,60}
scores.add(80);
print(scores)
print('要素は{}'.format(len(scores)))
print('合計は{}'.format(sum(scores)))
# {40, 80, 50, 60, 30}
# 要素は5
# 合計は260
コレクションの応用
コレクションの相互変換
scores = {'network':60,'database':80,'security':60} # ディクショナリ
members = ['kamon','asakura','sakamoto'] # リスト
print(tuple(members)) # タプルに変換
print(list(scores)) # リストに変換
print(set(scores.values())) # スコアの値をリストに変換して表示
# ('kamon2', 'asakura', 'sakamoto', 'kojima', 'tokyo')
# ['network', 'database', 'security']
# {80, 60}
コレクションのネスト
kamon_scores = {'network':60,'database':80,'security':50}
asakura_scores = {'network':60,'database':80,'security':40}
member_scores = {'kamon':kamon_scores,'asakura':asakura_scores}
print(member_scores)
# {'kamon': {'network': 60, 'database': 80, 'security': 50}, 'asakura': {'network': 60, 'database': 80, 'security': 40}}
二次元リスト
(同じことがディクショナリ及びセットで活用可能)
リストの中にリストを突っ込む
多重構造も可能で、ネストや入れ子と呼ぶ。
本格的なデータ分析にはネストしたコレクションは必須。
a = [1,2,3]
b = [4,5,6]
c = [a,b]
print(c[0]) # cの0番目つまりaのリストを表示
print(c[-1]) # cの末尾から一番目つまり、bのリスト表示
# [1, 2, 3]
# [4, 5, 6]
セットのみに許された集合演算
# 同じ趣味を出してくる演算
members_hobbies = {
'kamon':{'sns','FB','LINE'},
'asakura':{'sns','FB','LINE','旅'}
}
common_hobbies = members_hobbies['kamon'] & members_hobbies['asakura']
print(common_hobbies)
# {'sns', 'LINE', 'FB'}
その他にも差集合・積集合・対象差がある
引用元: https://monozukuri-c.com/python-set-operation/
e18ecda40e94c57dab646966bbe3f6fa.png
# 構文は下記・データ分析にはますと!
A = {1,2,3,4}
B = {2,3,4,5}
print (A|B) # 和集合
print (A &B) # 積集合
print(A - B) # 差集合
print(A^B) # 対象差
# {1, 2, 3, 4, 5} # どっちかにある
# {2, 3, 4} # どちらにもある
# {1} # Aにだけある
# {1, 5} # どっちかにしかない
今日ミスったところ
f文字列(f-strings)は文字列リテラルの前にfまたはFを置く(f'xxx', F'xxx')。文字列中の置換フィールドに変数をそのまま指定できる。
print(f'{a} and {b}')
# 123 and abc
print(F'{a} and {b}')
# 123 and abc