| Index ソフト・ハード Python | Pandas |
|
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() 空のデータフレーム部分作成 df_name = pd.DataFrame() df_default = pd.read_csv(default_src, index_col=0, names=['name','age', 'state', 'point', 'point_f2'], dtype = {'name':'object','age':'Int64', 'state':'object', 'point':'Int64', 'point_f2':'int64'}) df_name = df_default[['name']] df_name = df_name.reset_index(drop=True) # reset_index df_name = df_name.drop_duplicates(keep='first') #同名は最初を残す df_name = df_name.sort_values('name') df_name = df_name.reset_index(drop=True) list = ["その他"] # その他追加 df_append = pd.DataFrame(data=[list], columns=["name"]) df_name = pd.concat([df_name, df_append], ignore_index=True, axis=0) df_name.to_csv('./data/name.csv', header = False) 与えられたデータは Series か DataFrame か ・isinstance 関数(パラメータ 2 個) if isinstance(pd_data, pd.Series) True 時の作業・type 関数もあり drop df_default = pd.read_csv(default_src, index_col=0, names=['name','age', 'state', 'point', 'point_f2'], dtype = {'name':'object','age':'Int64', 'state':'object', 'point':'Int64', 'point_f2':'int64'}) df_default = df_default.drop(['point', 'point_f2'], axis=1) dtypes df_default.dtypes 複数列の重複削除 df.drop_duplicates(subset=['列1', '列2']) 大文字と小文字は区別インデックス変更 ・インデックスリストを 列 1 に変更 df.set_index(1, inplace=True)・インデックスに 列 2 を追加 df.set_index(2, append=True)インデックス参照 ・位置指定 単独の要素 at iat 単独及び複数の素 loc iloc iat iloc は行番号、列番号 df.loc['xxx', 'yyy'] df.iloc[3, 4]・インデックス名取得 df.index df.index[3] Index名をカラム名に転置して取得・インデックスがダブっていればリスト出力 リスト出力された物をDataFrame(リスト)メソッドを使用して再度データフレームを作成型変換(キャスト) ・astype()メソッド df.astype(str) (全体を一括で変換)読み込み、ソート、書き込み #読み込み、ageとpointでソート、書き込み df_default = pd.read_csv(default_src, index_col=0, names=['name','age', 'state', 'point', 'point_f2'], dtype = {'name':'object','age':'Int64', 'state':'object', 'point':'Int64', 'point_f2':'int64'}) df_default = df_default.sort_values(['age', 'point'], ascending=[True, False]) df_default.to_csv('./data/new_data.csv', header = False) pandas←csv ・X = pd.DataFrame(x_csv, index_col=[0, 1, 4], header=None) ・必用ならば インデックス変更 pandas←list ・X = pd.DataFrame(リスト) ・必用ならば インデックス変更 pandas→numpy ・全てのデータを同じ型に整えてからnumpyに渡す。 ・一部の要素だけ抜き出してnumpyの演算を行う。 ・要素のdtypeがint64の場合は NumPy変換時に pd.NA があると float64 に変換 DataFrame と Series を連結 ・DataFrame に Series を追加 df = pd.concat([df, pd.DataFrame([sr])], ignore_index=True) Serise を DataFrame に変換して連結 append() は将来なくなる予定Series完全一致 ・ 参考 shape df_default.shape 追加(30%減) df_default = df_default.assign(point_2 = ((df_default[['point']]) * 0.7).astype('int')) 追加 切り出した文字列を新規カラム ・2文字切り出し df['new_name'] = df['name'].str[:2]追加 Series ・Seriesで要素を渡す df = pd.DataFrame(data={'列2': pd.Series([50, 60, 80],index=['行1', '行2', '行4'])}) 空のセルを作ることができる。学習例 ・boston_house_prices ・手書き文字 ・WineQuality |
| All Rights Reserved. Copyright (C) ITCL | |