LoginSignup
0
1

More than 1 year has passed since last update.

np,pandasまとめ

Last updated at Posted at 2022-07-30

Numpy,pandasまとめ

タプル
固定長で変更不可能
list関数によりリストに変更できる

taple.py
    tup = 1,2,3
    tup = ('aa','bb','cc')
    list1 = list(tup)
    list1
    #[aa,bb,cc]

    list1.append('dd')
    #['aa','bb','cc','dd']
    list1.insert(1,'xx')
    #['aa','xx','bb','cc','dd']
    list1.pop(0)
    #['xx','bb','cc','dd']

    xx in list1
    #True
    xx not list1
    #False

    list1.extend(['ee','ff'])
    #['xx','bb','cc','dd','ee','ff'] 
    #リスト連結するとき
    everything = []    
    for chunk in list1:
        everything.extend(chunk)

スライシング

seq.py
    seq = [7,2,1,5,8]

    seq[1:4]
    #[2,1,5]
    seq[:3]
    #[7,2,1]
    seq[3:]
    #[5.8]
    seq[::2]
    #[7,1,8]
    seq[::-1]
    #[8,5,1,2,7]

enumerate,zip 関数

emu.py
    list = ['aa','bb','cc']
    mapping = {} #ディクショナリ宣言
    for i ,v in enumerate(list):
       mapping[v] = i;
    mapping 
    #['aa':0,'bb':1,'cc':2]

    #zip関数 複数のリストからタプルのリストを組み上げる
    list1 = ['aa','bb','cc']
    list2 = ['dd','ee','ff']
    list(zip(list1,list2))
    #[('aa','dd'),('bb','ee'),('cc','ff')]
    for i (a,b) in enumerate(zip(list1,list2)):
        print('{0}: {1}, {2}'.format(i,a,b))
    #0:aa,dd
    #1:bb,ee
    #2:cc,ff

enumerateによってiに繰り返しの回数が格納される

dic.py
    dict = {'a':'value','b':[1,2,3]}
    dict[5] = 'insert'
    dict
    #{'a':'value','b':[1,2,3],5:'insert'}
    dict[b]
    #[1,2,3]
    'b' in dict
    #True

    #keys関数
    list(dict.keys())
    #['a','b',5]
    list(dict.values())
    #['value',[1,2,3],'insert']
    list.update('b':[4,5,6],'c':9)
    #['a':'value','b':[4,5,6],5:'insert','c':9]

    #シーケンスからディクショナリ作る
    mapping = {}
    for key value in zip(key,value)
        mapping[key] = value

内包表記

.py
    tuples = [(1,2,3),(4,5,6),(7,8,9)]
    flat = []
       for tmp in tuples:
           for x in tup:
               if(x > 5):
                   flat.append(x)
    #[1,2,3,4,5,6,7,8,9]
    
    #内包表記
    flat = [x for tmp in tuples for x in tmp if x > 5]
    #[6,7,8,9]

関数

.py
    def func():
        a = 1;
        b = 2;
        c = 3;
        return a,b,c
    a,b,c = func()
    #aに1bに2cに3入る
    value = func()
    value
    #(1,2,3)

    ラムダ関数
    def apply(list,fun)
        [fun(x) for x in list]
    ints = [4,3,5,1]
    val = apply(ints,lambda x: x*2)
    #[8,6,10,2]

    dict((i,i**2) for i in range(4))
    {'0'0:,'1'1:,'2':4,'3':9}

ここまでは基礎の話
ここからはNumpyの内容を書きます

np.py
    import numpy as np
    data = np.random.randn(2,3)
    data * 10
    data + data
    data.shape
    data.dtype

ndarrayに対する算術
adarrayはpythonにおける高速で大規模なデータ処理を提供する
npオブジェクト作成するのに一番簡単な方法はNumpyのarray関数を用いる方法

np.py
    data = [0,1,2,3,4,5,6]
    ar1 = np.array(data)
    ar1
    #array([0,1,2,3,4,5,6])
    ar2 = ar1(3:6)
    ar2
    #3,4,5
    ar2[:] = 9
    ar1 
    #array([0,1,2,9,9,9,6])

最後のar1の結果が9,9,9に変更されているのが確認できる
これはnpではコピーでなく、ビューとして扱われる
コピーしたい場合はar2 = ar1[3:6].copy() とする

行列について

.py
    ar1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
    np.array([[1,2,3],
              [4,5,6],
              [7,8,9]])
    

行列の次元の見方としては[]の枠を捉え、,で区切られるたびに次元を数える

配列を参照で渡す

.py
    names = np.array(['aa','bb','cc'])
    names == 'bb'
    #array([False,True,False])
    data[names == 'bb']
    #対応する行のみ表示される
    data[:,names == 'bb']
    対応する列のみ表示される

続いてpandas の内容

.py
    
    
.py
    
    
0
1
0

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