pandasの使い方を初心者向けに解説|Pythonでデータ分析を始めよう

Pythonでデータ分析を始めると、「pandasの使い方がわからない」「DataFrameって何?」「CSVファイルをどうやって読み込むの?」と悩むことがあります。
pandas(パンダス)は、Pythonで表形式のデータを扱うためによく使われるライブラリです。Excelのようなデータを読み込んだり、検索・集計・加工したりできます。
この記事では、Python初心者向けにpandasの基本的な使い方を解説します。
pandasとは?
pandasは、Pythonで表形式のデータを効率よく扱うためのライブラリです。
たとえば、次のようなデータを扱えます。
- 売上データ
- 顧客データ
- 商品データ
- アクセスログ
- アンケート結果
- CSVファイル
- Excelファイル
Excelで行っている「並べ替え」「条件による抽出」「集計」などの作業を、Pythonのコードで自動化できます。
pandasをインストールする
pandasを使うには、まずインストールします。
pip install pandas
インストール後、Pythonファイルでpandasを読み込みます。
import pandas as pd
pdはpandasの一般的な別名です。
そのため、以降のコードでは次のように記述します。
pd.read_csv()
「pandas」と毎回書くよりも短く記述できるため、import pandas as pdという書き方が広く使われています。
pandasの基本となるDataFrame
pandasを使ううえで重要なのがDataFrame(データフレーム)です。
DataFrameは、簡単にいうと行と列を持った表形式のデータです。
たとえば、次のような表を作れます。
| 名前 | 年齢 | 売上 |
|---|---|---|
| 田中 | 25 | 100000 |
| 鈴木 | 32 | 150000 |
| 佐藤 | 28 | 120000 |
Pythonでは、次のように作成できます。
import pandas as pd
data = {
"名前": ["田中", "鈴木", "佐藤"],
"年齢": [25, 32, 28],
"売上": [100000, 150000, 120000]
}
df = pd.DataFrame(data)
print(df)
dfがDataFrameです。
pandasでCSVを読み込む方法
pandasの代表的な使い方が、CSVファイルの読み込みです。
read_csv()を使用します。
import pandas as pd
df = pd.read_csv("sales.csv")
print(df)
これだけでCSVファイルをDataFrameとして読み込めます。
たとえば、sales.csvが次のようなファイルだったとします。
商品,数量,売上
りんご,10,1000
みかん,20,1600
バナナ,15,1200
pandasで読み込むと、Python上で表形式のデータとして扱えるようになります。
DataFrameの内容を確認する
データを読み込んだら、まず中身を確認します。
head()で先頭を確認する
df.head()
head()を使うと、DataFrameの先頭部分を確認できます。
大量のデータを扱う場合でも、最初からすべて表示する必要がありません。
tail()で末尾を確認する
df.tail()
tail()ではデータの末尾を確認できます。
shapeで行数と列数を確認する
df.shape
たとえば、
(1000, 5)
と表示された場合、1000行・5列のデータという意味です。
columnsで列名を確認する
df.columns
DataFrameにどのような列が存在するのかを確認できます。
pandasで特定の列を取り出す
DataFrameから特定の列だけを取り出すこともできます。
df["売上"]
「売上」列だけを取り出す例です。
複数の列を取り出す場合は、次のように書きます。
df[["商品", "売上"]]
必要な列だけを選択できるので、データ分析では非常によく使います。
pandasで行を条件検索する
pandasでは、条件に一致する行だけを取り出せます。
たとえば、売上が1,000円以上の商品を抽出します。
df[df["売上"] >= 1000]
年齢が30歳以上の人だけを抽出する場合は、次のようになります。
df[df["年齢"] >= 30]
このような条件によるデータ抽出は、pandasの基本的な使い方の一つです。
複数の条件でデータを抽出する
複数の条件を組み合わせることもできます。
たとえば、年齢が25歳以上で、売上が10万円以上のデータを抽出します。
df[(df["年齢"] >= 25) & (df["売上"] >= 100000)]
「または」という条件にしたい場合は|を使用します。
df[(df["年齢"] < 25) | (df["売上"] >= 150000)]
pandasでデータを並べ替える
sort_values()を使うと、データを並べ替えられます。
売上の小さい順に並べ替える場合は次のようにします。
df.sort_values("売上")
大きい順にする場合は、ascending=Falseを指定します。
df.sort_values("売上", ascending=False)
売上ランキングを作るような処理にも利用できます。
pandasでデータを集計する
pandasを使うと、データの合計や平均などを簡単に計算できます。
合計
df["売上"].sum()
平均
df["売上"].mean()
最大値
df["売上"].max()
最小値
df["売上"].min()
件数
df["売上"].count()
このような集計処理を組み合わせることで、Excelで行っていた集計作業をPythonで自動化できます。
pandasのgroupby()を使う
データ分析で特に重要なのがgroupby()です。
たとえば、商品ごとの売上合計を計算したい場合に使えます。
df.groupby("商品")["売上"].sum()
店舗ごとの売上、部署ごとの平均年齢、担当者ごとの件数など、さまざまな集計に利用できます。
pandasで欠損値を確認する
実際のデータには、空欄やデータが存在しない欠損値が含まれていることがあります。
欠損値の確認にはisnull()を使います。
df.isnull()
列ごとの欠損数を確認するなら、次のように書けます。
df.isnull().sum()
データ分析では、欠損値をどのように処理するかが重要になります。
pandasで欠損値を削除する
欠損値を含む行を削除する場合はdropna()を使います。
df.dropna()
ただし、欠損値があるからといって必ず削除すればよいわけではありません。
データの意味を確認したうえで、削除するのか、別の値で補完するのかを判断する必要があります。
pandasで新しい列を追加する
DataFrameには新しい列を追加できます。
たとえば、売上から税込価格を計算する例です。
df["税込売上"] = df["売上"] * 1.1
既存の列を利用して新しいデータを作成できるため、データ加工にも便利です。
pandasでCSVに保存する
加工したDataFrameをCSVファイルとして保存する場合は、to_csv()を使います。
df.to_csv("result.csv", index=False)
index=Falseは、DataFrameのインデックスをCSVに保存しないための指定です。
pandasでExcelファイルを扱う
pandasはCSVだけでなくExcelファイルも扱えます。
Excelファイルを読み込むにはread_excel()を使用します。
df = pd.read_excel("sales.xlsx")
Excelファイルに保存する場合は、to_excel()を使います。
df.to_excel("result.xlsx", index=False)
Excelで行っている定型的な集計・加工業務をPythonで自動化するときにも、pandasは役立ちます。
pandasでよく使うメソッド
pandasには非常に多くの機能がありますが、最初からすべて覚える必要はありません。
| メソッド・機能 | 用途 |
|---|---|
head() |
先頭のデータを確認 |
tail() |
末尾のデータを確認 |
shape |
行数・列数を確認 |
columns |
列名を確認 |
read_csv() |
CSVを読み込む |
read_excel() |
Excelを読み込む |
sort_values() |
データを並べ替える |
groupby() |
グループごとに集計する |
isnull() |
欠損値を確認する |
dropna() |
欠損値を含むデータを削除する |
to_csv() |
CSVとして保存する |
to_excel() |
Excelとして保存する |
pandasは暗記する必要がある?
pandasを使い始めると、たくさんのメソッドや書き方を覚えなければならないように感じるかもしれません。
しかし、pandasの機能をすべて暗記する必要はありません。
実際のプログラミングでは、必要になったときに公式ドキュメントや検索結果を確認しながらコードを書くことも一般的です。
最初は、次のような基本操作を実際にコードを書きながら覚えるとよいでしょう。
- CSVを読み込む
- データを確認する
- 列を取り出す
- 条件でデータを絞る
- 並べ替える
- 集計する
- CSVに保存する
pandasを使うと何ができる?
pandasを利用すると、単純なデータ操作だけでなく、実務的なデータ分析にもつなげられます。
- 大量のCSVデータを処理する
- Excel作業を自動化する
- 売上データを集計する
- 顧客データを分析する
- アンケート結果を集計する
- ログデータを加工する
- データを条件ごとに分類する
- 統計処理の前段階となるデータ加工を行う
さらに、NumPy、Matplotlib、scikit-learnなどのライブラリと組み合わせることで、より高度なデータ分析や機械学習にも利用できます。
pandasの使い方を学ぶときのポイント
まずPythonの基本を理解する
pandasは便利なライブラリですが、Pythonの基本文法をまったく知らない状態で使いこなすのは難しいでしょう。
特に次の内容を理解しておくと、pandasを学びやすくなります。
- 変数
- リスト
- 辞書
- if文
- for文
- 関数
実際のデータを使って練習する
pandasはコードを暗記するより、実際のデータを操作したほうが理解しやすいライブラリです。
たとえば、自分で作った売上CSVを使って、次のような課題に挑戦してみましょう。
- 売上が10万円以上の商品を抽出する
- 売上の大きい順に並べる
- 商品ごとの売上を集計する
- 月ごとの売上を集計する
- 集計結果をCSVに保存する
このように「調べる → 仮説を立てる → コードを書く → 実行する」という流れで学ぶと、実際のデータ分析につながるスキルを身につけやすくなります。
関連記事
近いテーマの記事です。あわせてどうぞ。
pandasの使い方まとめ
pandasは、Pythonで表形式のデータを扱うための代表的なライブラリです。
特に重要なのは、次のような基本操作です。
read_csv()でCSVを読み込む- DataFrameでデータを扱う
- 列を指定してデータを取り出す
- 条件を指定してデータを抽出する
sort_values()で並べ替えるgroupby()で集計する- 欠損値を確認・処理する
to_csv()などで結果を保存する
最初からすべての機能を覚える必要はありません。実際にCSVなどのデータを使いながら、必要な操作を一つずつ身につけることがpandasを使いこなす近道です。
Pythonの基本文法を身につけたうえでpandasを学ぶと、単なるプログラミング学習から、実際の業務データを処理・分析するスキルへと発展させられます。
pandasの記事一覧(用途別)
pandasの使い方を、用途別に124本の記事で解説しています。調べたい操作から探してください。
入出力(ファイル読み書き)(16記事)
- DataFrameをクリップボードにコピー!to_clipboard()でデータ共有を高速化
- DataFrame・Seriesをpickleで高速保存&読み込み
- pandas DataFrameをJSONに変換する|to_jsonのorient・日本語・日付の指定方法
- pandas to_dict()の使い方|DataFrame・Seriesを辞書に変換(orient=”records”ほか7種類)
- PandasでCSV/TSVファイルを読み込む:read_csvとread_tableを徹底解説
- pandasのto_csvの使い方|CSVへの書き出し・追記(mode=’a’)・index=False・文字化け対策
- pandasのto_excelの使い方|DataFrameをExcelに書き出す(index=False・複数シート・追記)
- pandasのread_excelの使い方|sheet_name・dtype・headerの指定と先頭の0が消えるときの対処
- pandasでHDF5(.h5)を読み書きする方法|read_hdf・to_hdfの使い方とwhere・追記・圧縮
- pandasでJSONを読み込む方法|read_json()の使い方とStringIO・JSON Lines・入れ子の扱い
- Python CSV完全攻略
- PythonでExcelを扱うライブラリの選び方|openpyxlとpandasの違い、xlrd・xlwtの現状
- PythonのPandasでWebページのHTMLテーブルを簡単スクレイピングする方法
- json_normalizeとは?Python・pandasでJSONデータを表形式に変換する方法を徹底解説
- pandas-datareaderで株価・人口データを簡単取得!API連携で分析を加速
- クリップボードのデータをそのままDataFrameに!read_clipboard()活用術
抽出・選択(15記事)
- DataFrameとSeriesの先頭・末尾をサッと表示!head()とtail()を使いこなそう
- DataFrameの行番号・列番号を自在に取得するテクニック
- DataFrame・Seriesの重複データを抽出・削除する方法
- MultiIndexから任意の行・列を自在に選択・抽出する方法
- MultiIndexの操作完全ガイド:指定・追加・解除・ソート・レベル変更
- Pandas DataFrame query()メソッドで条件抽出を簡単に!使い方とサンプルコード集
- Pandas DataFrame: loc, iloc, at, iatで自由自在にデータ操作
- pandasのfilter()の使い方|列名をitems・like・regexで抽出、値で絞るときとの違い
- Pandas sample()でランダムサンプリング・抽出する方法
- Pandas select_dtypesでデータ型を絞り込み!必要な列だけをスマートに抽出・除外
- Pandasで自由自在!インデックス指定で行・列を抽出する方法
- Pandasで複数条件抽出!AND・OR・NOTを使いこなすフィルタリング術
- 条件に応じて値を置換!where()とmask()を徹底解説
- 特定の条件を満たす要素数をカウントする方法(全体・行・列ごと)
- 階層ごとの統計量・サンプル数を効率的に算出する方法
データ整形・変換(30記事)
- DataFrameでforループ処理!iterrows, itertuples, itemsを使いこなそう
- DataFrameとSeriesの値を効率的に置換する方法 replace
- DataFrameとSeriesを思い通りにソート!sort_values, sort_index徹底解説
- DataFrameの列をインデックス(行名)に設定するset_index()徹底解説
- DataFrameの行と列を入れ替える(転置)方法 Tとtranspose()
- DataFrame・Seriesが空かどうかを判定するempty属性
- DataFrame・Seriesのインデックスを振り直すreset_index()徹底解説
- DataFrame・Seriesの行をランダムにシャッフルする方法
- pandasのSeriesとDataFrameを相互変換する方法|to_frame・squeeze・列の取り出し
- Pandas DataFrameに行や列を追加する方法
- pandas DataFrameの行数・列数・サイズを取得する|shape・len・sizeの違い
- Pandas DataFrameの行・列を削除!drop()メソッドでデータを整理
- Pandas DataFrameの行・列を自在に並べ替え!reindex徹底活用ガイド
- Pandas DataFrameの行名・列名を変更する方法
- Pandas DataFrame徹底解説:構造理解から作成までをマスター
- Pandas Series map()で列の要素を置換する方法
- Pandas apply 徹底解説: 効率的なデータ操作をマスターしよう
- Pandas map 徹底解説: データ変換を効率的に
- Pandas melt 徹底解説: ワイド形式からロング形式へデータを整形
- Pandas unstack 徹底解説: 多重インデックスを列に展開してデータを再構築
- Pandasでカテゴリ変数をダミー変数に変換する方法:get_dummiesを徹底解説
- pandasのSeries・DataFrameをNumPy配列(ndarray)に変換する方法|to_numpy()と逆変換、pandas 3.0の注意点
- PandasとPythonリストを相互変換!DataFrame・Seriesを使いこなす基本
- Seriesのインデックスと値をサクッと入れ替えるswapaxes()と応用テクニック
- map, apply, applymapを使いこなしてデータ処理を効率化しよう
- pandas stackとは?DataFrameのデータを縦持ちに変換する方法をわかりやすく解説
- pandas任意順序での並び替え完全ガイド – カスタムソートからカテゴリカルソートまで
- pd.npでNumPy関数を高速活用!データ処理を最適化
- リストをDataFrameの要素として格納し、効率的に処理する方法
- 四捨五入・偶数丸め・切り捨て・切り上げを自在に操る方法
集計・グループ化(20記事)
- DataFrame・Seriesの行・列ごとの最頻値を取得するmode()メソッド
- DataFrame・Seriesを「順位付け」するrank()メソッドでランキングを生成
- Pandas & SciPyでトリム平均を算出!外れ値に強い統計量を使いこなす
- Pandas pivot 徹底解説: データをワイド形式に再構築
- Pandas pivot_table 徹底解説: 複雑なデータ集計をマスターしよう
- Pythonでデータを正規化・標準化!リスト、NumPy、Pandasでの実装を徹底解説
- Pythonのidxmaxとは?最大値のインデックスを取得する方法をわかりやすく解説
- agg()とaggregate()で複数統計量を一括算出!データ分析を効率化
- crosstab()でカテゴリ間の関係を分析!クロス集計の基本と活用
- cumsum(), cumprod(), cummax(), cummin()で系列データの変化を追跡
- cut()とqcut()で数値データを「ビン分割」!ビニング処理を徹底解説
- describe()でDataFrameの各列をサクッと要約統計量で把握
- groupby()でデータを集計し統計量を算出する方法
- median()でデータの中央値を瞬時に把握!歪んだ分布の傾向を掴む
- nlargest()とnsmallest()でトップN個のデータを見つける
- pandas transformとは?使い方をわかりやすく解説
- pivot_table()で複雑なクロス集計も自由自在!カテゴリごとの統計量を算出
- quantileとは?分位点・四分位数の求め方をpandas・NumPyで解説
- stack(), unstack(), pivot()で縦横無尽にデータを変換
- ユニークな要素の数と頻度(出現回数)をカウントする方法
結合・連結(6記事)
- Pandas DataFrameの結合を極める!merge, joinでデータ統合
- Pandas concat 徹底解説: データフレームを効率的に結合・連結
- Pandas concat()でDataFrame・Seriesを自由自在に連結!データ結合の基本
- Pandas join 徹底解説: インデックスを使ったデータ結合を極める
- Pandas merge 徹底解説: 複数データフレームを効率的に結合
- Pandas結合メソッド徹底比較: join vs merge vs concat パフォーマンス解析
欠損値の扱い(7記事)
- NaNの除外・置換・抽出をマスターしてデータ分析の質を向上
- 欠損値NaN, None, pd.NAを理解してデータ前処理をマスターしよう
- 欠損値NaNの判定と個数カウントをマスターしてデータを見える化しよう
- 欠損値NaNを前後の値で賢く埋めるinterpolateメソッド徹底解説
- 欠損値NaNを含む行・列をきれいに削除!dropna徹底解説
- 欠損値NaNを含む行・列を特定・抽出する方法
- 欠損値NaNを賢く埋める!fillnaでデータクレンジング
文字列操作(7記事)
- str.slice()でテキストの任意部分を高速抽出
- 区切り文字・正規表現で文字列を分割して複数列に分ける方法 str.split()
- 文字列⇔数値の相互変換と書式変更を徹底解説
- 文字列を含む行を効率的に抽出する方法(完全一致・部分一致)
- 正規表現でテキストから情報を抽出して新列を生成する
- 置換・空白削除・大文字小文字変換を極める!strアクセサ徹底解説
- 複数の列の文字列を結合して新しい列を生成する方法
時系列データ(12記事)
- pandasのrollingの使い方|移動平均の出し方とwindow・min_periods・centerの違い
- Pandas shiftでデータを行列方向にずらす!時系列分析に必須の操作
- pandasのfreq(頻度)の指定方法|date_rangeのエイリアス一覧とpandas 3の変更点(ME・h・min)
- pandasのpct_change()とdiff()の使い方|変化率・前月比・差分の計算
- pandas to_datetime()の使い方|文字列を日付型に変換・年月日を抽出する方法
- Pandasで時系列データから時刻を指定して行を抽出!超便利な方法を解説
- Pandasで時系列データのOHLC(四本値)を効率的に算出・ダウンサンプリング
- Pandasで時系列データのタイムゾーンを完璧に処理!tz_localizeとtz_convert徹底解説
- Pandasで時系列データを効率的にリサンプリング!resampleとasfreqを徹底解説
- Pandasで時系列データを扱う基礎:DataFrameとSeriesの活用術
- Pandasで時系列データを曜日・月・年ごとに集計する方法
- Pandasとmplfinanceでローソク足チャートを作成する方法
可視化(4記事)
- Pandas plot()でグラフ作成・データ可視化する方法
- Pandasで相関係数を計算してヒートマップで可視化する方法
- PandasとSeabornでヒートマップを簡単作成!データ相関とパターンを可視化
- PandasとSeabornでペアプロット図を簡単作成!データ関係性を一目で把握
設定・トラブル対応(7記事)
- NumPy/Pandasの ValueError: The truth value … is ambiguous を徹底解決
- Pandas DataFrameの「ビュー」と「コピー」を徹底解説!意図しないデータ変更を防ぐには?
- Pandas オプション設定の確認・変更方法を徹底解説!より快適なデータ分析へ
- Pandas 表示設定変更の完全ガイド:小数点、有効数字、行・列数を自在に操る
- pandasのバージョン確認方法|pd.__version__・pip show・show_versions()の使い分け
- SettingWithCopyWarningの対処法!安全なデータ操作で分析の落とし穴回避
- dtypeとは?Python・NumPy・pandasでの確認方法とastype()での変更方法
あわせて「NumPyの使い方」もご覧ください。


