Pandas DataFrame(data,columns,index)の生成

 import pandas as pd

① 列( ⇩ ) : 辞書指定

 df_col = pd.DataFrame({ 'col_name1' : ['val_11' , 'val_12' , 'val_13'],
                         'col_name2' : ['val_21' , 'val_22' , 'val_23'],
                         'col_name3' : ['val_31' , 'val_32' , 'val_33'],
                        })
 print ( df_col )
 #     col_name1  col_name2  col_name3
 #  0     val_11     val_21     val_31
 #  1     val_12     val_22     val_32
 #  2     val_13     val_23     val_33

② 行( ⇨ ) : リスト指定

 df_ind = pd.DataFrame([ ['val_11' , 'val_12' , 'val_13'],
                         ['val_21' , 'val_22' , 'val_23'],
                         ['val_31' , 'val_32' , 'val_33'],
                       ])
 print ( df_ind )
 #             0          1          2 
 #  0     val_11     val_12     val_13
 #  1     val_21     val_22     val_23
 #  2     val_31     val_32     val_33


③ 行列 : index , columns指定

 df_colind = pd.DataFrame([ ['val_11' , 'val_12' , 'val_13'],
                            ['val_21' , 'val_22' , 'val_23'],
                            ['val_31' , 'val_32' , 'val_33']],
                          index = [ ind_1 , ind_2 , ind_3 ],
                          columns = [ col_1 , col_2 , col_3 ]
                         )
 print ( df_colind )
#          col_1    col_2    col_3
# ind_1   val_11   val_12   val_13
# ind_2   val_21   val_22   val_23
# ind_3   val_31   val_32   val_33
因みに、 df = pd.DtaFrame()
          print ( df )
          # Empty DtaFrame  #Columns: []  #Index: []

Advance(8/8) reduce

reduce() : 畳み込み、関数型言語、高階関数
   from fanctiontools import reduce #python3以降
reduce ( 関数 , イテオブ {{ ,initializer }} )

 from functiontools import reduce
 from operater import add
 from operater import mul
 lst_1 = [ 10 , 1 , 2 , 3 , 4 ]
 print ( reduce( add , lst_1 ) )
 # 20
 print ( reduce( mul , lst_1) )
 # 240
 

※ add のとき 10+1+2+3+4=20
※ mulのとき 10x1x2x3x4 = 240

Advance(7/8) filter

     filter() : イテラブルの要素を抽出・削除
         filter( 処理 , イテオブ )

 lst_1 = [ -2,-1,0,1,2 ]
 X = filter( lambda x : x % 2 == 0 , lst_1 )
 print ( X )
 # < filter object at .... > 
 print ( type ( X ))
 # < class 'filter' >
 for i in filter( lambda x : x % 2 == 0 , lst_1 )
     print ( i )
 # -2
 # 0
 # 2

※ filter() は、第1引数の処理結果が True(noneもTrue判定)される要素を抽出

<==> False を抽出 (( itertools.filterfalse() ))

※ 処理(== None)以外の場合は、ジェネレータ式と同等
( item for item in iterable if fanction(item) )
因みに、処理(== None)の場合 ( item for item in iterable if item ) と同等

Advance(6/8) map

map() : イテラブルオブジェクトの要素に処理実行

map( 処理 , イテオブ )

 lst_1 = [ -1,2,-3 ]
 map_lst = map( abs , lst_1 )
 print (map_lst)
 # < map object at ・・・ >
 print (type(map_lst))
 # < class 'map' >
 # 中身を見るには、for でまわす
 for i in map(abs,lst_1):
     print ( i )
# 1
# 2
# 3

lambda を使って
map ( lambda , イテオブ)

 lam_map_lst = list(map(lambda x:x*2,lst_1))
 print( lam_map_lst )
 # [-2, 4 , -6]

def を使って
map ( def , イテオブ)

 def add3(x):
    return x + 3
 print ( list( map( add3 , lst_1 ) ) )
 # [2,5,-1]

Advance(5/8) enumerate

 enumerate() インデックス番号と要素の取得 

( 番号 , 要素 ) for 変数(番号),変数(要素) in enumerate(イテオブ)

 lst_1 = ['みかん' , 'リンゴ' , 'ばなな']
enu_lst = [( i , k ) for i , k in eumerate( lst_1 )]
print( enu_lst )
# [( 0 , 'みかん') , ( 1 , 'リンゴ') , ( 2, 'ばなな')]

Advance(4/8) zip

zip () 複数リストから forループ で要素を取得

( 要素1,要素2,..) for 要素1,要素2,.. in zip( イテオブ121 , イテオブ2,.. )

 lst_1 = [ 1,2,3 ]
 lst_2 = [ 10,20,30 ]
 zip_lst = [( k1,k2 ) for k1,k2 in zip( lst_1 , lst_2 )]
 print( zip_lst )
 #[ ( 1,10 ) , ( 2,20 ) , ( 3,30 ) ]

Advance(3/8) List comprehensions

リスト内包表記
  [ 式 for 任意変数 in イテラブルオブジェクト1 ]

 lst = [0,1,2,3,4,5,6,7,8,9]
 lst2 = [i*2 for i in lst]
 print(lst2) 
 #[0,2,4,6,8,10,12,14,16,18]

条件分岐 if
[ 式 for 任意変数 in イテラブルオブジェクト if 条件式 ]

 odd = [ i for i in lst if i % 2 == 1 ]
 print ( odd ) 
 #[1,3,5,7,9]

三項演算子 ( 条件式 )
[ 真値 if 条件式 偽値 for 任意変数 in イテラブルオブジェクト ]

 odd_even = [ 'odd' if  i % 2 == 1 else 'even' for i in lst ]
 print( odd_even )
 #['even', 'odd', 'even', 'odd', 'even', 'odd', 'even', 'odd', 'even', 'odd']
  1. ※iteratorObject:順番に要素を取得できるObject ↩︎

Advance(2/8) Conditinal Expressions

三項演算子(さんこうえんざんし)

条件が「真」のとき評価される式(値) if  条件 else 条件が「偽」のとき評価される式(値)

a=1
Ans = a*2 if a%2==0 else a*3
print (Ans) #3

> and (かつ), or(もしくは) による条件追加

「真」 if 条件A and 条件B else 「偽」

「真」 if 条件A or 条件B else 「偽」

a = -2
Ans = '負数かつ偶数' if a<0 and a%2==0 else '正数かつ奇数'
print (Ans) #負数かつ偶数

> if 追記によるネスト(選択追加)

「真①」 if 条件Ⅰ else 「真②」 if 条件Ⅱ else 「真③」 if 条件Ⅲ ・・・ else 「偽」

a = 2
Ans = 'NG1' if a>100 else 'NG2' if a<0 else 'NG3' if a%2==1 else 'OK' 
print (Ans) #OK
[条件ⅠOK→真1評価、左記NG→条件ⅡOK→真2評価、左記NG→条件ⅢOK→真3評価、左記NG→ ・・・全NGは 偽 評価]

※[else] で区切って判断すると分かりやすい

Advance(1/8) lambda

● lambda (無名関数:defの様に名前を付けない)

lambda arg1,arg2,… : 式

add_lambda = lambda a , b = 1 : a + b

def Name ( arg1 , arg2,… ) :
return 式
  ⇩

def add_def ( a , b = 1 ):
return a + b
print(add_lambda(5,4))    #9
print(add_def(5,4))    #9

Cheat 01


¥l (DB一覧)
¥d (schema一覧)
¥dt.schema_name.* (特定schemaのtable一覧)
¥dt.schema_name.table_name (特定schema.tableの詳細)
¥d.schema_name.table_name column_name key (特定schema.tableのindex情報)
¥d.schema_name.table_name_pkey (primary_key情報)
¥d.schema_name.table_name (tableのcolumn情報)
¥conninfo (current DB情報)

¥du (role一覧)
¥du role_name (特定role詳細)

¥dn (作成済みschema一覧)
¥dn+ (アクセス権も含めて表示)

¥di (検索パスに設定されているスキーマのindex 一覧)
¥di schema_name.* (検索パスに設定されていないスキーマでは)

¥s
¥i c:¥¥~~¥¥~~¥¥filename.txtsql’ (fileの実行)

~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~


[db]
(databaseの作成)

CREATE DATABASE name;
(Database 削除)
DROP DATABASE [ IF EXISTS ] name;

[role]
(roleの作成)

CREATE ROLE name [ [ WITH ] option [ … ] ];
(roleを使ってユーザー認証基本書式): : CRERATE ROLE name WITH LOGINPASSWORD ‘password’;

(roleの属性の変更(Alter Role))
ALTER ROLE role_name [ WITH ] option [ … ];
(権限の追加)
[GRANT 権限 ON 対象 TO 誰に];
(権限の削除)
[REVOKE 権限 ON 対象 FROM 誰から ];
(role の削除) . DROP ROLE [ IF EXISTS ] role_name [, …];

[schema]
(schemaの新規作成)

CREATE SCHEMA schema_name;


[table]
(tableの新規作成
)
create table schema_name.table_name (column data_type,…);
(他のtableをcopyしてtable新規作成)
create table table_name (column data_type,…) like \ . another_table_name [like option];
(tableの削除)
drop table table_name;
(columnの追加)
alter table table_name add column_name data_type;
(columnの削除)
alter table table_name drop column_name;
(recordの追加)
insert into table_name [column_list] values [values_list];
(record条件付き削除)
delete from table_name where ;

(recordの更新(条件付き))
update table_name set column_name=expresion where~~;

index の作成
CREATE INDEX [ name ] ON [ ONLY ] table_name ( column_name [, …] )
UNIQUE インデックスの作成
CREATE UNIQUE INDEX [ name ] ON [ ONLY ] table_name \
( column_name [, …] )