[Python] Pandasでエクセルファイルを読み込む方法

Pandasを使用してエクセルファイルを読み込むには、pandas.read_excel()関数を使用します。

この関数は、指定したファイルパスからエクセルファイルを読み込み、PandasのDataFrameとしてデータを返します。

基本的な使い方は、df = pd.read_excel('ファイルパス')です。

複数のシートがある場合は、sheet_name引数で特定のシートを指定できます。

また、headerindex_colなどのオプションで、ヘッダー行やインデックス列を指定することも可能です。

この記事でわかること
  • Pandasを使ったExcelファイルの読み込み方法
  • 複数シートのデータ処理手法
  • Excelファイルへのデータ書き込み方法
  • データのフィルタリングと変換技術
  • Excelデータの可視化手法

目次から探す

Pandasでエクセルファイルを扱う基本

Pandasとは

Pandasは、Pythonでデータ解析を行うための強力なライブラリです。

特に、表形式のデータを扱うのに適しており、データフレームというデータ構造を提供します。

Pandasを使用することで、データの読み込み、操作、分析が簡単に行えます。

Excelファイルの読み込みもその一環です。

Excelファイルを読み込むための準備

Excelファイルを読み込むには、まずPandasライブラリをインストールする必要があります。

以下のコマンドを使用して、Pandasをインストールできます。

pip install pandas openpyxl

openpyxlは、Excelファイルを読み書きするためのライブラリです。

これをインストールすることで、PandasがExcelファイルを扱えるようになります。

read_excel関数の基本的な使い方

Pandasでは、read_excel関数を使用してExcelファイルを読み込みます。

基本的な使い方は以下の通りです。

import pandas as pd
# Excelファイルを読み込む
df = pd.read_excel('ファイル名.xlsx')
# データフレームの内容を表示
print(df)

このコードを実行すると、指定したExcelファイルの内容がデータフレームとして読み込まれ、表示されます。

Excelファイルのパス指定方法

Excelファイルのパスは、相対パスまたは絶対パスで指定できます。

相対パスは、スクリプトが実行されているディレクトリからのパスを指します。

絶対パスは、ファイルシステムのルートからの完全なパスです。

# 相対パス
df = pd.read_excel('./data/ファイル名.xlsx')
# 絶対パス
df = pd.read_excel('C:/Users/ユーザー名/Documents/ファイル名.xlsx')

シート名の指定方法

Excelファイルには複数のシートが含まれている場合があります。

特定のシートを読み込むには、sheet_name引数を使用します。

シート名を文字列で指定するか、シートのインデックスを整数で指定できます。

# シート名を指定して読み込む
df = pd.read_excel('ファイル名.xlsx', sheet_name='シート1')
# シートのインデックスを指定して読み込む
df = pd.read_excel('ファイル名.xlsx', sheet_name=0)  # 最初のシート

読み込む範囲を指定する方法

特定の範囲のデータだけを読み込みたい場合は、usecols引数を使用して列を指定できます。

また、skiprows引数を使用して、読み込む際にスキップする行数を指定することも可能です。

# 特定の列を指定して読み込む
df = pd.read_excel('ファイル名.xlsx', usecols='A:C')  # A列からC列まで
# 特定の行をスキップして読み込む
df = pd.read_excel('ファイル名.xlsx', skiprows=2)  # 最初の2行をスキップ

これにより、必要なデータだけを効率的に読み込むことができます。

read_excel関数のオプション

特定の列だけを読み込む方法

read_excel関数では、usecols引数を使用して特定の列だけを読み込むことができます。

列は、列名や列番号で指定できます。

以下の例では、A列とC列を読み込んでいます。

import pandas as pd
# A列とC列を読み込む
df = pd.read_excel('ファイル名.xlsx', usecols='A,C')
# データフレームの内容を表示
print(df)

このようにすることで、必要なデータだけを効率的に取得できます。

ヘッダー行を指定する方法

デフォルトでは、read_excel関数は最初の行をヘッダーとして扱いますが、header引数を使用して別の行をヘッダーとして指定することができます。

以下の例では、3行目をヘッダーとして指定しています。

import pandas as pd
# 3行目をヘッダーとして読み込む
df = pd.read_excel('ファイル名.xlsx', header=2)
# データフレームの内容を表示
print(df)

これにより、データの構造に応じた柔軟な読み込みが可能になります。

インデックス列を指定する方法

データフレームのインデックスとして使用する列を指定するには、index_col引数を使用します。

以下の例では、A列をインデックスとして指定しています。

import pandas as pd
# A列をインデックスとして読み込む
df = pd.read_excel('ファイル名.xlsx', index_col=0)
# データフレームの内容を表示
print(df)

インデックスを指定することで、データの操作がより効率的になります。

データ型を指定する方法

dtype引数を使用して、各列のデータ型を指定することができます。

これにより、読み込む際にデータ型を明示的に設定できます。

以下の例では、A列を文字列型、B列を整数型として指定しています。

import pandas as pd
# データ型を指定して読み込む
df = pd.read_excel('ファイル名.xlsx', dtype={'A': str, 'B': int})
# データフレームの内容を表示
print(df)

データ型を適切に指定することで、後のデータ処理がスムーズになります。

空白セルの扱い方

空白セルの扱いは、na_filter引数を使用して制御できます。

デフォルトでは、空白セルはNaNとして扱われますが、これを無効にすることも可能です。

以下の例では、空白セルを無視して読み込んでいます。

import pandas as pd
# 空白セルを無視して読み込む
df = pd.read_excel('ファイル名.xlsx', na_filter=False)
# データフレームの内容を表示
print(df)

このオプションを使用することで、空白セルの扱いを柔軟に調整できます。

日付データの自動変換を無効にする方法

Pandasは、Excelファイル内の日付データを自動的に変換しますが、これを無効にするには、convert_date引数を使用します。

以下の例では、日付データの自動変換を無効にしています。

import pandas as pd
# 日付データの自動変換を無効にして読み込む
df = pd.read_excel('ファイル名.xlsx', convert_date=False)
# データフレームの内容を表示
print(df)

このオプションを使用することで、日付データをそのままの形式で取得できます。

複数シートの読み込み

複数シートを一度に読み込む方法

Pandasのread_excel関数を使用して、複数のシートを一度に読み込むことができます。

sheet_name引数にリストを指定することで、複数のシートを同時に読み込むことが可能です。

以下の例では、シート1とシート2を同時に読み込んでいます。

import pandas as pd
# 複数のシートを一度に読み込む
sheets = pd.read_excel('ファイル名.xlsx', sheet_name=['シート1', 'シート2'])
# 各シートのデータフレームを表示
for sheet_name, df in sheets.items():
    print(f"{sheet_name}のデータ:")
    print(df)

このようにすることで、複数のシートのデータを一度に取得できます。

シートごとに異なるデータを処理する方法

複数のシートを読み込んだ後、各シートごとに異なる処理を行うことができます。

以下の例では、シート1とシート2のデータをそれぞれ異なる方法で処理しています。

import pandas as pd
# 複数のシートを読み込む
sheets = pd.read_excel('ファイル名.xlsx', sheet_name=['シート1', 'シート2'])
# シート1のデータを処理
df1 = sheets['シート1']
df1['新しい列'] = df1['既存の列'] * 2  # 既存の列の値を2倍にする
# シート2のデータを処理
df2 = sheets['シート2']
df2 = df2.dropna()  # 空白セルを含む行を削除
# 処理結果を表示
print("シート1の処理結果:")
print(df1)
print("シート2の処理結果:")
print(df2)

このように、シートごとに異なる処理を行うことで、データの特性に応じた柔軟な分析が可能になります。

複数シートを一つのDataFrameに結合する方法

複数のシートを一つのDataFrameに結合するには、concat関数を使用します。

以下の例では、シート1とシート2のデータを縦に結合しています。

import pandas as pd
# 複数のシートを読み込む
sheets = pd.read_excel('ファイル名.xlsx', sheet_name=['シート1', 'シート2'])
# シート1とシート2を結合
combined_df = pd.concat(sheets.values(), ignore_index=True)
# 結合したデータフレームの内容を表示
print("結合したデータフレーム:")
print(combined_df)

この方法を使用することで、複数のシートのデータを一つのデータフレームにまとめて、さらに分析を行いやすくなります。

Excelファイルの書き込み

to_excel関数の基本的な使い方

Pandasでは、to_excel関数を使用してデータフレームをExcelファイルに書き込むことができます。

基本的な使い方は以下の通りです。

import pandas as pd
# サンプルデータを作成
data = {
    '列1': [1, 2, 3],
    '列2': ['A', 'B', 'C']
}
df = pd.DataFrame(data)
# データフレームをExcelファイルに書き込む
df.to_excel('出力ファイル.xlsx', index=False)
print("データフレームをExcelファイルに書き込みました。")

このコードを実行すると、指定した名前のExcelファイルが作成され、データフレームの内容が書き込まれます。

index=Falseを指定することで、インデックス列をファイルに書き込まないようにしています。

複数シートに書き込む方法

複数のシートにデータを書き込むには、ExcelWriterを使用します。

以下の例では、2つの異なるデータフレームをそれぞれ異なるシートに書き込んでいます。

import pandas as pd
# サンプルデータを作成
data1 = {
    '列1': [1, 2, 3],
    '列2': ['A', 'B', 'C']
}
data2 = {
    '列3': [4, 5, 6],
    '列4': ['D', 'E', 'F']
}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
# ExcelWriterを使用して複数シートに書き込む
with pd.ExcelWriter('複数シート出力ファイル.xlsx') as writer:
    df1.to_excel(writer, sheet_name='シート1', index=False)
    df2.to_excel(writer, sheet_name='シート2', index=False)
print("複数のシートにデータを書き込みました。")

このようにすることで、異なるデータを異なるシートに整理して書き込むことができます。

書き込み時のフォーマット指定

to_excel関数では、書き込む際にフォーマットを指定することも可能です。

xlsxwriterライブラリを使用することで、セルのフォーマットを設定できます。

以下の例では、特定の列のフォントを太字にしています。

import pandas as pd
# サンプルデータを作成
data = {
    '列1': [1, 2, 3],
    '列2': ['A', 'B', 'C']
}
df = pd.DataFrame(data)
# ExcelWriterを使用してフォーマットを指定
with pd.ExcelWriter('フォーマット付き出力ファイル.xlsx', engine='xlsxwriter') as writer:
    df.to_excel(writer, sheet_name='シート1', index=False)
    
    # ワークブックとワークシートを取得
    workbook = writer.book
    worksheet = writer.sheets['シート1']
    
    # フォーマットを定義
    bold_format = workbook.add_format({'bold': True})
    
    # 列のフォーマットを適用
    worksheet.set_column('A:A', None, bold_format)  # A列を太字にする
print("フォーマット付きでデータを書き込みました。")

このように、書き込み時にフォーマットを指定することで、見やすいExcelファイルを作成できます。

インデックスやヘッダーの書き込みを制御する方法

to_excel関数では、インデックスやヘッダーの書き込みを制御するための引数があります。

index引数をFalseに設定するとインデックスを、header引数をFalseに設定するとヘッダーをファイルに書き込まなくなります。

以下の例では、インデックスを省略して書き込んでいます。

import pandas as pd
# サンプルデータを作成
data = {
    '列1': [1, 2, 3],
    '列2': ['A', 'B', 'C']
}
df = pd.DataFrame(data)
# インデックスを省略して書き込む
df.to_excel('インデックスなし出力ファイル.xlsx', index=False, header=True)
print("インデックスを省略してデータを書き込みました。")

このように、必要に応じてインデックスやヘッダーの書き込みを制御することで、データの出力形式を柔軟に調整できます。

応用例

大規模なExcelファイルを分割して読み込む方法

大規模なExcelファイルを一度に読み込むと、メモリを大量に消費することがあります。

chunksize引数を使用することで、指定した行数ごとにデータを分割して読み込むことができます。

以下の例では、1000行ごとにデータを分割して処理しています。

import pandas as pd
# 大規模なExcelファイルを分割して読み込む
for chunk in pd.read_excel('大規模ファイル.xlsx', chunksize=1000):
    # 各チャンクの処理
    print(chunk.head())  # 各チャンクの最初の5行を表示

この方法を使用することで、大規模なデータを効率的に処理できます。

Excelファイルの特定のシートだけを更新する方法

特定のシートだけを更新するには、まずそのシートを読み込み、必要な変更を加えた後、再度書き込む必要があります。

以下の例では、シート1のデータを更新しています。

import pandas as pd
# シート1を読み込む
df = pd.read_excel('ファイル名.xlsx', sheet_name='シート1')
# データを更新
df['新しい列'] = df['既存の列'] * 2  # 既存の列の値を2倍にする
# 更新したデータを同じシートに書き込む
with pd.ExcelWriter('ファイル名.xlsx', mode='a', if_sheet_exists='replace') as writer:
    df.to_excel(writer, sheet_name='シート1', index=False)
print("シート1のデータを更新しました。")

このように、特定のシートだけを効率的に更新できます。

Excelファイルのデータをフィルタリングして読み込む方法

特定の条件に基づいてデータをフィルタリングして読み込むには、queryメソッドを使用します。

以下の例では、特定の列の値が条件を満たす行だけを読み込んでいます。

import pandas as pd
# Excelファイルを読み込む
df = pd.read_excel('ファイル名.xlsx')
# 特定の条件でフィルタリング
filtered_df = df.query('列1 > 10')  # 列1の値が10より大きい行を取得
# フィルタリングしたデータを表示
print(filtered_df)

この方法を使用することで、必要なデータだけを効率的に取得できます。

Excelファイルのデータを他の形式に変換する方法

Pandasを使用すると、Excelファイルのデータを他の形式(CSVやJSONなど)に簡単に変換できます。

以下の例では、ExcelファイルをCSV形式に変換しています。

import pandas as pd
# Excelファイルを読み込む
df = pd.read_excel('ファイル名.xlsx')
# CSV形式で書き出す
df.to_csv('出力ファイル.csv', index=False)
print("ExcelファイルをCSV形式に変換しました。")

このように、データを他の形式に変換することで、さまざまな用途に利用できます。

Excelファイルのデータを可視化する方法

PandasとMatplotlibを組み合わせることで、Excelファイルのデータを可視化することができます。

以下の例では、Excelファイルのデータを読み込み、簡単なグラフを作成しています。

import pandas as pd
import matplotlib.pyplot as plt
# Excelファイルを読み込む
df = pd.read_excel('ファイル名.xlsx')
# データを可視化
plt.figure(figsize=(10, 6))
plt.plot(df['列1'], df['列2'], marker='o')
plt.title('列1と列2の関係')
plt.xlabel('列1')
plt.ylabel('列2')
plt.grid()
plt.show()

このように、データを可視化することで、トレンドやパターンを把握しやすくなります。

よくある質問

Excelファイルが読み込めない場合の対処法は?

Excelファイルが読み込めない場合、以下の点を確認してください。

  • ファイルパスの確認: 指定したファイルパスが正しいか確認します。

相対パスや絶対パスを見直してください。

  • ファイル形式の確認: 読み込もうとしているファイルが正しいExcel形式(.xlsxや.xls)であるか確認します。
  • ライブラリのインストール: Pandasとopenpyxl(またはxlrd)が正しくインストールされているか確認します。

必要に応じて再インストールしてください。

  • ファイルの破損: Excelファイルが破損している可能性があります。

他のExcelソフトで開いてみて、正常に表示されるか確認します。

  • シート名の確認: 読み込もうとしているシート名が正しいか確認します。

シート名が間違っていると、読み込みエラーが発生します。

複数のExcelファイルを一度に読み込む方法は?

複数のExcelファイルを一度に読み込むには、globモジュールを使用してファイルパスを取得し、pd.concatを使ってデータフレームを結合します。

以下の手順で実行できます。

  1. globモジュールを使って、特定のディレクトリ内のExcelファイルを取得します。
  2. 各ファイルをpd.read_excelで読み込み、リストに格納します。
  3. pd.concatを使用して、リスト内のデータフレームを結合します。

以下はその例です。

import pandas as pd
import glob
# Excelファイルのパスを取得
file_paths = glob.glob('path/to/excel/files/*.xlsx')
# 各ファイルを読み込んでリストに格納
dataframes = [pd.read_excel(file) for file in file_paths]
# データフレームを結合
combined_df = pd.concat(dataframes, ignore_index=True)
print("複数のExcelファイルを読み込みました。")

読み込んだExcelデータを効率的に処理するには?

読み込んだExcelデータを効率的に処理するためには、以下のポイントを考慮すると良いでしょう。

  • データ型の確認: 読み込んだデータの型を確認し、必要に応じてastypeメソッドを使って適切な型に変換します。
  • 不要な列の削除: dropメソッドを使用して、分析に不要な列を削除します。
  • 欠損値の処理: fillnadropnaメソッドを使用して、欠損値を適切に処理します。
  • フィルタリング: queryメソッドや条件付きフィルタリングを使用して、必要なデータだけを抽出します。
  • グルーピング: groupbyメソッドを使用して、データをグループ化し、集計処理を行います。
  • ベクトル化処理: Pandasのベクトル化機能を活用して、ループを避け、処理速度を向上させます。

これらのテクニックを活用することで、データ処理の効率を大幅に向上させることができます。

まとめ

この記事では、Pandasを使用してExcelファイルを読み込む方法や、データの書き込み、複数シートの操作、さらにはデータの可視化や変換について詳しく解説しました。

これにより、Excelファイルを効率的に扱うための基本的なスキルを身につけることができるでしょう。

今後は、実際のデータ分析やプロジェクトにおいて、これらのテクニックを活用して、より効果的なデータ処理を行ってみてください。

  • URLをコピーしました!
目次から探す