Pythonの基礎:pandasを完全理解!動きが見えるサンプル付き解説
はじめに
Pythonで「表のデータ」を扱うときに欠かせないライブラリ、それがpandas(パンダス)です。
この記事では、初心者の方でもわかるように、Series
とDataFrame
の違いから、データの操作方法(loc
・iloc
)、列の追加や削除まで、実行結果付きでていねいに解説していきます。
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で表形式のデータを扱うときにとても便利なツールです。
Series
とDataFrame
の違いや、loc
・iloc
の使い方、列や行の追加・削除などをマスターすることで、より実践的なデータ処理ができるようになります。
Discussion