関数の引数内の「*」の役割
コードを読んでいてなにこれ?ってなったので
ググり方わかんなかったから本に助けてもらった
可変長引数
任意の数の引数を指定して呼び出す
タプル型になって返ってくる
>>> def spam(ham, egg, *args): print('ham={}, egg={}, args={}, '.format(ham, egg, args)) >>> spam(1, 2, 3, 4, 5) ham=1, egg=2, args=(3, 4, 5)
「**」にすると、辞書型に
>>> def spam(ham, egg, **kwargs): print('ham={}, egg={}, args={}, '.format(ham, egg, args)) >>> spam(ham=1, egg=2, sausage=3, tomato=4, beans=5) ham=1, egg=2, kwargs={'sausage'=3, 'tomato'=4, 'beans'=5}
キーワード専用引数
「*」付きの引数後に指定された引数は、キーワード形式で値を指定する
位置パラメータでは値を指定できない
>>> def spam(*args, egg): print(args, egg) >>> spam(1, 2, egg=3) (1, 2) 3 >>>spam(egg=3) () 3
また、「*」(名前のない引数)を指定した場合
「*」よりも右側に指定された引数は必ずキーワード引数として指定しなければならない
>>> def spam(ham, *, egg): # eggはキーワード引数 print(ham, egg) >>>spam(1, egg=2) 1 2 >>>spam(1, 2) Traceback (most recent call last)
pandasでよく使いそうなの
- unique()
要素を取り出す(重複を除く)
出力される型は一次元のNumPy配列ndarray型になる
Nanも含まれる
- tolist()
リスト型に変換できる
- reset_index()
インデックスを振り直す
reset_index(drop=True)
にすると、削除されたIndexオブジェクトの値を列データに挿入しない
reset_index(inplace=True)
にすると、元のデータフレームに操作を反映する
- dropna()
Nanを除外する
dropna(how='all')
にするとすべての値がNanの行、axis=1
を加えるとすべての値がNanの列が削除される
how='any'
にすると、Nanが1つでもあると削除
- fillna()
Nanを他の値に置換する
for文で使える便利な関数たち
- zip関数
複数のリストの要素をまとめて取得
- enumerate関数
要素と一緒にカウント、インデックスを取得できる
primary_keyあたりの事故
なぜか数時間いき詰まっていた。
カラムを追加するついでに
primary key付与、null許可せず、auto_incrementの設定が一度にできる方法。
alter table テーブル名 add カラム名 型 primary key not null auto_increment first;
時間返せ!!!!
MySQL基本的なコマンド
MySQL久々すぎて忘れてたのでメモ。
使用するデータベースを選択
use データベース名;
データベース一覧の確認
show databases;
データベースを作成する
create database データベース名;
データベースを削除する
drop database データベース名;
カラムを追加する
ALTER TABLE テーブル名 ADD カラム名 型;
カラムの名前と型を変更する
ALTER TABLE 'テーブル名' CHANGE COLUMN '旧カラム名' '新カラム名' 型(サイズ等);
テーブルの中身のデータを削除する
TRUNCATE テーブル名;
テーブルの確認をする
show テーブル名;
テーブルのカラムを一覧表示する
show fields from テーブル名;
データを取得する
select カラム名 from テーブル名;
なお、このコマンドの続きに
\G;
としてあげると、表示結果がレコードごとに綺麗に垂直に出てくれる。また、
limit 10;
とすると、取得するデータを10に抑えられる。テーブルを削除する
drop table テーブル名;