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