LoginSignup
0
1

More than 1 year has passed since last update.

事業企画1年生のpython学習2日目

Last updated at Posted at 2022-02-22

本記事について

とある事業会社で事業企画をやっています。
元々は、新規営業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
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
0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1