Pythonでデータ分析を始めると、CSVファイルだけでなく、Excelファイルを読み込みたい場面もよくあります。
たとえば、次のような場面です。
- 会社や学校から配布されたデータが
.xlsx形式になっている - Excelファイルの中に複数のシートがある
- 必要な列だけ読み込みたい
- 1行目にタイトルや説明文があり、表の見出しがずれている
- 読み込んだあと、日付や数値の型が合っているか確認したい
結論からいうと、Excelファイルをpandasで読み込むには、まず pd.read_excel("ファイル名.xlsx") を使います。
そのうえで、必要に応じて次のように指定します。
| やりたいこと | 使う指定 |
|---|---|
| 複数シートから特定のシートを読み込みたい | sheet_name |
| 必要な列だけ読み込みたい | usecols |
| 見出し行がずれている | header |
| 表の上に説明行がある | skiprows |
| 特定の列をインデックスにしたい | index_col |
この記事では、Google Colabで手元のExcelファイルをアップロードして読み込む方法にも軽く触れつつ、練習用のサンプルExcelファイルを作りながら、read_excel() の基本、sheet_name・usecols・header・skiprows の使いどころ、読み込み後に確認すべきポイントまでを初心者向けに整理します。
- この記事でわかること
- Excelファイルを読み込んだ後の流れ
- read_excel()とは?
- Google Colabで自分のExcelファイルを読み込む場合
- 練習用のExcelファイルを用意する
- まずは基本形でExcelファイルを読み込む
- sheet_nameで読み込むシートを指定する
- usecolsで必要な列だけ読み込む
- headerとskiprowsで見出し行のズレを調整する
- index_colは必要な場合だけ使う
- read_excel()とread_csv()の違い
- ExcelをCSVに変換してから扱ったほうがよい場合
- よくあるミスとエラー対処
- 読み込んだ後は前処理につなげる
- read_excel()で押さえるポイントを整理する
- まとめ
- 次に読みたい関連記事
- カテゴリから探す
- pandasでExcelファイルを読み込むにはどうすればよいですか?
- read_excel()とread_csv()の違いは何ですか?
- Excelの複数シートを読み込むにはどうすればよいですか?
- 特定の列だけ読み込むにはどうすればよいですか?
- 1行目が見出しではないExcelはどう読み込めばよいですか?
- 列名を自分で付けたい場合はどうすればよいですか?
- openpyxlが必要というエラーが出たらどうすればよいですか?
- 読み込んだExcelの日付や数値の型がおかしいときはどうすればよいですか?
- Excelに保存するにはto_excel()を使えばよいですか?
- ExcelはCSVに変換してから扱ったほうがよいですか?
この記事でわかること
この記事では、次の内容を扱います。
- Google Colabで手元のExcelファイルをアップロードして読み込む基本
pd.read_excel()でExcelファイルをDataFrameとして読み込む基本sheet_nameでシートを指定する方法usecolsで必要な列だけ読み込む方法header・skiprowsで見出し行や不要な説明行を調整する方法read_excel()とread_csv()の違い- 読み込んだあとに
head()・info()・describe()で確認する流れ - Excel読み込み後に、列名変更・型変換・日付変換・欠損値処理へ進む考え方
Excelファイルを読むこと自体がゴールではありません。
読み込んだ表をDataFrameとして確認し、前処理・抽出・集計・可視化へ進める状態にすることが大切です。
Excelファイルを読み込んだ後の流れ
Excelファイルの読み込みは、データ分析の最初の入口です。
ただし、read_excel() で読み込んで終わりではありません。
読み込んだ表をDataFrameとして確認し、必要に応じて列名・型・日付・欠損値を整えてから、抽出・集計・可視化へ進む流れが大切です。
学習の流れとしては、次のように考えると自然です。
- Google ColabでPythonを動かす
read_excel()でExcelファイルをDataFrameとして読み込むhead()・info()・describe()で中身を確認する- 必要に応じて列名・型・日付・欠損値を整える
- 条件抽出・集計・可視化へ進む
CSVファイルを読み込む場合は read_csv()、Excelファイルを読み込む場合は read_excel() を使います。
この記事では、ExcelファイルをDataFrameとして読み込み、分析しやすい形に整える入口までを中心に説明します。
read_excel()とは?
read_excel() は、ExcelファイルをpandasのDataFrameとして読み込むための関数です。
基本形は次のとおりです。
pd.read_excel("ファイル名.xlsx")
シンプルなExcelファイルであれば、まずはこの形で読み込めます。
ただし、実際のExcelファイルでは、次のような調整が必要になることがあります。
| 困る場面 | 使う引数 | 考え方 |
|---|---|---|
| シートが複数ある | sheet_name |
どのシートを読むか指定する |
| 列が多すぎる | usecols |
必要な列だけ読む |
| 1行目が見出しではない | header |
どの行を列名として使うか指定する |
| 表の上に説明行がある | skiprows |
不要な行を読み飛ばす |
| ID列を行ラベルにしたい | index_col |
特定の列をインデックスにする |
| 見出しがない表に列名を付けたい | names |
列名を自分で指定する |
初心者のうちは、最初からすべての引数を覚える必要はありません。
まずは「何に困っているか」と「どの引数で調整するか」を対応させて理解しましょう。
なお、names は列名を自分で付けたいときに使える引数ですが、初心者のうちはまず header で見出し行を正しく読み込む方法を優先すると理解しやすいです。
Google Colabで自分のExcelファイルを読み込む場合
自分のパソコンにあるExcelファイルをGoogle Colabで読み込みたい場合は、まずファイルをアップロードします。
なお、この章の from google.colab import files は、Google Colabで実行する場合の方法です。ローカルのJupyter Notebookを使っている場合は、ExcelファイルをNotebookと同じフォルダに置いて読み込めば大丈夫です。
※この章は、自分のパソコンにあるExcelファイルをアップロードして読み込む場合の手順です。記事内で作成するサンプルExcelを使う場合は、この章のコードは実行せず、次の「練習用のExcelファイルを用意する」章から実行してください。
次のコードを実行すると、ファイル選択ボタンが表示されます。
読み込みたい .xlsx ファイルを選んでアップロードしてください。
from google.colab import files
uploaded = files.upload()
アップロードできたら、ファイル名を指定して read_excel() で読み込みます。
たとえば、アップロードしたファイル名が sales_sample.xlsx の場合は、次のように書きます。
import pandas as pd
df = pd.read_excel("sales_sample.xlsx")
df.head()
この記事では、読者が同じコードをそのまま試せるように、次の章で練習用のExcelファイルを作成してから読み込みます。
すでに自分のExcelファイルがある場合は、このあとのサンプル作成部分を飛ばして、自分のファイル名に置き換えて進めても大丈夫です。
練習用のExcelファイルを用意する
ここでは、記事内で同じ結果を再現できるように、練習用のExcelファイルを作成します。
このコードは「Excelファイルを用意するための準備」です。
自分のExcelファイルを使う場合は、この章を飛ばして、ファイル名だけ自分のものに置き換えて進めてください。
サンプルは、sheet_name・header・skiprows を説明できる最小限の内容にしています。
なお、Excelファイルの作成や読み込みでは、環境によって openpyxl が必要になることがあります。
Google Colabではそのまま使えることが多いですが、エラーが出た場合は後半の「openpyxlが必要というエラーが出る」を確認してください。
import pandas as pd
# 練習用の売上データ
sales_df = pd.DataFrame({
"売上日": ["2025-04-01", "2025-04-02", "2025-04-03"],
"店舗": ["東京店", "大阪店", "東京店"],
"商品": ["ノートPC", "マウス", "キーボード"],
"売上金額": [120000, 3000, 8000],
"数量": [1, 2, 1]
})
# 複数シートの例に使う商品マスタ
master_df = pd.DataFrame({
"商品": ["ノートPC", "マウス", "キーボード"],
"カテゴリ": ["PC", "周辺機器", "周辺機器"]
})
file_path = "sales_sample.xlsx"
# 練習用のExcelファイルを作成
with pd.ExcelWriter(file_path, engine="openpyxl") as writer:
sales_df.to_excel(writer, sheet_name="売上データ", index=False)
master_df.to_excel(writer, sheet_name="商品マスタ", index=False)
# 説明行が上にあるExcelを再現するため、3行目から表を書き込む
sales_df.to_excel(writer, sheet_name="説明行あり", index=False, startrow=2)
ws = writer.sheets["説明行あり"]
ws["A1"] = "2025年4月 売上レポート"
ws["A2"] = "※この行は説明行です。"
file_path
'sales_sample.xlsx'
まずは基本形でExcelファイルを読み込む
一番シンプルな読み込み方は、pd.read_excel() にExcelファイル名を指定する方法です。
次のコードでは、Excelファイルの先頭シートをDataFrameとして読み込みます。
df = pd.read_excel("sales_sample.xlsx")
df
| 売上日 | 店舗 | 商品 | 売上金額 | 数量 | |
|---|---|---|---|---|---|
| 0 | 2025-04-01 | 東京店 | ノートPC | 120000 | 1 |
| 1 | 2025-04-02 | 大阪店 | マウス | 3000 | 2 |
| 2 | 2025-04-03 | 東京店 | キーボード | 8000 | 1 |
Excelファイルを読み込むと、pandasではDataFrameとして扱えます。
ここで大切なのは、読み込んで終わりにしないことです。
読み込んだ直後は、まず次の3つを確認しましょう。
| 確認したいこと | 使うメソッド | 見るポイント |
|---|---|---|
| 先頭の数行 | head() |
想定した表になっているか |
| 列名・型・欠損値 | info() |
日付や数値の型が合っているか |
| 数値列の統計量 | describe() |
極端な値がないか |
Excelでは見た目が整っていても、pandasで読み込むと型や列名が想定と違うことがあります。
そのため、読み込み後の確認はとても重要です。
df.head()
| 売上日 | 店舗 | 商品 | 売上金額 | 数量 | |
|---|---|---|---|---|---|
| 0 | 2025-04-01 | 東京店 | ノートPC | 120000 | 1 |
| 1 | 2025-04-02 | 大阪店 | マウス | 3000 | 2 |
| 2 | 2025-04-03 | 東京店 | キーボード | 8000 | 1 |
df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 3 entries, 0 to 2 Data columns (total 5 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 売上日 3 non-null object 1 店舗 3 non-null object 2 商品 3 non-null object 3 売上金額 3 non-null int64 4 数量 3 non-null int64 dtypes: int64(2), object(3) memory usage: 252.0+ bytes
df.describe()
| 売上金額 | 数量 | |
|---|---|---|
| count | 3.000000 | 3.000000 |
| mean | 43666.666667 | 1.333333 |
| std | 66153.861061 | 0.577350 |
| min | 3000.000000 | 1.000000 |
| 25% | 5500.000000 | 1.000000 |
| 50% | 8000.000000 | 1.000000 |
| 75% | 64000.000000 | 1.500000 |
| max | 120000.000000 | 2.000000 |
sheet_nameで読み込むシートを指定する
Excelファイルには、複数のシートが入っていることがあります。
この場合は、sheet_name を使って、どのシートを読み込むか指定します。
sheet_name は列名ではなく、Excelの下部に表示される「シート名」を指定するための引数です。
sales = pd.read_excel("sales_sample.xlsx", sheet_name="売上データ")
sales
| 売上日 | 店舗 | 商品 | 売上金額 | 数量 | |
|---|---|---|---|---|---|
| 0 | 2025-04-01 | 東京店 | ノートPC | 120000 | 1 |
| 1 | 2025-04-02 | 大阪店 | マウス | 3000 | 2 |
| 2 | 2025-04-03 | 東京店 | キーボード | 8000 | 1 |
master = pd.read_excel("sales_sample.xlsx", sheet_name="商品マスタ")
master
| 商品 | カテゴリ | |
|---|---|---|
| 0 | ノートPC | PC |
| 1 | マウス | 周辺機器 |
| 2 | キーボード | 周辺機器 |
シート名ではなく、シート番号で指定することもできます。
ただし、初心者のうちはシート名で指定したほうが、あとから見返したときに意味がわかりやすいです。
pd.read_excel("sales_sample.xlsx", sheet_name=0)
複数シートをまとめて読み込む方法もありますが、この記事では深入りしません。
まずは「必要なシートを1つ選んで読み込む」ことを優先しましょう。
usecolsで必要な列だけ読み込む
Excelファイルには、分析に使わない列がたくさん入っていることがあります。
必要な列だけ読み込みたい場合は、usecols を使います。
たとえば、売上日の列、店舗の列、売上金額の列だけ読み込む場合は次のように書きます。
sales_selected = pd.read_excel(
"sales_sample.xlsx",
sheet_name="売上データ",
usecols=["売上日", "店舗", "売上金額"]
)
sales_selected
| 売上日 | 店舗 | 売上金額 | |
|---|---|---|---|
| 0 | 2025-04-01 | 東京店 | 120000 |
| 1 | 2025-04-02 | 大阪店 | 3000 |
| 2 | 2025-04-03 | 東京店 | 8000 |
usecols は「列を絞る」ための指定です。
行を絞り込むための指定ではありません。
読み込んだあとに「東京店だけを見たい」「売上金額が1万円以上だけを見たい」という場合は、read_excel() ではなく、DataFrameの条件抽出で行います。
headerとskiprowsで見出し行のズレを調整する
Excelファイルでは、1行目にタイトルや説明文があり、実際の表が2行目以降から始まることがあります。
たとえば、次のようなExcelです。
| Excel上の行 | 内容 |
|---|---|
| 1行目 | 2025年4月 売上レポート |
| 2行目 | ※この行は説明行です。読み込み時には飛ばします。 |
| 3行目 | 売上日、店舗、商品、売上金額、数量 |
| 4行目以降 | 実際のデータ |
このようなファイルをそのまま読むと、表の列名が正しく読み込まれないことがあります。
まずは、説明行ありのシートをそのまま確認してみます。
raw = pd.read_excel("sales_sample.xlsx", sheet_name="説明行あり", header=None)
raw.head(7)
| 0 | 1 | 2 | 3 | 4 | |
|---|---|---|---|---|---|
| 0 | 2025年4月 売上レポート | NaN | NaN | NaN | NaN |
| 1 | ※この行は説明行です。 | NaN | NaN | NaN | NaN |
| 2 | 売上日 | 店舗 | 商品 | 売上金額 | 数量 |
| 3 | 2025-04-01 | 東京店 | ノートPC | 120000 | 1 |
| 4 | 2025-04-02 | 大阪店 | マウス | 3000 | 2 |
| 5 | 2025-04-03 | 東京店 | キーボード | 8000 | 1 |
上のように、表の前にタイトル行や説明行がある場合は、header または skiprows で調整します。
headerで「列名として使う行」を指定する
header=2 と指定すると、0から数えて3行目を列名として使います。
df_header = pd.read_excel(
"sales_sample.xlsx",
sheet_name="説明行あり",
header=2
)
df_header
| 売上日 | 店舗 | 商品 | 売上金額 | 数量 | |
|---|---|---|---|---|---|
| 0 | 2025-04-01 | 東京店 | ノートPC | 120000 | 1 |
| 1 | 2025-04-02 | 大阪店 | マウス | 3000 | 2 |
| 2 | 2025-04-03 | 東京店 | キーボード | 8000 | 1 |
skiprowsで「読み飛ばす行」を指定する
同じ例では、先頭の2行を読み飛ばすために skiprows=2 と書くこともできます。
df_skiprows = pd.read_excel(
"sales_sample.xlsx",
sheet_name="説明行あり",
skiprows=2
)
df_skiprows
| 売上日 | 店舗 | 商品 | 売上金額 | 数量 | |
|---|---|---|---|---|---|
| 0 | 2025-04-01 | 東京店 | ノートPC | 120000 | 1 |
| 1 | 2025-04-02 | 大阪店 | マウス | 3000 | 2 |
| 2 | 2025-04-03 | 東京店 | キーボード | 8000 | 1 |
header と skiprows は似ていますが、考え方が少し違います。
| 指定 | 役割 | 使いやすい場面 |
|---|---|---|
header |
どの行を列名として使うか指定する | 見出し行が何行目かはっきりしている |
skiprows |
指定した行を読み飛ばす | 表の上に説明行やメモがある |
初心者のうちは、「見出し行を指定したいなら header」「不要な行を飛ばしたいなら skiprows」と考えると理解しやすいです。
処理前後のイメージは次のとおりです。
| 状態 | 列名の見え方 | データとして使いやすいか |
|---|---|---|
| 説明行をそのまま読む | タイトルや説明文が列名・データに混ざる | 使いにくい |
header=2 または skiprows=2 を指定する |
売上日・店舗・商品 などが列名になる |
使いやすい |
index_colは必要な場合だけ使う
index_col は、特定の列をDataFrameのインデックスとして使うための引数です。
たとえば、売上日をインデックスにしたい場合は次のように書けます。
sales_index = pd.read_excel(
"sales_sample.xlsx",
sheet_name="売上データ",
index_col="売上日"
)
sales_index
| 店舗 | 商品 | 売上金額 | 数量 | |
|---|---|---|---|---|
| 売上日 | ||||
| 2025-04-01 | 東京店 | ノートPC | 120000 | 1 |
| 2025-04-02 | 大阪店 | マウス | 3000 | 2 |
| 2025-04-03 | 東京店 | キーボード | 8000 | 1 |
ただし、初心者のうちは index_col を無理に使う必要はありません。
普通の列として残しておいたほうが、あとから to_datetime() で日付型に変換したり、条件抽出したりしやすいことも多いです。
| 状況 | おすすめ |
|---|---|
| まずDataFrameの中身を確認したい | index_col は指定しない |
| IDや日付を行ラベルとして使いたい理由がある | index_col を検討する |
| インデックスにして迷った | reset_index() で列に戻す |
インデックスにした列を戻したい場合は、reset_index() が使えます。
sales_index.reset_index()
| 売上日 | 店舗 | 商品 | 売上金額 | 数量 | |
|---|---|---|---|---|---|
| 0 | 2025-04-01 | 東京店 | ノートPC | 120000 | 1 |
| 1 | 2025-04-02 | 大阪店 | マウス | 3000 | 2 |
| 2 | 2025-04-03 | 東京店 | キーボード | 8000 | 1 |
read_excel()とread_csv()の違い
pandasで外部ファイルを読み込む代表的な関数に、read_excel() と read_csv() があります。
どちらもDataFrameを作るための関数ですが、対象ファイルが違います。
| 比較項目 | read_excel() |
read_csv() |
|---|---|---|
| 対象ファイル | Excelファイル | CSVファイル |
| 代表的な拡張子 | .xlsx, .xls |
.csv |
| 複数シート | 扱える | 基本的にない |
| よく使う引数 | sheet_name, usecols, header, skiprows |
encoding, sep, usecols, header |
| 使う場面 | Excelで配布された表を読む | CSVとして保存されたデータを読む |
CSVファイルを読み込む場合は、pd.read_csv() を使います。
Excelファイルを読み込む場合は、pd.read_excel() を使います。
ここを混同すると、ファイルがうまく読めない原因になります。
ExcelをCSVに変換してから扱ったほうがよい場合
Excelファイルをpandasで読み込んだあと、毎回同じデータを分析するなら、CSVに変換して保存しておくと扱いやすくなります。
Excelは、複数シート、装飾、結合セル、説明行などを含められるため、人が見る資料としては便利です。
一方で、pandasで分析するデータとしては、1つの表に整理されたCSVのほうがシンプルです。
おすすめの流れは次のとおりです。
read_excel()でExcelファイルを読み込むhead()・info()で中身を確認する- 必要なシート・列・見出し行を整える
- 分析しやすいDataFrameになったらCSVとして保存する
- 次回以降は
read_csv()で読み込む
判断基準を整理すると、次のようになります。
| 状況 | おすすめ |
|---|---|
| Excelの中身を初めて確認する | read_excel() |
| 複数シートから必要な表を選びたい | read_excel() |
| 毎回同じ整った表を分析する | CSVに変換して read_csv() |
| 装飾や結合セルが多いExcel | 必要な表だけ読み込み、CSV化を検討する |
| 人に配る資料として使う | Excelのまま |
| pandasで繰り返し分析する | CSVのほうが扱いやすい |
ただし、この記事の主役はあくまで read_excel() です。
CSV保存の細かい設定には深入りせず、「読み込んで整えたDataFrameを、必要に応じてCSVに保存できる」と理解しておけば十分です。
df = pd.read_excel("sales_sample.xlsx", sheet_name="売上データ")
# 分析しやすい形になったDataFrameをCSVとして保存する
df.to_csv("sales_sample.csv", index=False)
保存したCSVは、次回以降 read_csv() で読み込めます。
同じ整った表を繰り返し分析する場合は、この形にしておくと扱いやすくなります。
df_csv = pd.read_csv("sales_sample.csv")
df_csv.head()
| 売上日 | 店舗 | 商品 | 売上金額 | 数量 | |
|---|---|---|---|---|---|
| 0 | 2025-04-01 | 東京店 | ノートPC | 120000 | 1 |
| 1 | 2025-04-02 | 大阪店 | マウス | 3000 | 2 |
| 2 | 2025-04-03 | 東京店 | キーボード | 8000 | 1 |
よくあるミスとエラー対処
Excelファイルの読み込みでは、初心者がつまずきやすいポイントがあります。
read_csv()でExcelファイルを読もうとしてしまう
Excelファイルは、基本的に read_csv() では読み込みません。
pd.read_csv("sales_sample.xlsx")
このように書くと、Excelファイルの形式とCSVの形式が違うため、うまく読み込めません。
Excelファイルには read_excel() を使いましょう。
sheet_nameを列名だと思ってしまう
sheet_name は、Excelのシート名を指定するための引数です。
読み込む列を指定したい場合は、usecols を使います。
usecolsで行を絞ろうとしてしまう
usecols は列を絞るための引数です。
行を絞りたい場合は、読み込んだあとに条件抽出を使います。
openpyxlが必要というエラーが出る
環境によっては、Excelファイルを読み込むときに openpyxl が必要になることがあります。
Google Colabでは使えることが多いですが、エラーが出る場合は次のようにインストールします。
# openpyxlが必要というエラーが出る場合のみ実行します
# Google Colabでは、すでに使える場合もあります
# !pip install openpyxl
このエラーは、pandasのコードの書き方が間違っているというより、Excelを読み込むためのエンジンが環境に不足している場合に起きます。
読み込んだ後は前処理につなげる
read_excel() は、ExcelファイルをDataFrameにする入口です。
読み込んだあとは、データ分析しやすい形になっているかを確認します。
たとえば、次のような流れです。
| 確認・前処理 | 使うメソッド | 目的 |
|---|---|---|
| 先頭を確認 | head() |
読み込み結果を見る |
| 型・欠損値を確認 | info() |
日付・数値・欠損を確認する |
| 列名を整える | rename() |
日本語列名や長い列名を扱いやすくする |
| 日付型に変換 | to_datetime() |
日付として扱えるようにする |
| 数値・文字列に変換 | astype() |
分析に合う型にする |
| 欠損値を確認・処理 | isnull()・fillna() |
空欄を把握して補う |
次の例では、Excelから読み込んだ売上データの列名を少し短くし、売上日を日付型に変換します。
sales_clean = pd.read_excel("sales_sample.xlsx", sheet_name="売上データ")
# 列名を扱いやすくする
sales_clean = sales_clean.rename(columns={
"売上金額": "金額"
})
# 売上日を日付型に変換する
sales_clean["売上日"] = pd.to_datetime(sales_clean["売上日"])
sales_clean.head()
| 売上日 | 店舗 | 商品 | 金額 | 数量 | |
|---|---|---|---|---|---|
| 0 | 2025-04-01 | 東京店 | ノートPC | 120000 | 1 |
| 1 | 2025-04-02 | 大阪店 | マウス | 3000 | 2 |
| 2 | 2025-04-03 | 東京店 | キーボード | 8000 | 1 |
sales_clean.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 3 entries, 0 to 2 Data columns (total 5 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 売上日 3 non-null datetime64[ns] 1 店舗 3 non-null object 2 商品 3 non-null object 3 金額 3 non-null int64 4 数量 3 non-null int64 dtypes: datetime64[ns](1), int64(2), object(2) memory usage: 252.0+ bytes
このように、Excelファイルを読み込んだら、次はDataFrameの確認と前処理に進みます。
read_excel() の役割は、ExcelをDataFrameに変えることです。
そのあとの列名変更、型変換、日付変換、欠損値処理は、それぞれ別の前処理として考えると整理しやすくなります。
read_excel()で押さえるポイントを整理する
ここまでで、ExcelファイルをDataFrameとして読み込む基本を確認しました。
read_excel() では、まず基本形で読み込み、必要に応じて引数を追加していくと迷いにくくなります。
| 目的 | 使うもの |
|---|---|
| Excelファイルを読み込む | pd.read_excel() |
| シートを指定する | sheet_name |
| 必要な列だけ読む | usecols |
| 見出し行を調整する | header |
| 不要な説明行を飛ばす | skiprows |
| 行ラベルにする列を指定する | index_col |
| 列名を自分で付ける | names |
最初からすべての引数を覚える必要はありません。
まずは pd.read_excel("ファイル名.xlsx") で読み込み、head() と info() で確認し、必要なところだけ調整していきましょう。
読み込んだ後は、列名変更・型変換・日付変換・欠損値処理などの前処理を行い、条件抽出・集計・可視化へ進みます。
まとめ
この記事では、pandasの read_excel() を使ってExcelファイルを読み込む方法を解説しました。
重要なポイントを整理します。
- Excelファイルを読み込むには
pd.read_excel("ファイル名.xlsx")を使う - 複数シートから読み込む場合は
sheet_nameを使う - 必要な列だけ読み込む場合は
usecolsを使う - 見出し行がずれている場合は
headerを使う - 表の上に説明行がある場合は
skiprowsを使う index_colは必要な場合だけ使う- CSVファイルは
read_csv()、Excelファイルはread_excel()と使い分ける - 読み込んだあとは
head()・info()・describe()で確認する - その後、列名変更・型変換・日付変換・欠損値処理へ進む
- 毎回同じ整った表を分析するなら、必要に応じてCSVに保存しておくと、次回以降は
read_csv()で扱いやすい
まずは、シンプルなExcelファイルを read_excel() で読み込み、head() と info() で確認するところから始めるのがおすすめです。
次に読みたい関連記事
Excelファイルを読み込んだあとは、DataFrameの確認や前処理へ進むと理解が深まります。
Google Colab CSV 読み込み&保存入門
CSVファイルの読み込みやGoogle Drive連携を確認したい場合におすすめです。Pandas DataFrame入門
読み込んだ表がDataFrameとしてどう扱われるかを理解したい場合に役立ちます。Pandas head()の使い方
読み込んだデータの先頭を確認する基本操作を学べます。Pandas info()とdescribe()の違い
型・欠損値・統計量の確認方法を整理できます。pandas rename()の使い方
Excelから読み込んだ列名を整えたいときに役立ちます。pandas astype()の使い方
数値や文字列の型を整えたいときに使います。pandas to_datetime()の使い方
Excelの日付列を日付型として扱いたいときにおすすめです。pandas fillna()の使い方
Excelの空欄や欠損値を処理したいときに役立ちます。pandas reset_index()の使い方
index_colで指定した列を戻したいときに参考になります。Pandas concat完全ガイド
複数のファイルや複数のDataFrameを結合したい場合に役立ちます。
pandasでExcelファイルを読み込むにはどうすればよいですか?
pd.read_excel("ファイル名.xlsx") を使います。
まずはこの基本形で読み込み、必要に応じて sheet_name・usecols・header・skiprows を指定します。
read_excel()とread_csv()の違いは何ですか?
read_excel() はExcelファイルを読み込む関数で、主に .xlsx や .xls を扱います。read_csv() はCSVファイルを読み込む関数で、主に .csv を扱います。
Excelファイルを読む場合は read_excel()、CSVファイルを読む場合は read_csv() と使い分けます。
Excelの複数シートを読み込むにはどうすればよいですか?
特定のシートを読み込む場合は、sheet_name を使います。pd.read_excel("sales_sample.xlsx", sheet_name="売上データ")
複数シートをまとめて読み込む方法もありますが、初心者のうちはまず必要なシートを1つずつ指定して読むのがおすすめです。
特定の列だけ読み込むにはどうすればよいですか?
usecols を使います。pd.read_excel("sales_sample.xlsx", usecols=["売上日", "店舗", "売上金額"])
usecols は列を絞るための指定です。
行を絞りたい場合は、読み込んだあとに条件抽出を使います。
1行目が見出しではないExcelはどう読み込めばよいですか?
見出し行が何行目にあるか分かっている場合は、header を使います。
たとえば、3行目を見出しにしたい場合は header=2 と指定します。pd.read_excel("sales_sample.xlsx", header=2)
先頭の説明行を読み飛ばしたい場合は、skiprows を使うこともあります。
列名を自分で付けたい場合はどうすればよいですか?
Excelに見出し行がない場合や、読み込み時に列名を自分で指定したい場合は、names を使う方法があります。pd.read_excel("sales_sample.xlsx", header=None, names=["売上日", "店舗","商品", "売上金額", "数量"])
ただし、初心者のうちは、まず header で見出し行を正しく読み込む方法を覚えるのがおすすめです。
読み込んだあとに列名を整えたい場合は、rename() を使うと流れがわかりやすくなります。
openpyxlが必要というエラーが出たらどうすればよいですか?
環境にExcel読み込み用のエンジンが不足している可能性があります。
Google Colabでは最初から使えることも多いですが、ローカル環境や一部の環境でエラーが出る場合は、必要に応じて次のようにインストールします。!pip install openpyxl
インストール後は、ランタイムやノートブックを再実行すると読み込めることがあります。
読み込んだExcelの日付や数値の型がおかしいときはどうすればよいですか?
まず info() で列の型を確認します。
日付列が文字列として読み込まれている場合は pd.to_datetime()、数値や文字列の型を整えたい場合は astype() を使います。
Excelに保存するにはto_excel()を使えばよいですか?
はい。DataFrameをExcelファイルとして保存する場合は to_excel() を使います。
ただし、この記事の中心は読み込み用の read_excel() です。
保存については、まず「読み込み」と「前処理」の流れに慣れてから学ぶと理解しやすいです。
ExcelはCSVに変換してから扱ったほうがよいですか?
繰り返し同じ表を分析するなら、CSVに変換しておくと扱いやすいことが多いです。
Excelは人が見る資料として便利ですが、pandasで繰り返し分析するなら、1つの表に整理されたCSVのほうがシンプルです。
ただし、複数シートから必要な表を選ぶ段階では read_excel() が便利です。
まず read_excel() で読み込み、必要なシート・列・見出し行を整えたあと、必要に応じて to_csv() で保存するとよいです。
コメント