【Pythonデータ分析入門】Pandasで表データ操作自由自在!CSV読込から簡単集計まで

【Pythonデータ分析入門】Pandasで表データ操作自由自在!CSV読込から簡単集計まで

「PythonでCSVファイルやExcelのデータを扱いたいけど、どうすればいいの?」
「データ分析って聞くけど、何から始めたらいいか分からない…」

こんにちは! Pythonを使ってデータと向き合いたいと考えているあなたへ。今回は、データ分析の世界で必須とも言える超強力ライブラリ、Pandas(パンダス)の基本的な使い方をご紹介します。Pandasを使えば、Excelの表計算のように、いえ、それ以上に柔軟かつ効率的にデータを扱うことができるようになります。

この記事では、Pandasのインストールから、CSVファイルの読み込み、データの表示、そして簡単なデータ操作や集計まで、サンプルコードを動かしながら丁寧に解説していきます。Pandasを使いこなして、データ分析の第一歩を踏み出しましょう!


1. Pandasとは? なぜデータ分析に必要なの?

Pandasは、Pythonプログラミング言語で使用できる、高速で強力、かつ柔軟で使いやすいデータ分析および操作ツールです。特に、表形式のデータや時系列データを扱うのに優れています。

Pandasの中心的なデータ構造は以下の2つです。

  • Series (シリーズ): 1次元のラベル付き配列です。Excelの1列のようなイメージです。
  • DataFrame (データフレーム): 2次元のラベル付きデータ構造で、異なる型の列を持つことができます。まさにExcelのシートのようなものです。これがPandas操作の主役となります。

Pandasを使うことで、以下のような作業が簡単に行えるようになります。

  • CSV、Excel、データベースなど、さまざまな形式のデータの読み込み・書き出し
  • データのクリーニング(欠損値の処理、重複の削除など)
  • データの選択、フィルタリング、並び替え
  • データの集計、統計量の計算
  • データの結合や変形

2. Pandasのインストール

まずはPandasをインストールしましょう。ターミナル(コマンドプロンプトやPowerShell、ターミナル.appなど)を開いて、以下のコマンドを実行してください。

pip install pandas

これで基本的なインストールは完了です。

(オプション)Excelファイルを扱いたい場合:
Excelファイル (.xlsx) を読み書きするには、追加でopenpyxlというライブラリが必要になることがあります。必要に応じてインストールしてください。

pip install openpyxl

💡仮想環境のすすめ:
他のライブラリと同様に、Pandasもプロジェクトごとの仮想環境(venvなど)にインストールすることを推奨します。venv仮想環境の構築はこちらで紹介しています。


3. Pandasを使ってみよう!基本操作

それでは、実際にPandasを使ってみましょう。まず、Pandasをインポートするのがお決まりです。

import pandas as pd

pdという別名でインポートするのが慣習となっています。

3.1. サンプルデータの準備 (CSVファイル)

venv仮想環境の構築はこちらで紹介しています。練習用に、以下のような内容のCSVファイルを作成し、sample_data.csvという名前でPythonスクリプトと同じディレクトリに保存してください。

name,age,city,score
Alice,25,New York,85
Bob,30,London,90
Charlie,22,Paris,78
David,35,Tokyo,92
Eve,28,New York,88

1行目がヘッダー(列名)で、2行目以降がデータです。

3.2. CSVファイルの読み込み

作成したCSVファイルをPandasのDataFrameとして読み込みます。

import pandas as pd

# CSVファイルを読み込んでDataFrameを作成
df = pd.read_csv('sample_data.csv')

# DataFrameを表示
print(df)

実行結果 (例):

      name  age       city  score
0    Alice   25   New York     85
1      Bob   30     London     90
2  Charlie   22      Paris     78
3    David   35      Tokyo     92
4      Eve   28   New York     88

このように、CSVファイルの内容が綺麗に表形式で表示されました。左端の0から始まる数字は「インデックス」と呼ばれる行のラベルです。

3.3. DataFrameの情報を確認する

読み込んだデータがどのようなものか、概要を把握するための便利なメソッドがいくつかあります。

import pandas as pd
df = pd.read_csv('sample_data.csv')

# 最初の5行を表示 (デフォルトは5行)
print("--- 最初の3行 ---")
print(df.head(3))

# 最後の5行を表示
print("\n--- 最後の2行 ---")
print(df.tail(2))

# DataFrameの行数と列数 (形状)
print("\n--- DataFrameの形状 (行数, 列数) ---")
print(df.shape)

# 各列のデータ型や欠損値の情報を表示
print("\n--- DataFrameの情報 ---")
df.info()

# 数値データの基本的な統計量を表示
print("\n--- 基本的な統計量 ---")
print(df.describe())

実行結果 (info()とdescribe()部分の例):

--- DataFrameの情報 ---
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   name    5 non-null      object
 1   age     5 non-null      int64
 2   city    5 non-null      object
 3   score   5 non-null      int64
dtypes: int64(2), object(2)
memory usage: 288.0+ bytes

--- 基本的な統計量 ---
             age      score
count   5.000000   5.000000
mean   28.000000  86.600000
std     5.147815   5.319774
min    22.000000  78.000000
25%    25.000000  85.000000
50%    28.000000  88.000000
75%    30.000000  90.000000
max    35.000000  92.000000

info() を見ると、各列のデータ型(objectは文字列、int64は整数)や、欠損値がないこと(Non-Null Countが全行数と同じ)などが分かります。

3.4. 列の選択

特定の列のデータだけを取り出す方法です。

import pandas as pd
df = pd.read_csv('sample_data.csv')

# 'name'列だけを選択 (結果はSeries)
names = df['name']
print("--- 名前 (Series) ---")
print(names)

# 'name'列と'score'列を選択 (結果はDataFrame)
name_and_score = df[['name', 'score']]
print("\n--- 名前とスコア (DataFrame) ---")
print(name_and_score)

実行結果 (例):

--- 名前 (Series) ---
0      Alice
1        Bob
2    Charlie
3      David
4        Eve
Name: name, dtype: object

--- 名前とスコア (DataFrame) ---
      name  score
0    Alice     85
1      Bob     90
2  Charlie     78
3    David     92
4      Eve     88

1列だけ選択するとSeries、複数列を選択するとDataFrameとしてデータが返ってきます。

3.5. 行の選択 (フィルタリング)

特定の条件に合う行だけを抽出します。

import pandas as pd
df = pd.read_csv('sample_data.csv')

# 'age'が30歳以上の人だけを抽出
older_people = df[df['age'] >= 30]
print("--- 30歳以上の人 ---")
print(older_people)

# 'city'が'New York'で、かつ'score'が85以上の人
newyork_high_scorers = df[(df['city'] == 'New York') & (df['score'] >= 85)]
print("\n--- New York在住でスコア85以上の人 ---")
print(newyork_high_scorers)

実行結果 (例):

--- 30歳以上の人 ---
    name  age    city  score
1    Bob   30  London     90
3  David   35   Tokyo     92

--- New York在住でスコア85以上の人 ---
    name  age      city  score
0  Alice   25  New York     85
4    Eve   28  New York     88

複数の条件を指定する場合は、各条件を()で囲み、論理積(AND)は&、論理和(OR)は|を使います。

3.6. 簡単なデータ操作と集計

import pandas as pd
df = pd.read_csv('sample_data.csv')

# 新しい列 'age_in_5_years' を追加
df['age_in_5_years'] = df['age'] + 5
print("--- 5年後の年齢を追加 ---")
print(df.head())

# 'score'で降順に並び替え
df_sorted = df.sort_values(by='score', ascending=False)
print("\n--- スコアで降順ソート ---")
print(df_sorted.head())

# 'score'の平均値
average_score = df['score'].mean()
print(f"\n平均スコア: {average_score}")

# 'city'ごとの平均スコア (少し高度なgroupby)
city_avg_score = df.groupby('city')['score'].mean()
print("\n--- 都市ごとの平均スコア ---")
print(city_avg_score)

実行結果 (一部抜粋例):

--- 5年後の年齢を追加 ---
      name  age       city  score  age_in_5_years
0    Alice   25   New York     85              30
1      Bob   30     London     90              35
2  Charlie   22      Paris     78              27
3    David   35      Tokyo     92              40
4      Eve   28   New York     88              33

平均スコア: 86.6

--- 都市ごとの平均スコア ---
city
London      90.0
New York    86.5
Paris       78.0
Tokyo       92.0
Name: score, dtype: float64

3.7. CSVファイルへの書き出し

処理したDataFrameを新しいCSVファイルとして保存できます。

import pandas as pd
df = pd.read_csv('sample_data.csv')

# 'score'が85以上のデータだけを抽出
high_scorers = df[df['score'] >= 85]

# 新しいCSVファイルとして書き出し
# index=False を指定すると、DataFrameのインデックス(0,1,2...)がファイルに書き出されません
high_scorers.to_csv('high_scorers_data.csv', index=False)

print("high_scorers_data.csv に書き出しました。")

このコードを実行すると、high_scorers_data.csvというファイルが作成されます。


まとめ:Pandasでデータと仲良くなろう!

今回は、PythonのPandasライブラリの本当に基本的な部分をご紹介しました。

  • CSVファイルの読み込み (pd.read_csv())
  • DataFrameの基本的な情報の確認 (head(), shape, info(), describe())
  • 列の選択
  • 行のフィルタリング(条件指定)
  • 簡単なデータ操作(新しい列の追加、ソート、集計)
  • CSVファイルへの書き出し (df.to_csv())

Pandasは非常に奥が深く、ここで紹介した機能はほんの入り口に過ぎません。しかし、これらの基本操作をマスターするだけでも、多くのデータ処理作業が格段に楽になるはずです。
ぜひ、お手持ちのデータや公開されているサンプルデータなどで、Pandasを実際に動かしてみてください。データを自在に操る楽しさを感じられることでしょう!

次回(中級編)は、もう少し進んだデータ操作や、複数のDataFrameを結合する方法などについて解説できればと思います。お楽しみに!

その他の投稿はこちら

コメント

このブログの人気の投稿

タイトルまとめ

これで迷わない!WindowsでPython環境構築する一番やさしい方法 #0

【Python標準ライブラリ完結!】11の冒険をありがとう!君のPython力が飛躍する「次の一歩」とは? 🚀