【Python】エクセルのデータを取得する方法

この記事では、Pythonの人気ライブラリであるpandas、openpyxl、xlrdを使ってエクセルデータを読み込み、編集し、保存する方法をわかりやすく解説します。

さらに、実際のデータを使った具体的な例を通じて、データの前処理や可視化の方法も紹介します。

目次から探す

必要なライブラリのインストール

Pythonでエクセルのデータを取得するためには、いくつかのライブラリをインストールする必要があります。

ここでは、代表的なライブラリであるpandas、openpyxl、xlrdのインストール方法について説明します。

pandasのインストール方法

pandasは、データ操作や解析に非常に便利なライブラリです。

エクセルファイルの読み書きも簡単に行うことができます。

pandasをインストールするには、以下のコマンドを使用します。

pip install pandas

このコマンドを実行すると、pandasがインストールされます。

インストールが完了したら、以下のようにインポートして使用します。

import pandas as pd

openpyxlのインストール方法

openpyxlは、エクセルファイル(.xlsx形式)を読み書きするためのライブラリです。

pandasと組み合わせて使用することが多いです。

openpyxlをインストールするには、以下のコマンドを使用します。

pip install openpyxl

このコマンドを実行すると、openpyxlがインストールされます。

インストールが完了したら、以下のようにインポートして使用します。

import openpyxl

xlrdのインストール方法

xlrdは、エクセルファイル(.xls形式)を読み込むためのライブラリです。

古い形式のエクセルファイルを扱う場合に使用します。

xlrdをインストールするには、以下のコマンドを使用します。

pip install xlrd

このコマンドを実行すると、xlrdがインストールされます。

インストールが完了したら、以下のようにインポートして使用します。

import xlrd

以上で、エクセルファイルを扱うための基本的なライブラリのインストール方法について説明しました。

次のセクションでは、これらのライブラリを使用して実際にエクセルデータを取得する方法について詳しく解説します。

pandasを使ったエクセルデータの取得

エクセルファイルの読み込み

read_excel関数の使い方

pandasは、エクセルファイルを簡単に読み込むための便利な関数 read_excel を提供しています。

この関数を使うことで、エクセルファイルのデータをDataFrame形式で取得することができます。

以下に基本的な使い方を示します。

import pandas as pd
# エクセルファイルの読み込み
df = pd.read_excel('sample.xlsx')
# 読み込んだデータの表示
print(df)

上記のコードでは、sample.xlsx というエクセルファイルを読み込み、その内容をDataFrameとして取得しています。

print(df) でデータの内容を確認することができます。

シート名の指定方法

エクセルファイルには複数のシートが含まれていることがあります。

特定のシートを読み込みたい場合は、sheet_name 引数を使用します。

# 特定のシートを読み込む
df = pd.read_excel('sample.xlsx', sheet_name='Sheet1')
# 読み込んだデータの表示
print(df)

上記のコードでは、Sheet1 という名前のシートを指定してデータを読み込んでいます。

シート名を指定することで、必要なデータだけを効率的に取得することができます。

データの抽出と操作

特定の列や行の抽出

エクセルファイルから読み込んだデータの中で、特定の列や行だけを抽出することができます。

以下にその方法を示します。

# 特定の列を抽出
df = pd.read_excel('sample.xlsx')
selected_columns = df[['列1', '列2']]
# 抽出した列の表示
print(selected_columns)

上記のコードでは、列1列2 という名前の列だけを抽出しています。

同様に、特定の行を抽出することも可能です。

# 特定の行を抽出
selected_rows = df.iloc[0:5]
# 抽出した行の表示
print(selected_rows)

このコードでは、最初の5行を抽出しています。

iloc を使うことで、行番号を指定してデータを抽出することができます。

フィルタリングと条件付き抽出

データの中から特定の条件に合致する行だけを抽出することも可能です。

以下にその方法を示します。

# 条件に合致する行を抽出
filtered_data = df[df['列1'] > 10]
# 抽出したデータの表示
print(filtered_data)

上記のコードでは、列1 の値が10より大きい行だけを抽出しています。

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

データの保存

to_excel関数の使い方

データを操作した後、結果をエクセルファイルとして保存することができます。

pandasの to_excel関数を使うことで、簡単にエクセルファイルにデータを保存することができます。

# データをエクセルファイルに保存
df.to_excel('output.xlsx', index=False)

上記のコードでは、output.xlsx という名前のエクセルファイルにデータを保存しています。

index=False を指定することで、行番号をエクセルファイルに含めないようにしています。

保存時のオプション設定

to_excel関数には、さまざまなオプションを指定することができます。

例えば、特定のシートにデータを保存したり、特定の列だけを保存することができます。

# 特定のシートにデータを保存
df.to_excel('output.xlsx', sheet_name='結果', index=False)
# 特定の列だけを保存
df[['列1', '列2']].to_excel('output_columns.xlsx', index=False)

上記のコードでは、結果 という名前のシートにデータを保存したり、列1列2 だけを保存しています。

これにより、必要なデータだけを効率的にエクセルファイルに保存することができます。

以上が、pandasを使ったエクセルデータの取得方法です。

pandasを使うことで、エクセルファイルのデータを簡単に操作・保存することができるため、ぜひ活用してみてください。

openpyxlを使ったエクセルデータの取得

Pythonでエクセルデータを操作するためのライブラリとして、openpyxlは非常に強力です。

ここでは、openpyxlを使ってエクセルファイルを読み込み、データを取得し、書き込む方法について詳しく解説します。

エクセルファイルの読み込み

まずは、エクセルファイルを読み込む方法について説明します。

load_workbook関数の使い方

openpyxlのload_workbook関数を使うことで、エクセルファイルを簡単に読み込むことができます。

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

from openpyxl import load_workbook
# エクセルファイルを読み込む
workbook = load_workbook('example.xlsx')

このコードでは、example.xlsxという名前のエクセルファイルを読み込んでいます。

load_workbook関数は、指定したファイルを開き、Workbookオブジェクトを返します。

シートの選択方法

エクセルファイルには複数のシートが含まれていることが多いです。

特定のシートを選択する方法を見てみましょう。

# シート名を指定してシートを取得
sheet = workbook['Sheet1']
# アクティブなシートを取得
active_sheet = workbook.active

上記のコードでは、Sheet1という名前のシートを取得しています。

また、workbook.activeを使うことで、現在アクティブなシートを取得することもできます。

セルデータの取得

次に、特定のセルからデータを取得する方法について説明します。

セルの値の取得方法

特定のセルの値を取得するには、以下のようにします。

# A1セルの値を取得
cell_value = sheet['A1'].value
print(cell_value)

このコードでは、Sheet1のA1セルの値を取得し、表示しています。

セルの範囲指定とデータの取得

複数のセルのデータを一度に取得する方法もあります。

# A1からC3までのセルの値を取得
for row in sheet['A1:C3']:
    for cell in row:
        print(cell.value)

このコードでは、A1からC3までの範囲のセルの値を取得し、各セルの値を表示しています。

データの書き込み

openpyxlを使ってエクセルファイルにデータを書き込む方法について説明します。

セルへのデータ書き込み方法

特定のセルにデータを書き込むには、以下のようにします。

# A1セルにデータを書き込む
sheet['A1'] = 'Hello, World!'
# ファイルを保存
workbook.save('example.xlsx')

このコードでは、A1セルにHello, World!というデータを書き込み、ファイルを保存しています。

新しいシートの追加とデータ書き込み

新しいシートを追加してデータを書き込む方法も見てみましょう。

# 新しいシートを追加
new_sheet = workbook.create_sheet(title='NewSheet')
# 新しいシートにデータを書き込む
new_sheet['A1'] = 'New Data'
# ファイルを保存
workbook.save('example.xlsx')

このコードでは、NewSheetという名前の新しいシートを追加し、A1セルにNew Dataというデータを書き込んでいます。

以上が、openpyxlを使ったエクセルデータの取得と書き込みの基本的な方法です。

これらの方法を使って、エクセルファイルを効率的に操作することができます。

xlrdを使ったエクセルデータの取得

エクセルファイルの読み込み

open_workbook関数の使い方

xlrdライブラリを使用してエクセルファイルを読み込むには、まずopen_workbook関数を使用します。

この関数は指定したエクセルファイルを開き、ワークブックオブジェクトを返します。

以下に基本的な使い方を示します。

import xlrd
# エクセルファイルを開く
workbook = xlrd.open_workbook('example.xlsx')

このコードでは、example.xlsxという名前のエクセルファイルを開き、その内容をworkbookという変数に格納しています。

シートの選択方法

エクセルファイルを開いた後、特定のシートを選択する必要があります。

xlrdでは、シートを名前またはインデックスで選択することができます。

# シート名でシートを選択
sheet = workbook.sheet_by_name('Sheet1')
# インデックスでシートを選択(0が最初のシート)
sheet = workbook.sheet_by_index(0)

このコードでは、Sheet1という名前のシートを選択する方法と、インデックス0(最初のシート)を選択する方法を示しています。

セルデータの取得

セルの値の取得方法

特定のセルの値を取得するには、cell_valueメソッドを使用します。

このメソッドは、指定した行と列のインデックスを受け取り、そのセルの値を返します。

# A1セルの値を取得(行と列のインデックスは0から始まる)
value = sheet.cell_value(0, 0)
print(value)

このコードでは、A1セル(最初の行、最初の列)の値を取得し、コンソールに出力しています。

セルの範囲指定とデータの取得

複数のセルの値を一度に取得する場合、ループを使用して範囲を指定することができます。

以下に、特定の範囲のセルデータを取得する方法を示します。

# 1行目の全てのセルの値を取得
for col in range(sheet.ncols):
    value = sheet.cell_value(0, col)
    print(value)
# 1列目の全てのセルの値を取得
for row in range(sheet.nrows):
    value = sheet.cell_value(row, 0)
    print(value)
# 特定の範囲(A1からC3)のセルの値を取得
for row in range(3):
    for col in range(3):
        value = sheet.cell_value(row, col)
        print(value)

このコードでは、1行目の全てのセル、1列目の全てのセル、そしてA1からC3までの範囲のセルの値をそれぞれ取得し、コンソールに出力しています。

以上が、xlrdを使用してエクセルデータを取得する基本的な方法です。

xlrdはシンプルで使いやすいライブラリですが、最新のエクセルファイル形式(.xlsx)には対応していないため、必要に応じてopenpyxlpandasと併用することをお勧めします。

実践例

ここでは、実際にPythonを使ってエクセルデータを操作する具体的な例を紹介します。

複数のシートからデータを一括取得し、データの前処理やクリーニング、欠損値の処理、データ型の変換、そしてデータの可視化までを一連の流れで解説します。

複数シートのデータを一括取得

エクセルファイルには複数のシートが含まれていることがよくあります。

ここでは、複数のシートからデータを一括で取得し、一つのDataFrameにまとめる方法を紹介します。

複数シートのデータを一つのDataFrameにまとめる方法

まず、pandasを使って複数のシートからデータを読み込み、それらを一つのDataFrameにまとめます。

import pandas as pd
# エクセルファイルのパス
file_path = 'example.xlsx'
# エクセルファイルの全シートを読み込む
all_sheets = pd.read_excel(file_path, sheet_name=None)
# 全シートのデータを一つのDataFrameにまとめる
combined_df = pd.concat(all_sheets.values(), ignore_index=True)
print(combined_df)

このコードでは、pd.read_excel関数を使ってエクセルファイルの全シートを読み込み、pd.concat関数でそれらを一つのDataFrameにまとめています。

データの前処理とクリーニング

データを一つのDataFrameにまとめた後は、前処理とクリーニングを行います。

例えば、不要な列を削除したり、データの形式を統一したりします。

# 不要な列を削除
cleaned_df = combined_df.drop(columns=['不要な列1', '不要な列2'])
# データの形式を統一
cleaned_df['日付'] = pd.to_datetime(cleaned_df['日付'])
cleaned_df['金額'] = cleaned_df['金額'].astype(float)
print(cleaned_df)

このコードでは、dropメソッドを使って不要な列を削除し、pd.to_datetimeastypeメソッドを使ってデータの形式を統一しています。

欠損値の処理方法

データには欠損値が含まれていることがよくあります。

ここでは、欠損値の処理方法を紹介します。

欠損値の確認と削除

まず、欠損値がどこにあるかを確認し、必要に応じて削除します。

# 欠損値の確認
print(cleaned_df.isnull().sum())
# 欠損値の削除
cleaned_df = cleaned_df.dropna()
print(cleaned_df)

このコードでは、isnullメソッドを使って欠損値の数を確認し、dropnaメソッドを使って欠損値を含む行を削除しています。

データ型の変換

データ型の変換は、データの前処理において重要なステップです。

例えば、文字列を数値に変換する場合などがあります。

# 文字列を数値に変換
cleaned_df['金額'] = pd.to_numeric(cleaned_df['金額'], errors='coerce')
print(cleaned_df)

このコードでは、pd.to_numericメソッドを使って文字列を数値に変換しています。

errors='coerce'オプションを指定することで、変換できない値はNaNに置き換えられます。

データの可視化

データの可視化は、データの理解を深めるために非常に有効です。

ここでは、matplotlibとseabornを使ったデータの可視化方法を紹介します。

matplotlibを使った基本的なグラフ作成

まず、matplotlibを使って基本的なグラフを作成します。

import matplotlib.pyplot as plt
# 折れ線グラフの作成
plt.plot(cleaned_df['日付'], cleaned_df['金額'])
plt.xlabel('日付')
plt.ylabel('金額')
plt.title('日付ごとの金額の推移')
plt.show()

このコードでは、plt.plotメソッドを使って折れ線グラフを作成し、xlabelylabeltitleメソッドを使ってラベルとタイトルを設定しています。

seabornを使った高度なデータ可視化

次に、seabornを使って高度なデータ可視化を行います。

import seaborn as sns
# ヒートマップの作成
pivot_table = cleaned_df.pivot('日付', 'カテゴリ', '金額')
sns.heatmap(pivot_table, annot=True, fmt=".1f", cmap="YlGnBu")
plt.title('カテゴリごとの金額のヒートマップ')
plt.show()

このコードでは、pivotメソッドを使ってピボットテーブルを作成し、sns.heatmapメソッドを使ってヒートマップを作成しています。

annot=Trueオプションを指定することで、各セルに値を表示しています。

以上が、Pythonを使ったエクセルデータの取得と操作の実践例です。

これらの手法を活用して、効率的にデータを処理し、分析を行ってください。

目次から探す