ITいろいろ

プログラミングやクラウド、データ解析など、ITにかかわることをいろいろと書いています。

Pandasで必要な列だけを取り出す

以前の投稿でフィルタ操作(つまり行の絞り込み)を紹介しましたが、今回は列の操作について紹介します。

データは前回同様、総務省統計局のデータを拝借します。

コード紹介

# インポート
import pandas as pd

# ファイルの取り込み
df = pd.read_excel("05k2-3.xlsx", skiprows=3, skipfooter=3)

# 「時間軸コード」と「時点」列を削除
df_drop = df.drop( columns=['時間軸コード', '時点'] )
# もしくはdf_drop = df.drop(['時間軸コード', '時点'], axis=1)

# 「男」、「女」列だけを取り出す
df_select = df[['男','女']]
# もしくはdf_select = df.loc[:, ['男','女']]

出力結果

  • 元データ
  • 列を削除したデータ
  • 列を選択したデータ

少し解説

drop関数

列の削除は、一般的にはdf.drop(['時間軸コード', '時点'], axis=1)を使います。

こちらの良いところは、axis=0(もしくはオプションなし)にすると列の削除もできるところです。

ただし、私の場合列って0だっけ?1だっけ?といつも悩むので、column=を使う方が便利だと思っています。

loc関数

こちらも今回コメントアウトしていますが、loc関数を使うといろいろと応用ができます。

loc[(取りたい行), (取りたい列)]という構文になります。

今回行はすべて取るため、:としていますが、例えば以下のようなことが簡単にできます。

  • 50行まで取る→ df.loc[:50, ['男','女']]
  • 40~60行を取る → df.loc[40:60, ['男','女']]
  • 70行以降を取る → df.loc[70:, ['男','女']]