🐍

Pythonの基礎:pandasを完全理解!動きが見えるサンプル付き解説

に公開

はじめに

Pythonで「表のデータ」を扱うときに欠かせないライブラリ、それがpandas(パンダス)です。
この記事では、初心者の方でもわかるように、SeriesDataFrameの違いから、データの操作方法(lociloc)、列の追加や削除まで、実行結果付きでていねいに解説していきます。


pandasのインポートと基本のデータフレーム

まずはpandasのインポートと、サンプルとなるデータフレームの作成です。

import pandas as pd

data = {
    '名前': ['佐藤', '鈴木', '高橋'],
    '年齢': [25, 30, 22],
    '職業': ['エンジニア', 'デザイナー', 'マーケター']
}

df = pd.DataFrame(data)
print(df)

実行結果:

   名前  年齢       職業
0  佐藤  25  エンジニア
1  鈴木  30  デザイナー
2  高橋  22  マーケター

SeriesとDataFrameの違い

pandasには「Series」と「DataFrame」という2つの基本構造があります。

Series(1列だけの表)

Seriesは「1列だけの表」のような構造です。
インデックス付きの一次元配列として考えるとわかりやすいです。

ages = pd.Series([25, 30, 22], name='年齢')
print(ages)

実行結果:

0    25
1    30
2    22
Name: 年齢, dtype: int64

Seriesはインデックス付きの一次元データです。

DataFrame(複数列の表)

複数のSeriesをまとめてできるのがDataFrameです。

print(df)

実行結果(再掲):

   名前  年齢       職業
0  佐藤  25  エンジニア
1  鈴木  30  デザイナー
2  高橋  22  マーケター

DataFrameは複数のSeriesを列として持つ、表形式のデータ構造です。


locの使い方(ラベル指定)

locは、行や列を「ラベル(インデックス名や列名)」で指定するときに使います。

print(df.loc[1, '名前'])

実行結果:

鈴木
print(df.loc[:, ['名前', '職業']])

実行結果:

   名前       職業
0  佐藤  エンジニア
1  鈴木  デザイナー
2  高橋  マーケター

複雑な条件指定にも強く、意味のあるラベルで操作したいときに便利です。


ilocの使い方(位置指定)

ilocは、行や列を「整数の位置」で指定します。

print(df.iloc[1, 0])

実行結果:

鈴木
print(df.iloc[:, 0:2])

実行結果:

   名前  年齢
0  佐藤  25
1  鈴木  30
2  高橋  22

ループ処理や位置ベースのアクセスが必要な場面で役立ちます。


条件を使って行を抽出する

特定の条件に一致する行だけを抽出することができます。

print(df[df['年齢'] >= 25])

実行結果:

   名前  年齢       職業
0  佐藤  25  エンジニア
1  鈴木  30  デザイナー

データの絞り込みにはとてもよく使われる操作です。


列の追加

既存の列を使って新しい列を作ることも簡単です。

df['年収(予想)'] = df['年齢'] * 30 + 200
print(df)

実行結果:

   名前  年齢       職業  年収(予想)
0  佐藤  25  エンジニア       950
1  鈴木  30  デザイナー      1100
2  高橋  22  マーケター       860

計算列やフラグ列を追加する際に便利です。


列の削除

不要になった列は drop メソッドで削除できます。

df = df.drop('年収(予想)', axis=1)
print(df)

実行結果:

   名前  年齢       職業
0  佐藤  25  エンジニア
1  鈴木  30  デザイナー
2  高橋  22  マーケター

axis=1で列方向の削除を指定します。


行の追加

concatを使えば新しい行を簡単に追加できます。

new_row = pd.DataFrame([['田中', 28, 'コンサルタント']], columns=['名前', '年齢', '職業'])
df = pd.concat([df, new_row], ignore_index=True)
print(df)

実行結果:

   名前  年齢         職業
0  佐藤  25    エンジニア
1  鈴木  30    デザイナー
2  高橋  22    マーケター
3  田中  28  コンサルタント

複数のデータフレームを結合するときもこの方法が使えます。


行の削除

dropメソッドで行も削除できます。

df = df.drop(index=1)
print(df)

実行結果:

   名前  年齢         職業
0  佐藤  25    エンジニア
2  高橋  22    マーケター
3  田中  28  コンサルタント

インデックス番号で削除する点に注意しましょう。


CSVファイルの読み書き

pandasはCSVファイルの読み書きにも対応しています。

# 読み込み
df = pd.read_csv('sample.csv')

# 書き出し
df.to_csv('output.csv', index=False)

実行結果はファイル操作のため、ここでは省略します。


よく使う便利な関数

データの確認に便利な関数をいくつか紹介します。

print(df.head())      # 先頭数行を見る
print(df.info())      # データの情報
print(df.describe())  # 統計情報(数値列のみ)

これらを組み合わせることで、データの中身を素早く把握できます。


まとめ

pandasは、Pythonで表形式のデータを扱うときにとても便利なツールです。
SeriesDataFrameの違いや、locilocの使い方、列や行の追加・削除などをマスターすることで、より実践的なデータ処理ができるようになります。

Discussion