Index ソフト・ハード Python | Pandas |
pandas ← list → list ← csv → csv 重複削除 Series追加 切り出し 連結 型変換 → numpy インデックス参照 インデックス変更 Series or DF ? 学習例 機能・要件 構成・方式 タスク ライブラリ 導入 Sample Error 基礎他 |
pandas(パンダス、パンダ) ・時系列のデータ操作やデータ構造を変更するなど、テーブルデータを取り扱うライブラリ 必要なデータを精査する前処理などに用いる。・numpy を利用し、さらにAPIを拡張し、使いやすくなっている。 pandasの抽象化や関数呼び出しのオーバーヘッドが発生する。・Series (シリーズ) 最も基本的なオブジェクト NumPyのndarrayの一次元配列の拡張版 シリーズは1次元の配列のようなデータ構造 シリーズは様々な型のデータを持つ。 データに関連付けられたインデックスを持つ。 Series()メソッドを使用してシリーズを作成 pd.Series(データ[, index=インデックス]) 1セットのデータを格納、辞書形式で複数繋ぐとDataFrameオブジェクト・DataFrame (データフレーム) 基本構造(2次元の大きさが変更できる表形式データ) シリーズを値にもつ辞書のような構造 データフレームは様々な型のデータを持つ。 各次元(行と列)方向にはラベリングされた軸(axes)が存在 行と列の両方にインデックスを持つ。 各次元(行と列)方向に数学的な操作を行える。 パラメータ名 data (省略可)初期値None index (省略可)初期値None(RangeIndexによって0から順にラベリング) columns (省略可)初期値None(RangeIndexによって0から順にラベリング) dtypes (省略可)初期値None 使用するデータ型を指定 copy (省略可)初期値False DataFrame()メソッドを使用してデータフレームを作成 pd.DataFrame(データ[, index=行インデックス][, columns=列インデックス]) pd.DataFrame() 空のデータフレームpandas ← list ・X = pd.DataFrame(リスト) ・必用ならば インデックス変更 pandas → list ・pandas.DataFrame、pandas.Series をリスト型に直接変換するメソッドは無い。 values属性で取得できるNumPy配列 ndarray を経由する。 ndarray の tolist()メソッドでリストに変換する。・データ部分をリストに変換(元のオブジェクト変わらず、新たなのオブジェクトを生成) X = pd.DataFrame(リスト) List_X = X.values.tolist() values属性ではラベル(行名、列名)が有っても無視される。・データ部分とラベル(行名・列名)をリスト型listに変換 reset_index()メソッドでindex列をリセットしてデータ列にする。・ラベル(行名・列名)をリスト型listに変換(pandas.DataFrame の場合) 行ラベル(行名)は index属性、列ラベル(列名)は columns属性を利用 両Index型をfor文で要素を取り出す。または[]で位置を指定して要素を取り出す。pandas ← csv ・X = pd.DataFrame(x_csv, index_col=[0, 1, 4], header=None) ・X = pd.read_csv(x_csv, index_col=0).head=(3) ・必用ならば インデックス変更 pandas.DataFrame、Series をCSVファイルとして書き込み ・pandas.DataFrame、pandas.Seriesのメソッドとしてto_csv()が用意されている。 第一引数にパスを指定すると、CSVファイルとして出力される。・X.to_csv('data/x_csv') 重複を削除 ・複数の列の重複を削除したい場合 df.drop_duplicates(subset=['列1', '列2']) 大文字と小文字は区別Series追加 ・Seriesで要素を渡す df = pd.DataFrame(data={'列2': pd.Series([50, 60, 80],index=['行1', '行2', '行4'])}) 空のセルを作ることができる。切り出し ・切り出した文字列を新規カラムとして追加 df['new_name'] = df['name'].str[:2] 2文字切り出しDataFrame と Series を連結(結合) ・DataFrame に Series を追加 df = pd.concat([df, pd.DataFrame([sr])], ignore_index=True) Serise を DataFrame に変換して連結 append() は将来なくなる予定型変換(キャスト) ・astype()メソッド df.astype(str) (全体を一括で変換)pandas → numpy ・全てのデータを同じ型に整えてからnumpyに渡す。 ・一部の要素だけ抜き出してnumpyの演算を行う。 インデックス参照 ・位置指定 単独の要素 at iat 単独及び複数の素 loc iloc iat iloc は行番号、列番号 df.loc['xxx', 'yyy'] df.iloc[3, 4]・インデックス名取得 df.index df.index[3] Index名をカラム名に転置して取得・インデックスがダブっていればリスト出力 リスト出力された物をDataFrame(リスト)メソッドを使用して再度データフレームを作成インデックス変更 ・インデックスリストを 列 1 に変更 df.set_index(1, inplace=True)・インデックスに 列 2 を追加 df.set_index(2, append=True)与えられたデータは Series か DataFrame か ・isinstance 関数(パラメータ 2 個) if isinstance(pd_data, pd.Series) True 時の作業・type 関数もあり 学習例 ・boston_house_prices ・手書き文字 ・WineQuality |
All Rights Reserved. Copyright (C) ITCL |