リンドくんたなべ先生、Pythonで「pandas」っていうのをよく聞くんですけど、これって何なんですか?
たなべpandasはExcelみたいに表形式のデータを扱えるライブラリなんだ。
データ分析には欠かせないツールで、使いこなせるとめちゃくちゃ便利なんだよ。
pandasとは?データ分析の必須ツール
プログラミングを学んでいくと、「データ分析」という言葉をよく耳にするようになります。
そして、Pythonでデータ分析を行う際に絶対に避けて通れないのがpandasです。
pandasは、Pythonでデータを効率的に扱うための強力なライブラリです。
特に表形式のデータ(テーブルデータ)を操作するのに特化しており、ExcelやCSVファイルのようなデータを簡単に読み込んだり、加工したり、分析したりすることができます。
リンドくん表形式のデータって、具体的にはどんなものですか?
たなべ例えば、こんな感じのデータだよ。
| 名前 | 年齢 | 職業 |
|---|---|---|
| 田中 | 25 | エンジニア |
| 佐藤 | 30 | デザイナー |
| 鈴木 | 28 | データサイエンティスト |
こういった行と列で構成されたデータを扱うのが得意なんだ。
pandasが使われる場面
pandasは以下のような場面で活躍します。
- CSVやExcelファイルの読み込み・加工 - ファイルからデータを簡単に取り込める
- データのクリーニング - 欠損値の処理や重複データの削除など
- データの集計・統計処理 - 平均値や合計値の計算
- データの可視化の準備 - グラフ作成のためのデータ整形
- 機械学習の前処理 - AIモデルに入力するデータの準備
このように、データを扱う作業のほぼすべての工程でpandasが使われています。
データサイエンスやAI開発を目指す方にとって、pandasは必須スキルと言えるでしょう。
pandasの基本 - DataFrameとは
リンドくんpandasで一番大事な概念って何ですか?
たなべそれは間違いなくDataFrame(データフレーム)だね。
これがpandasの心臓部と言っても過言じゃないんだ。
DataFrameの基本概念
DataFrameは、pandasにおける最も重要なデータ構造です。簡単に言えば、Excelのシートのような表形式のデータを扱うためのものです。
DataFrameには以下のような特徴があります。
- 行と列で構成される2次元のデータ - 縦横にデータが並んでいる
- 各列に名前(カラム名)がある - データの種類がわかりやすい
- 各行にインデックス(番号)がある - データを特定しやすい
- 異なるデータ型を混在できる - 数値、文字列、日付などを一緒に扱える
実際のDataFrameのイメージは以下のようなものです。
名前 年齢 職業
0 田中 25 エンジニア
1 佐藤 30 デザイナー
2 鈴木 28 データサイエンティスト
左端の「0, 1, 2」がインデックス、上部の「名前、年齢、職業」がカラム名、そしてその下にある実際のデータが値です。
pandasのインストール
pandasを使用するには、まずインストールが必要です。
pip install pandasインストール後は、Pythonスクリプトの冒頭で以下のようにインポートします。
import pandas as pd慣例としてpdという短い名前でインポートするのが一般的です。
DataFrameの作成方法
リンドくん実際にDataFrameを作るにはどうすればいいんですか?
たなべいくつか方法があるけど、まずは辞書から作る方法が理解しやすいよ。順番に見ていこう。
辞書からDataFrameを作成
最もシンプルな方法は、Pythonの辞書型データからDataFrameを作成する方法です。
import pandas as pd
# 辞書でデータを定義
data = {
'名前': ['田中', '佐藤', '鈴木'],
'年齢': [25, 30, 28],
'職業': ['エンジニア', 'デザイナー', 'データサイエンティスト']
}
# DataFrameを作成
df = pd.DataFrame(data)
# 表示
print(df)実行結果は以下のようになります。
名前 年齢 職業
0 田中 25 エンジニア
1 佐藤 30 デザイナー
2 鈴木 28 データサイエンティスト
この方法では、辞書のキーがカラム名、辞書の値(リスト)が各列のデータになります。
リストのリストからDataFrameを作成
行ごとのデータをリストで表現する方法もあります。
import pandas as pd
# リストのリストでデータを定義
data = [
['田中', 25, 'エンジニア'],
['佐藤', 30, 'デザイナー'],
['鈴木', 28, 'データサイエンティスト']
]
# カラム名を指定してDataFrameを作成
df = pd.DataFrame(data, columns=['名前', '年齢', '職業'])
print(df)こちらの方法では、各リストが1行分のデータになります。
CSVファイルから読み込む
実務では、既存のCSVファイルからDataFrameを作成することが多いです。
import pandas as pd
# CSVファイルを読み込む
df = pd.read_csv('data.csv')
print(df)read_csv()関数を使えば、CSVファイルを一瞬でDataFrameに変換できます。
これがpandasの最も強力な機能の一つです。
DataFrameの基本操作
リンドくんDataFrameを作ったあとは、どんな操作ができるんですか?
たなべたくさんあるけど、まずはデータを見る・選ぶ・集計するという基本操作から学んでいこう。
データの確認
まずは作成したDataFrameの中身を確認する方法です。
import pandas as pd
data = {
'名前': ['田中', '佐藤', '鈴木', '高橋', '伊藤'],
'年齢': [25, 30, 28, 35, 22],
'職業': ['エンジニア', 'デザイナー', 'データサイエンティスト', 'マネージャー', 'エンジニア'],
'年収': [500, 450, 600, 700, 400]
}
df = pd.DataFrame(data)
# 最初の3行を表示
print(df.head(3))
# 最後の2行を表示
print(df.tail(2))
# データの概要を表示
print(df.info())
# 統計量を表示
print(df.describe())これらのメソッドを使えば、データの全体像を素早く把握できます。特に大きなデータセットを扱う際には、head()やtail()で一部だけを確認するのが効率的です。
特定の列を取得
DataFrameから特定の列だけを取り出すことができます。
# 1つの列を取得(Seriesとして取得される)
ages = df['年齢']
print(ages)
# 複数の列を取得(DataFrameとして取得される)
subset = df[['名前', '年収']]
print(subset)列を1つだけ取得するとSeries(シリーズ)という1次元のデータ構造になり、複数列を取得するとDataFrameのままです。
条件に基づくデータの抽出
特定の条件を満たす行だけを取り出すこともできます。
# 年齢が30歳以上の人だけを抽出
older_than_30 = df[df['年齢'] >= 30]
print(older_than_30)
# 職業がエンジニアの人だけを抽出
engineers = df[df['職業'] == 'エンジニア']
print(engineers)
# 複数条件(年齢が25歳以上かつ年収が500万以上)
high_earners = df[(df['年齢'] >= 25) & (df['年収'] >= 500)]
print(high_earners)このように、条件式を使ってデータをフィルタリングできるのがpandasの便利なところです。
複数の条件を組み合わせる場合は、&(AND)や|(OR)を使います。
新しい列の追加
既存のデータをもとに新しい列を追加することもできます。
# 年収を12で割って月収を計算
df['月収'] = df['年収'] / 12
# 年齢が30歳以上かどうかのフラグ
df['30歳以上'] = df['年齢'] >= 30
print(df)このように、既存の列を使った計算結果を新しい列として追加できます。
データの集計と統計処理
リンドくんデータの平均とか合計とかも簡単に出せるんですか?
たなべもちろん!pandasには便利な集計メソッドがたくさん用意されているんだ。
基本的な統計量の計算
DataFrameには、統計計算のための便利なメソッドが多数用意されています。
import pandas as pd
data = {
'名前': ['田中', '佐藤', '鈴木', '高橋', '伊藤'],
'年齢': [25, 30, 28, 35, 22],
'年収': [500, 450, 600, 700, 400]
}
df = pd.DataFrame(data)
# 平均値
print("年齢の平均:", df['年齢'].mean())
print("年収の平均:", df['年収'].mean())
# 合計
print("年収の合計:", df['年収'].sum())
# 最大値・最小値
print("最高年齢:", df['年齢'].max())
print("最低年収:", df['年収'].min())
# 中央値
print("年齢の中央値:", df['年齢'].median())
# 標準偏差
print("年収の標準偏差:", df['年収'].std())これらのメソッドを使えば、複雑な統計計算も一行で実行できます。
グループごとの集計
groupby()メソッドを使うと、カテゴリごとにデータを集計できます。
data = {
'名前': ['田中', '佐藤', '鈴木', '高橋', '伊藤', '中村'],
'職業': ['エンジニア', 'デザイナー', 'エンジニア', 'マネージャー', 'エンジニア', 'デザイナー'],
'年収': [500, 450, 600, 700, 400, 480]
}
df = pd.DataFrame(data)
# 職業ごとの平均年収を計算
average_by_job = df.groupby('職業')['年収'].mean()
print(average_by_job)
# 職業ごとの人数をカウント
count_by_job = df.groupby('職業').size()
print(count_by_job)groupby()はExcelのピボットテーブルのような機能を提供し、データを様々な角度から分析できます。
データの並び替えとソート
データを特定の列で並び替えることもよく行われる操作です。
# 年齢で昇順にソート
df_sorted_asc = df.sort_values('年齢')
print(df_sorted_asc)
# 年収で降順にソート
df_sorted_desc = df.sort_values('年収', ascending=False)
print(df_sorted_desc)
# 複数列でソート(職業で昇順、その中で年収で降順)
df_multi_sorted = df.sort_values(['職業', '年収'], ascending=[True, False])
print(df_multi_sorted)sort_values()メソッドを使えば、データを好きな順番に並び替えられます。
例)売上データの分析
リンドくん実際にどんな風に使われるか、もっと実践的な例が見たいです!
たなべじゃあ、売上データを分析するシナリオで見てみようか。実務に近い形で理解できると思うよ。
売上データの準備と分析
実際のビジネスシーンを想定した例を見てみましょう。
import pandas as pd
# 売上データの作成
sales_data = {
'日付': ['2025-01-01', '2025-01-02', '2025-01-03', '2025-01-01', '2025-01-02', '2025-01-03'],
'商品': ['ノートPC', 'ノートPC', 'ノートPC', 'マウス', 'マウス', 'マウス'],
'売上数': [5, 3, 7, 20, 15, 25],
'単価': [100000, 100000, 100000, 3000, 3000, 3000]
}
df_sales = pd.DataFrame(sales_data)
# 売上金額を計算
df_sales['売上金額'] = df_sales['売上数'] * df_sales['単価']
print("売上データ:")
print(df_sales)
# 商品ごとの合計売上を計算
product_sales = df_sales.groupby('商品')['売上金額'].sum()
print("\n商品ごとの合計売上:")
print(product_sales)
# 日付ごとの合計売上を計算
daily_sales = df_sales.groupby('日付')['売上金額'].sum()
print("\n日付ごとの合計売上:")
print(daily_sales)
# 最も売れた商品を特定
best_product = product_sales.idxmax()
best_sales = product_sales.max()
print(f"\n最も売れた商品: {best_product}({best_sales:,}円)")このように、pandasを使えば実務レベルのデータ分析も短いコードで実現できます。
pandasを学ぶ際のポイント
最初は基本操作に集中する
pandasには膨大な機能がありますが、最初から全てを覚える必要はありません。以下の基本操作をマスターすれば、多くの分析作業をこなせます。
- DataFrameの作成
- データの確認(
head(),info(),describe()) - 列の選択
- 条件に基づく抽出
- 基本的な統計量の計算
groupby()による集計
エラーメッセージを恐れない
プログラミング学習で最も重要なのは、エラーメッセージを読むことです。
pandasのエラーメッセージは比較的わかりやすく、問題の原因を教えてくれます。エラーが出たら、メッセージをしっかり読んで、何が問題なのかを理解する習慣をつけましょう。
公式ドキュメントを活用する
pandasの公式ドキュメントは非常に充実しています。
わからない操作があったら、まず公式ドキュメントを確認する癖をつけると良いでしょう。
実際のデータで練習する
教材のサンプルデータだけでなく、自分の興味のあるデータで練習することをお勧めします。
例えば、公開されている統計データや、自分で作成したExcelファイルなどを使ってみると、学習がより実践的になります。
まとめ
リンドくんpandasって思ったより使いやすそうですね!早速試してみたいです。
たなべその意気だね!
最初は小さなデータで練習して、徐々に複雑な操作に挑戦していくといいよ。データ分析のスキルは、AIエンジニアにとって必須だからね。
この記事では、pandasの基本的な使い方について解説してきました。
重要なポイントのおさらい
- pandasは表形式データを扱うための強力なライブラリ
- DataFrameがpandasの中心的なデータ構造
- データの読み込み、加工、集計が短いコードで実現できる
groupby()や条件抽出など、実務で役立つ機能が豊富- 基本操作をマスターすれば、多くのデータ分析タスクに対応可能
pandasは、データサイエンスやAI開発において避けて通れない重要なツールです。
最初は難しく感じるかもしれませんが、基本操作を繰り返し練習することで、必ず使いこなせるようになります。
データ分析のスキルは、これからのエンジニアにとってますます重要になっていきます。
pandasをマスターして、データを自在に扱えるエンジニアを目指しましょう!





