python:pandas

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
python:pandas [2018/03/07 19:18] mumeiyamibitopython:pandas [2018/08/08 11:58] (現在) – [モジュールの読み込み] mumeiyamibito
行 19: 行 19:
  
 あるいは あるいは
-<code python>import numpy as pd</code>+<code python>import pandas as pd</code>
   * ''as pd'' によって、以降 ''pd'' で呼び出せる。   * ''as pd'' によって、以降 ''pd'' で呼び出せる。
   * ここではこっちの読み込みをした場合で記述していく。   * ここではこっちの読み込みをした場合で記述していく。
行 25: 行 25:
 ==== データフレームの作成 ==== ==== データフレームの作成 ====
 <code python> <code python>
-hoge = \+data_frame = \
 pd.DataFrame([ pd.DataFrame([
              ["Tanaka", "Suzuki", "Yamada"],              ["Tanaka", "Suzuki", "Yamada"],
行 32: 行 32:
 ]).T ]).T
  
-hoge.columns = ["Name", "Age", "Height"+data_frame.columns = ["Name", "Age", "Height"
-hoge.index = [1,2,3]</code> +data_frame.index = [1,2,3]</code> 
-  * `.T` を忘れない (`.T` は numpy の転置と同じ+  * ''.T'': numpy の転置と同じ (pandas では、行を個々のデータ、列をデータの種類としていため、転置を使っている) 
-  * 二次元リストにする +  * ''data_frame.columns'' で、各リストのデータ名 (カラム名) を上書きする 
-  * `hoge.columnsで、各リストのデータ名 (カラム名) を上書きする +  * ''data_frame.index'' で、各リストのインデックス (シリアル ID) を上書きする
-  * `hoge.indexで、各リストのインデックス (シリアル ID) を上書きする+
     * インデックスは数値でないといけない     * インデックスは数値でないといけない
  
 ====  データフレームへのアクセス ==== ====  データフレームへのアクセス ====
   * カラム、インデックスへのアクセス\\ <code python>   * カラム、インデックスへのアクセス\\ <code python>
-print(hoge.columns) +print(data_frame.columns) 
-print(hoge.index)</code> +print(data_frame.index)</code> 
-      * `hoge.columns` でカラム一覧にアクセス +      * `data_frame.columns` でカラム一覧にアクセス 
-      * `hoge.index` でインデックス一覧にアクセス+      * `data_frame.index` でインデックス一覧にアクセス
  
   * データへのアクセス   * データへのアクセス
-    * 単一カラムへのアクセス\\ <code python>print(hoge["Name"])</code> +    * 単一カラムへのアクセス\\ <code python>print(data_frame["Name"])</code> 
-    * 複数カラムへのアクセス\\ <code python>print(hoge[["Name", "Age"]])</code>+    * 複数カラムへのアクセス\\ <code python>print(data_frame[["Name", "Age"]])</code>
       * リストでカラム名を指定する       * リストでカラム名を指定する
-    * 行へのアクセス\\ <code python>print(hoge[1:2])</code>+    * 行へのアクセス\\ <code python>print(data_frame[1:2])</code>
       * スライスで必ず、始点と終点を指定する       * スライスで必ず、始点と終点を指定する
       * カラムと同時に指定する場合は、カラム、行の順番で。       * カラムと同時に指定する場合は、カラム、行の順番で。
     * 参考サイト: [[http://akiyoko.hatenablog.jp/entry/2017/04/03/081630 | pandas.DataFrame の列の抽出(射影)および行の抽出(選択)方法まとめ - akiyoko blog]]     * 参考サイト: [[http://akiyoko.hatenablog.jp/entry/2017/04/03/081630 | pandas.DataFrame の列の抽出(射影)および行の抽出(選択)方法まとめ - akiyoko blog]]
  
-  +==== データの追加 ==== 
 +  * カラムの追加\\ <code python>data_frame[NEW_COLUMN] = [DATA1, DATA2, DATA3, ...]</code> 
 +    * ''NEW_COLUMN'': 新しく追加するカラム名 
 +    * ''DATA1, DATA2, ...'': 追加するデータはリストで渡す 
 +    * 次元が合わない場合は、エラーになる 
 +    * 参考サイト: [[https://qiita.com/hi34/items/43c366dea18b46faf49d | pandasの基本操作 - Qiita]] 
 +  * 行の追加\\ <code python>data_frame = data_frame.append(DATA_FRAME)</code> 
 +    * ''DATA_FRAME'': 追加するデータが入った pandas のデータフレーム 
 +    * 次元が合わない場合は、''NaN'' となる。 
 +    * 返り値を受け取る形で更新する。 
 +    * 参考サイト: [[https://qiita.com/hi34/items/43c366dea18b46faf49d | pandasの基本操作 - Qiita]] 
 +  * データフレームの追加 
 +    * 横に結合 (カラムの追加) \\ <code python>DATA_FRAME = pd.concat([DATA_FRAME1, DATA_FRAME2, ...], axis = 1)</code> 
 +    * 縦に結合 (行の追加)\\ <code python>DATA_FRAME = pd.concat([DATA_FRAME1, DATA_FRAME2, ...])</code> 
 +    * 参考サイト: [[http://sinhrks.hatenablog.com/entry/2015/01/28/073327 | Python pandas 図でみる データ連結 / 結合処理 - StatsFragments]] 
 +    * データの欠損は ''NaN'' 扱いとなる。''NaN'' を置換するには ''.fillna()'' を使う。\\ <code python>DATA_FRAME.fillna("")</code> 
 +      * 上記の例では、''NaN'' が空の文字列に置換される。 
 +      * 参考サイト: [[https://note.nkmk.me/python-pandas-nan-dropna-fillna/ | pandasで欠損値NaNを除外(削除)・置換(穴埋め)する | Python / note.nkmk.me]] 
 + 
 +==== 値の取得・変更 ==== 
 +  * 行ラベルと列ラベルで指定した値を取得\\ <code python>DF.at[ROW_LABEL, COL_LABEL]</code> 
 +    * ''DF'': データフレーム変数 
 +    * ''ROW_LABEL'': 行ラベル 
 +    * ''COL_LABEL'': 列ラベル 
 +  * 行ラベルと列ラベルで指定した値を変更\\ <code python>DF.at[ROW_LABEL, COL_LABEL] = VALUE</code> 
 +    * ''DF'': データフレーム変数 
 +    * ''ROW_LABEL'': 行ラベル 
 +    * ''COL_LABEL'': 列ラベル 
 +    * ''VALUE'': 新しい値 
 +  * 行番号と列番号で指定した値を取得\\ <code python>DF.iat[ROW_INDEX, COL_INDEX]</code> 
 +    * ''DF'': データフレーム変数 
 +    * ''ROW_INDEX'': 行番号 
 +    * ''COL_INDEX'': 列番号 
 +  * 行番号と列番号で指定した値を変更\\ <code python>DF.iat[ROW_INDEX, COL_INDEX] = VALUE</code> 
 +    * ''DF'': データフレーム変数 
 +    * ''ROW_INDEX'': 行番号 
 +    * ''COL_INDEX'': 列番号 
 +    * ''VALUE'': 新しい値 
 +  * 参考サイト: [[https://note.nkmk.me/python-pandas-at-iat-loc-iloc/ | pandasで任意の位置の値を取得・変更するat, iat, loc, iloc | Python / note.nkmk.me]] 
 + 
 +==== データフレームのサイズ確認 ==== 
 +  * 2 つの方法がある。 
 +    * ''.index'' や ''.columns'' で取得したカラム名やインデックス名のリストを ''len()'' を使って取得する。 
 +    * ''DATA_FRAME.shape'' でインデックスとカラム数を同時に取得する。 
 + 
 +==== ファイルの読み込み ==== 
 +  * テキストファイルの場合\\ <code python>DF = pd.read_table("INPUT.txt", names = [LABEL1, LABEL2, ...])</code> 
 +    * ''DF'': データフレームを格納する変数 
 +    * ''INPUT.txt'': 入力ファイル 
 +    * ''LABEL1, LABEL2,...'': カラム名 
 + 
 +==== CSV ファイルの読み書き ==== 
 +  * 読み込み\\ <code python>DF = pd.read_csv(CSV_FILE[, OPTION])</code> 
 +    * ''DF'': データフレームを格納する変数 
 +    * ''CSV_FILE'': CSV ファイルのパス 
 +    * ''OPTION'': その他のオプション (任意) 
 +    * この場合、1 行目が列ラベルとして割り当てられる。 
 +    * 列ラベルの指定方法 
 +      * 1 行目をラベルとして割り当てたくない場合は、''OPTION'' に ''header = None'' を指定する。 
 +      * 任意の列ラベルを指定する場合は、''OPTION'' に ''name = (LABEL1, LABEL2, ...)'' を付け、''LABEL1'' や ''LABEL2'' に列ラベルを指定していく。 
 +      * 特定の行を列ラベルとして指定する場合は、''OPTION'' に ''header = NUM'' の ''NUM'' に行番号 (0 から始まる) を指定する。この場合、指定した行より上の行は無視される。 
 +    * 行ラベルの指定方法 
 +      * 特定の列を行ラベルを指定する場合は、''OPTION'' に ''index_col = NUM'' の ''NUM'' に列番号 (0 から始まる) を指定する。 
 +  * 書き出し\\ <code python>DF.to_csv(CSV_FILE[, OPTION])</code> 
 +    * ''DF'': データフレームが格納された変数 
 +    * ''CSV_FILE'': 出力する CSV ファイルのパス 
 +    * ''OPTION'': その他のオプション (任意) 
 +    * 特定の列のみを書き出す場合、''OPTION'' に ''columns = [LABEL1, LABEL2, ...]'' を追加し、''LABEL1'' や ''LABEL2'' に書き出す列ラベルを指定していく。 
 +    * 列ラベルや行ラベルも書き出す場合は、''OPTION'' に ''header'' (列ラベル) や ''index'' (行ラベル) を追加し、''TRUE'' や ''FALSE'' で ON/OFF を切り替える。デフォルトは両方 ''True'' 
 +    * 区切り文字を指定する場合は、''OPTION'' に ''sep = SEP'' を追加し、''SEP'' に区切り文字を指定する。''SEP'' に ''\t'' を指定すると、TSV 形式のファイルで出力できる。 
 +  * 参考サイト: 
 +    * [[https://note.nkmk.me/python-pandas-read-csv-tsv/ | pandasでcsv/tsvファイル読み込み(read_csv, read_table) | Python / note.nkmk.me]] 
 +    * [[https://note.nkmk.me/python-pandas-to-csv/ | pandasでcsvファイルの書き出し・追記(to_csv) | Python / note.nkmk.me]] 
  
 {{tag>プログラミング}} {{tag>プログラミング}}
  
  • python/pandas.1520417938.txt.gz
  • 最終更新: 2018/03/07 19:18
  • by mumeiyamibito