PythonでPandasのPlotを試す

qiita.com

こちらの記事のオマージュです。環境は、Windows/Python3.4です。pandasなどはpipでインストールします。groupbyによる集計や、日本語表記などに対応しました。

gist.github.com

f:id:nishidy:20160309002816p:plain f:id:nishidy:20160309002820p:plain f:id:nishidy:20160309002826p:plain f:id:nishidy:20160309002832p:plain f:id:nishidy:20160309002842p:plain f:id:nishidy:20160309002851p:plain f:id:nishidy:20160309002859p:plain f:id:nishidy:20160309002903p:plain

補記:可変長引数・キーワード可変長引数

$ cat kwargs.py 
def func(x,a=1,z=0,zz=100,*args,**kwargs):
    print("x=",x)
    print("=====")
    print("a=",a)
    print("=====")
    print("args=",args) 
    print("=====")
    print("kwargs",kwargs) 
    print("=====")
    print("z=",z) 
    print("=====")
    print("zz=",zz) 

args = [10,20,30,40,50]
kargs = {"a":10,"b":20,"c":30,"d":40,"e":50}

print("-----func(args)-----")
func(args)
print("-----func(*args)-----")
func(*args)
print("-----func(1,**kargs)-----")
func(1,**kargs)
print("-----func(1,*kargs)-----")
func(1,*kargs)

$ python kwargs.py 
-----func(args)-----
x= [10, 20, 30, 40, 50]
=====
a= 1
=====
args= ()
=====
kwargs {}
=====
z= 0
=====
zz= 100
-----func(*args)-----
x= 10
=====
a= 20
=====
args= (50,)
=====
kwargs {}
=====
z= 30
=====
zz= 40
-----func(1,**kargs)-----
x= 1
=====
a= 10
=====
args= ()
=====
kwargs {'d': 40, 'c': 30, 'e': 50, 'b': 20}
=====
z= 0
=====
zz= 100
-----func(1,*kargs)-----
x= 1
=====
a= e
=====
args= ('a', 'd')
=====
kwargs {}
=====
z= c
=====
zz= b

実引数の辞書に*を付けて関数に渡すと、辞書のキーが仮引数に渡される。仮引数のデフォルト引数への割り当ては、仮引数の宣言順序とは関係なく実施される。以下のように、実行するたびに割り当てが変わる。

-----func(1,*kargs)-----
x= 1
=====
a= b
=====
args= ('c', 'd')
=====
kwargs {}
=====
z= e
=====
zz= a

splitlines()

splitlines()は最後の空白要素を削除するが、split("\n")は削除しない。Trueを与えると改行を付けたまま分割して返す。

>>> a="aaa\nbbb\nccc\n"
>>> a.splitlines()
['aaa', 'bbb', 'ccc']
>>> a.split("\n")
['aaa', 'bbb', 'ccc', '']
>>> a="aaa\nbbb\nccc\n\n\n\n"
>>> a.splitlines()
['aaa', 'bbb', 'ccc', '', '', '']
>>> a.split("\n")
['aaa', 'bbb', 'ccc', '', '', '', '']
>>> a="aaa\nbbb\nccc"
>>> a.splitlines()
['aaa', 'bbb', 'ccc']
>>> a.split("\n")
['aaa', 'bbb', 'ccc']
>>> a.splitlines(True)
['aaa\n', 'bbb\n', 'ccc']