ライブラリ(パッケージ)

  • NumPy?
  • SciPy?
  • pandas
  • matplotlib
  • IPython

パッケージのインストール

python -m pip install SomePackage

別ファイルの関数の利用

関数名の所に*を書くとすべての関数。ファイルが実行可能だと実行される

from ファイル名 import 関数名

C/C++言語との違い

  • セミコロンが不要(行の終わりがステートメントの終わり)
  • 字下げの終わりがブロックの終わり(ifやwhile)
  • if,whileなどの条件式()は必要ではない
  • if,whileなどの見出し行の末尾にコロンをつける

制御構文

  • if
    if x==y:
      statement1
    elif x==1:
      statement2
    else:
      statement3
  • while:elseブロックはループ終了時に実行(breakでは実行されない)
    while conditon:
      statement1
    else:
      statement2
  • for:指定オブジェクトの要素をターゲットに代入
    for <target> in <object>:
      <statement>
    for i in range(3):  #range関数 [0, 1, 2]
      print i
    for i in [1, 2, 3]:
      print i
    for i in [[1,2], [2,3], [3,4]]:
      print i

ブール演算

  • and: X and Y
  • or: X or Y
  • not: not X

アンパック代入

  • タプルの代入
    [a, b, c] = [1, 2, 3]

リスト内包表記

  • リスト内の特定の行や列を取り出す操作
    M = [[1, 2, 3] [4, 5, 6], [7, 8, 9] ]
    col2 = [row[1] for row in M]          #Mの各行について2番目の要素を取り出す

range関数

  • range(val):[0, ,,, val-1]
  • range(s,e):[s, s+1,,,e-1]
  • range(s,e,t):[s, s+t, s+2*t,,,e-t]

コメント

1行コメント: 先頭に#
複行コメント:"""や'''で囲む

#以下がコメント
"""
test
"""

データ型

リスト

リストの連結

list1 = [1, 2, 3,]
list2 = [1, 2, 3,]
list3 =  list1 + list2

集合(セット):重複なし

s = set([1, 2, 3, 1]) #=> [1,2,3] 

辞書(ディクショナリ)

大かっこではなく、中かっこ

{キー1:値1, キー2:値2, ...}

ndarray:多次元配列オブジェクト (numpyで定義)~

属性:ndarray.shape(次元), ndarray.dtype(型), ndarray.ndim(階層の深さ)

l1 = [1, 2, 3]
a1 = np.array(l1)  #np.array関数に引数としてリストを与えて生成
l2 = [[1, 2, 3], [4, 5, 6]]
a2 = np.aray(l2)
a3 = np.zeros(10)      #zeros, ones, emptyで生成
a4 = np.zeros((2,4))   #zeros, ones, emptyで生成

全要素が同じ型であることに注意。型を変えるには関数astypeを呼ぶ

l1 = [1, 2, 3]
a1 = np.array(l1)
a2 = a1.astype(np.float64)  #astypeは新しいarrayを生成する

データ抽出

添え字に条件式を記入
print data[data.col1 = 'test']
print data[data.col2 > 10 ]

重要な概念

イテラブル iterable

 反復可能。リストや集合など、反復的な動作によって次々に要素を取り出すことができ型。

ファイル操作

  • 読み込み
    • read: 1文字読み込み
    • readline:1行読み込んで文字列を返す.何度も呼ぶ必要あり。
    • readlines: 全部読み込んで行のアレイを返す。全部の内容を保存するメモリが必要。
      file = open('test.txt', 'r')
      print file.read()            #一度に全部読み込む
      for line in file.readlines() #readlinesで一度に全部のデータが作成させる
        print line
      file.close()
      for line in open('test.txt') #forは自動的にnextメソッドを読み込み1行ずつ処理される
        print line.upper()

パターンマッチ

正規表現によるパターンマッチが使える
re.match(pattern, string)でstringの中のパターンを探す

import re
mac3f=['f0:b0:52:\w{1}0:76:68']
m =re.match(mac3f[0], vecs['mac'].values[j])
if m: print '3F', m.group()

正規表現

\w:任意の一文字~

[abc]:文字集合
[0-9a-fA-F]:16進数文字
{n}:前の文字のn回繰り返し

Numpy

最大値

  1. max, min:最大最小
  2. nanmax, nanmin:Nanを除いた最大最小

探索

  1. argmax, argmin:最大最小のインデックス
  2. nanargmax, nanargmin:Nanを除いた最大最小

リストの平均

np.mean(vector)

値の範囲

np.ptp(src)

FFT

Fimg = np.fft.fft2(fimg)
Fimg = np.fft.fftshift(Fimg)
Fimg = np.log( np.abs(Fimg) + 1)

pandas

Pythonでデータ分析を素早く行うためのライブラリ. ラベル付されたデータ構造を持ち、時系列データを扱うことができる。 2つのデータ構造:シリーズとデータフレーム。

始めるために

from pandas import Series, DataFrame
import pandas as pd

シリーズ(Series)

1次元配列のようなオブジェクト。 シリーズには、データ配列とそれに関連付けられたインデックスというデータラベルの配列が含まれている。

データフレーム(DataFrame?)

テーブル形式のスプレッドシート風のデータ構造と、順序づけられた列を持つ。 各列には別々の型を利用可能。 行と列にそれぞれインデックスを持つ。ディクショナリでラベルがつく。

data = {'state':['hawaii', 'hawaii', 'ohio'],
        'year':[2015, 2016, 2010],
        'pop':[1.5, 1.7, 1.1]}
df = DataFrame(data)

列の順番を指定することもできる。

df = DataFrame(data, columns=['year', 'state', 'pop'])

データフレームから1行ずつデータを取り出す。

print dfvec.ix[i]          #1行分のデータ
print dfvec.ix[i]['mac0']  #column名で一部を取り出せる 
print dfvec.ix[i][1]       #列番号でも一部を取り出せる

1行アクセス

df.iterrows()を使う

for (idx, row) in df.iterrows():
    print idx, row

1行削除

dropでそのインデックスの行を削除(フラグ)することができる.左辺に代入先が必要

df=df.drop(idx)

1行追加

行を追加する

df = df.append(newdf)

1列追加

新しいカラム名をつければ追加することができる

li = [1 2 3]
df['newcol'] = li

重複削除

drop_duplicatesでキーを渡す.左辺に代入先が必要

df = df.drop_duplicates(subset=['place', 'apfloor'])

保存

関数to_csvで保存できる。一番左列はインデックス

df.to_csv(filename)

グループ

キーが同じものをグループ化できる。グループの和や個数、平均など計算することができる。 グループ化されたデータをデータフレームに戻すには、関数.reset_index()をよぶ

df.groupby(['key1',  'key2']).mean().reset_index()

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-12-08 (木) 03:38:23 (440d)