Pandas read_csv() と例

Pandas に CSV をインポート

TensorFlow チュートリアルでは、アダルト データセットを使用します。 分類タスクでよく使用されます。 このURLから入手可能です https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data

データはCSV形式で保存されます。 このデータセットには XNUMX つのカテゴリ変数が含まれています。

このデータセットには 8 つのカテゴリ変数が含まれています。

  • ワーククラス
  • 教育
  • 夫婦の
  • 職業
  • 関係
  • レース
  • セックス
  • 母国

そして、6 つの連続変数:

  • 年齢
  • fnlwgt
  • 教育番号
  • 資本利得
  • 資本損失
  • 時間_週

パンダの read_csv() メソッド

CSV データセットをインポートするには、オブジェクト pd.read_csv() を使用できます。 内部の基本的な引数は次のとおりです。

パンダの read_csv() 構文

pandas.read_csv(filepath_or_buffer,sep=', ',`names=None`,`index_col=None`,`skipinitialspace=False`)
  • ファイルパスまたはバッファ: データが含まれるパスまたは URL
  • sep=', ': 使用する区切り文字を定義します
  • `名前=なし`: 列に名前を付けます。 データセットに XNUMX 列がある場合は、XNUMX 個の名前を渡す必要があります
  • `index_col=なし`: 「はい」の場合、最初の列が行インデックスとして使用されます。
  • `skipinitialspace=False`: 区切り文字の後のスペースをスキップします。

read_csv() の詳細については、公式ドキュメントを確認してください。

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html

パンダの read_csv() の例

## Import csv
import pandas as pd
## Define path data
COLUMNS = ['age','workclass', 'fnlwgt', 'education', 'education_num', 'marital',
           'occupation', 'relationship', 'race', 'sex', 'capital_gain', 'capital_loss',
           'hours_week', 'native_country', 'label']
PATH = "https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data"
df_train = pd.read_csv(PATH,
                       skipinitialspace=True,
                       names = COLUMNS,
                       index_col=False)
df_train.shape

出力:

(32561, 15)

パンダの groupby() メソッド

データを確認する簡単な方法は、groupby メソッドを使用することです。このメソッドは、データをグループ別にまとめるのに役立ちます。以下は、groupby() メソッドで使用できるメソッドの一覧です。

  • カウント: カウント
  • 分: 分
  • 最大: 最大
  • 意味:意味
  • 中央値: 中央値
  • 標準偏差:sdt

groupby() 内では、メソッドを適用する列を使用できます。

成人向けデータセットを含む 50 つのグループを見てみましょう。 収益のタイプ別、つまり 50 を超えるか、XNUMX 未満のすべての連続変数の平均を取得します。

df_train.groupby(['label']).mean()
ラベル 年齢 fnlwgt 教育番号 資本利得 資本損失 時間_週
<= 50K 36.783738 190340.86517 9.595065 148.752468 53.142921 38.840210
> 50K 44.249841 188005.00000 11.611657 4006.142456 195.001530 45.473026

世帯の種類ごとに最低年齢を取得できます。

df_train.groupby(['label'])['age'].min()
label
<=50K    17
>50K     19
Name: age, dtype: int64

複数の列でグループ化することもできます。たとえば、世帯の種類や婚姻状況に応じて最大のキャピタルゲインを取得できます。

df_train.groupby(['label', 'marital'])['capital_gain'].max()				
label  marital              
<=50K  Divorced                 34095
       Married-AF-spouse         2653
       Married-civ-spouse       41310
       Married-spouse-absent     6849
       Never-married            34095
       Separated                 7443
       Widowed                   6849
>50K   Divorced                 99999
       Married-AF-spouse         7298
       Married-civ-spouse       99999
       Married-spouse-absent    99999
       Never-married            99999
       Separated                99999
       Widowed                  99999
Name: capital_gain, dtype: int64

groupby の後にプロットを作成できます。これを行う 1 つの方法は、グループ化後にプロットを使用することです。

より優れたプロットを作成するには、mean() の後に unstack() を使用して同じマルチレベル インデックスを取得するか、50 未満と 50 を超える収益ごとに値を結合します。 この場合、プロットには 14 (2*7) ではなく XNUMX つのグループが含まれます。

あなたが使用している場合 Jupyter ノート必ず%matplotlibをインラインで追加してください。そうしないとプロットが表示されません。

%matplotlib inline
df_plot = df_train.groupby(['label', 'marital'])['capital_gain'].mean().unstack()
df_plot

パンダの groupby() メソッドの例

まとめ

  • CSV データセットをインポートするには パンダ、オブジェクト pd.read_csv() を使用できます。
  • groupby() メソッドを使用すると、データをグループごとに要約できます。
  • 複数の列でグループ化することもできます。たとえば、世帯の種類や婚姻状況に応じて最大のキャピタルゲインを取得できます。