Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Pandas for Beginners: A Practical Guide to Data Analysis in Python

2026年10月06日に「Dev.to」が公開したITニュース「Pandas for Beginners: A Practical Guide to Data Analysis in Python」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

PythonのPandasはデータ分析の必須ツールだ。Excelのような表形式データ(DataFrame)を扱い、ファイルの読み込みから、データの確認、欠損値処理、抽出、集計、結合まで、データ操作の一連の流れを実践的に解説する。

ITニュース解説

PandasはPythonでデータ分析を行うための強力なライブラリである。主に、データを表形式で扱うDataFrameと、単一の列を扱うSeriesという二つの主要なデータ構造を提供する。DataFrameはExcelのシートのように行と列でデータを管理し、ほとんどのデータ分析作業で中心となる。

Pandasの利用を開始するには、まずコマンドラインで「pip install pandas」を実行してインストールし、Pythonスクリプト内で「import pandas as pd」と記述してインポートする。慣例として、DataFrameを格納する変数は「df」と名付けられることが多い。

DataFrameを作成する方法の一つは、Pythonの辞書を使うことである。辞書の各キーがDataFrameの列名となり、対応するリストがその列の値となる。辞書を作成する際は、各キーと値のペアの後にカンマを付け忘れないように注意が必要である。これは初心者がよく遭遇する構文エラーの原因となる。

実際のデータ分析では、ファイルからデータを読み込むことがほとんどである。PandasはCSVファイルを読み込む「pd.read_csv」や、Excelファイルを読み込む「pd.read_excel」といった機能を提供する。もしCSVファイルで文字化けが発生した場合は、「encoding="utf-8"」オプションを試すと良い。また、列が一つにまとまってしまう場合は、「sep=";"」のように区切り文字を明示的に指定することで解決できる場合がある。

データを読み込んだら、最初に行うべきはデータの構造を確認することである。「df.head()」で先頭の5行、「df.tail()」で末尾の5行を表示し、データの概観を把握する。「df.shape」はDataFrameが持つ行と列の数をタプル形式で返し、「df.info()」は各列の名前、データ型、欠損値以外の値の数(非ヌルカウント)を一覧表示する。特に「df.info()」は、データの型が適切か、欠損値がどのくらいあるかを確認する上で非常に重要であり、これを習慣化することが推奨される。「df.describe()」は数値列に対して、カウント、平均値、最小値、最大値などの統計情報を計算する。「df.columns」はすべての列名をリストとして取得できる。

データから特定の情報を取り出すには、列名を使って選択する方法がある。「df["customer"]」で単一の列(Series)を選択し、「df[["customer", "amount"]]」のようにリストで複数の列を指定して新しいDataFrameを作成する。行を選択する場合は「iloc」と「loc」を使う。「df.iloc[0]」はインデックス(位置)で最初の行を選び、「df.iloc[0:3]」は最初の3行を選ぶ。「df.loc[0, "amount"]」はラベル(行のインデックス値)と列名を指定して特定のセルを選ぶ。

特定の条件を満たす行だけを抽出するフィルタリングもよく使う操作である。「df[df["country"] == "Kenya"]」で特定の国の顧客データのみを抽出したり、「df[df["amount"] > 100]」で金額が100を超える注文だけを選んだりする。複数の条件を組み合わせる場合は、「&」(論理積、AND)や「|」(論理和、OR)を使用し、それぞれの条件を括弧で囲む必要がある。Pythonのキーワードである「and」や「or」をフィルタリングに使うとエラーが発生する。

実際のデータには欠損値が含まれることが多く、Pandasではこれらを「NaN」(Not a Number)と表示する。「df.isnull()」で各セルが欠損値かどうかを確認でき、「df.isnull().sum()」で列ごとの欠損値の数を集計できる。欠損値の扱いは、データの内容によって慎重に判断する必要がある。「df.dropna()」は欠損値を含む行を全て削除するが、これは情報損失につながる可能性がある。「df["amount"] = df["amount"].fillna(0)」のように、特定の列の欠損値をゼロで埋めたり、「df["amount"] = df["amount"].fillna(df["amount"].mean())」のように平均値で補完したりする方法もある。例えば、金額の欠損が「ゼロ」を意味するのか「不明」を意味するのかによって、分析結果に大きな影響を与える可能性があるため、慎重な判断が求められる。

読み込んだデータの型が適切でない場合もよくある。例えば、日付データがテキストとして扱われている場合、「df["date"] = pd.to_datetime(df["date"])」を使って日付型に変換することで、日付に基づくソートやグループ化が可能になる。また、数値が文字列として読み込まれた場合は、「df["amount"] = pd.to_numeric(df["amount"], errors="coerce")」で数値型に変換する。「errors="coerce"」オプションは、変換できない値をエラーで停止させるのではなく、NaNに置き換えるため、データ処理が中断するのを防ぐ。

DataFrameに新しい列を追加したり、既存の列を変更したりすることも簡単に行える。新しい列は「df["amount_with_tax"] = df["amount"] * 1.16」のように、既存の列を使った計算結果を新しい列名に代入することで作成できる。また、「df["is_big_order"] = df["amount"] > 150」のように条件に基づいて真偽値の列を作ることも可能である。列名を変更するには「df = df.rename(columns={"amount": "order_value"})」を使い、不要な列を削除するには「df = df.drop(columns=["amount_with_tax"])」と記述する。

データ分析で最も強力なツールの一つが「groupby」である。これはデータを特定の列の値に基づいてグループに分割し、それぞれのグループに対して集計を行う機能である。例えば、「df.groupby("country")["amount"].sum()」で国ごとの合計金額を計算できる。さらに、「df.groupby("country").agg(total=("amount", "sum"), average=("amount", "mean"), orders=("customer", "count"))」のように、「agg」メソッドを使うことで、複数の集計処理(合計、平均、件数など)を一度に実行できる。集計結果は、「sort_values(ascending=False)」を使って降順にソートすることで、上位の項目を簡単に特定できる。

複数のテーブルに分散している情報を結合する必要がある場合も多い。Pandasの「merge」関数はSQLのJOIN操作のように機能する。「df.merge(customers, on="customer", how="left")」のように、共通の列(ここでは"customer")をキーとして二つのDataFrameを結合する。「how="left"」は左側のテーブルのすべての行を保持し、一致する行があれば右側のテーブルから情報を追加する。「how="inner"」は両方のテーブルで一致する行のみを保持する。また、同じ構造を持つDataFrameを縦方向に結合して一つのDataFrameにする場合は、「pd.concat([df1, df2])」を使用する。

データには重複する行が含まれていることもあり、これらを除去することで分析の正確性を高められる。「df.duplicated().sum()」で重複している行の数を確認し、「df = df.drop_duplicates()」で重複行を削除できる。

分析結果を保存するには、「df.to_csv("clean_data.csv", index=False)」や「df.to_excel("clean_data.xlsx", index=False)」を使用する。「index=False」オプションは、DataFrameの行番号(インデックス)が余分な列としてファイルに書き出されるのを防ぐ。

典型的なデータ分析のワークフローは、データの読み込み、検査、クリーニング、変換、要約、そして結果のエクスポートや可視化という順序で進む。

Pandasを使う上で避けるべき一般的な間違いもいくつかある。例えば、「df.dropna()」のような操作は新しいDataFrameを返すため、結果を元の変数に再代入しないと、変更が反映されないことがある。「info()」の確認を怠ると、数値がテキストとして格納されていることに気づかず、計算が意図せず壊れる可能性がある。フィルタリングで「and」や「or」のキーワードを使うのではなく、「&」や「|」と括弧を正しく使用することも重要である。欠損値を盲目的に埋めるのではなく、その欠損が何を意味するのかを理解してから適切な処理を選択する必要がある。Pandasは列全体に対する操作が非常に高速であるため、行を一つずつ処理するPythonのforループを使うのは避けるべきである。

Pandasは覚えることが多いと感じるかもしれないが、データの読み込み、検査、クリーニング、フィルタリング、グループ化、結合といった基本的な操作を習得すれば、ほとんどのデータ分析タスクに対応できる。Kaggleなどのプラットフォームや自身のデータを使ってこれらの操作を繰り返し練習することで、スキルは自然と身につく。さらに深く学ぶには、MatplotlibやSeabornによる可視化、「pivot_table」の利用、そしてより簡潔なコードを書くための「メソッドチェーン」に挑戦すると良い。

関連コンテンツ

関連IT用語

関連ITニュース