Python Real World Data Science [Digest 7]

5351 ワード

このシリーズは「Python Real World Data Science」の抜粋を更新し、毎週6日に更新します.
Pythonのデータ科学分野での応用を紹介し、4つのモジュールに分けられる.
  • Pythonベース
  • データ分析
  • データマイニング
  • 機械学習
  • 本文はシリーズ第7編でpythonの基礎を紹介する.
    Chapter 7 Python Data Structures
    クラスとオブジェクトの使用は、 の両方を指定する必要がある場合にのみ考慮されます.
    1 Tuples
  • は、一定の長さのオブジェクトシーケンスを格納し、
  • を変更できません.
  • 作成
  • カンマ区切りstock = "FB", 75.00, 75.03, 74.90
  • 括弧stock2 = ("FB", 75.00, 75.03, 74.90)
  • Unpack
  • symbol, current, high, low = stock
  • パッケージングストレージ転送、パケット解除
  • を使用
  • Slicing
  • stock[1:2]

  • 欠点:メタグループのメンバーがアクセスして数字を使ってインデックスを行い、何をしているのか分かりやすく、コードの可読性が悪い
  • 2 Named tuples
  • はメタグループを命名し、順序付けされたオブジェクトシーケンスを格納し、各メンバーは名前
  • を有する.
  • 作成
  •   from collections import namedtuple
      # Stock    ,  4   ,symbol、current、high、low
      Stock = namedtuple("Stock", "symbol current high low") 
      stock = Stock("FB", 75.00, high=75.03, low=74.90)
    

  • アクセスstock.high
  • 3 Dictionaries
    オブジェクト間のマッピング関係(map)を格納し、値をすばやく検索
    作成
  • dict() , {}
  •            stocks = {"GOOG": (613.30, 625.86, 610.50), "MSFT": (30.25, 30.70, 30.19)}`
    

    Index
  • stocks["GOOG"]
  •      print(stocks.get("RIM"))
         None
         stocks.get("RIM", "NOT FOUND")
         'NOT FOUND`
    
  • setdefault()このキー値が存在しない場合は作成してデフォルト値に設定、存在する場合は対応するvalue
  • を返す.
  • keys() , values() , items()
  • 多くのタイプがkeyとして使用できますが、listはできません(リストは変更され、ハッシュはできません)
  • 4 defaultdict
    辞書を作成します.キー値ペアを挿入するたびに、キーが存在するかどうかを検出する必要があります.存在しない場合は、関数によってデフォルト値を作成します.
    5 Counter
    from collections import Counter
    
    responses = [
        "vanilla",
        "chocolate",
        "vanilla",
        "vanilla",
        "caramel",
        "strawberry",
        "vanilla"
    ]
    
    print(
        "The children voted for {} ice cream".format(
            Counter(responses).most_common(1)[0][0]
        )
    )
    

    6 List
    リストはPythonユーザーのスイスの軍刀で、通常は同じタイプのオブジェクトを何らかの順序で格納することを表すために使用されます.
    リストの一般的な方法は次のとおりです.
  • リストの末尾に要素append
  • を追加する.
  • リスト内のある位置に要素insert
  • を挿入する.
  • ある要素が現れる頻度をカウントするcount
  • .
  • リスト内の要素の位置を見つけるindex,find
  • 逆転リストreverse
  • sort、リスト内のオブジェクトについてはその定義__lt__の方法に従って並べ替えられ、以下の例
  • である.
    from functools import total_ordering
    
    @total_ordering
    class WeirdSortee:
        def __init__(self, string, number, sort_num):
            self.string = string
            self.number = number
            self.sort_num = sort_num
    
        def __lt__(self, object):
            if self.sort_num:
                return self.number < object.number
            return self.string < object.string
    
        def __repr__(self):
            return"{}:{}".format(self.string, self.number)
    
        def __eq__(self, object):
            return all((
                self.string == object.string,
                self.number == object.number,
                self.sort_num == object.number
            ))
    

    上記のスキームに従って__lt__を実装する方法に加えて、sort関数のkeyパラメータを指定することがより一般的である.
    >>> from operator import itemgetter
    >>> l = [('h', 4), ('n', 6), ('o', 5), ('p', 1), ('t', 3), ('y', 2)]
    >>> l.sort(key=itemgetter(1))
    >>> l
    [('p', 1), ('y', 2), ('t', 3), ('h', 4), ('o', 5), ('n', 6)]
    
    itemgetterに加えて、attrgetterおよびmethodcallerもよく用いられるkeyである.
    7 Sets
    uniqueのグループを表す要素で、集合の内外の世界を区別し、集合の要素はソートをサポートせず、通常は重み付けに使用できます.
    作成
  • set(),{value1, value2}演算
  • 検索in
  • 並列union
  • 交差intersection
  • 対称差symmetric_differenceはいずれかの集合であるが、同時に2つの集合
  • ではない.
  • 差分セットdifference
  • サブセットissubset
  • 親セットissuperset
  • 8 Extending built-ins
    適切なメソッドを継承して書き換える
    >>> dir(list)
    
    ['__add__', '__class__', '__contains__', '__delattr__','__delitem__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'
    

    9 Queues