[Python] Excelのシートの行数・列数を取得する方法
PythonでExcelシートの行数と列数を取得するには、openpyxl
やpandas
といったライブラリを使用します。
openpyxl
を使用する場合、Workbook
オブジェクトを作成し、active
シートのmax_row
とmax_column
プロパティを利用して行数と列数を取得できます。
pandas
を使用する場合、read_excel
関数でExcelファイルを読み込み、DataFrame
のshape
属性を使って行数と列数を確認できます。
これらの方法を使うことで、Excelファイルのデータを効率的に操作することが可能です。
openpyxlを使用した行数・列数の取得
PythonでExcelファイルを操作する際に便利なライブラリの一つがopenpyxl
です。
このライブラリを使用することで、Excelファイルの読み書きやシートの操作が簡単に行えます。
ここでは、openpyxl
を使ってExcelシートの行数と列数を取得する方法について解説します。
openpyxlの基本的な使い方
openpyxl
を使用するには、まずライブラリをインストールする必要があります。
以下のコマンドを使用してインストールしてください。
pip install openpyxl
インストールが完了したら、Pythonスクリプト内でopenpyxl
をインポートし、Excelファイルを読み込むことができます。
import openpyxl
# Excelファイルを読み込む
workbook = openpyxl.load_workbook('example.xlsx')
シートの行数を取得する方法
Excelシートの行数を取得するには、openpyxl
のmax_row
属性を使用します。
以下のサンプルコードでは、指定したシートの行数を取得しています。
import openpyxl
# Excelファイルを読み込む
workbook = openpyxl.load_workbook('example.xlsx')
# シートを選択
sheet = workbook.active
# 行数を取得
row_count = sheet.max_row
print(f"行数: {row_count}")
行数: 10
このコードは、example.xlsx
のアクティブなシートの行数を取得し、コンソールに出力します。
シートの列数を取得する方法
列数を取得するには、max_column
属性を使用します。
以下のサンプルコードでは、指定したシートの列数を取得しています。
import openpyxl
# Excelファイルを読み込む
workbook = openpyxl.load_workbook('example.xlsx')
# シートを選択
sheet = workbook.active
# 列数を取得
column_count = sheet.max_column
print(f"列数: {column_count}")
列数: 5
このコードは、example.xlsx
のアクティブなシートの列数を取得し、コンソールに出力します。
特定のシートを選択する方法
複数のシートがあるExcelファイルから特定のシートを選択するには、シート名を指定します。
以下のサンプルコードでは、特定のシートを選択しています。
import openpyxl
# Excelファイルを読み込む
workbook = openpyxl.load_workbook('example.xlsx')
# 特定のシートを選択
sheet = workbook['Sheet1']
# シート名を表示
print(f"選択したシート名: {sheet.title}")
選択したシート名: Sheet1
このコードは、example.xlsx
のSheet1
という名前のシートを選択し、そのシート名をコンソールに出力します。
pandasを使用した行数・列数の取得
pandas
は、データ解析において非常に強力なPythonライブラリで、Excelファイルを簡単に操作することができます。
ここでは、pandas
を使用してExcelシートの行数と列数を取得する方法について解説します。
pandasの基本的な使い方
pandas
を使用するには、まずライブラリをインストールする必要があります。
以下のコマンドを使用してインストールしてください。
pip install pandas
インストールが完了したら、Pythonスクリプト内でpandas
をインポートし、データを操作することができます。
import pandas as pd
DataFrameとしてExcelを読み込む
pandas
では、ExcelファイルをDataFrame
として読み込むことができます。
read_excel関数
を使用して、Excelファイルを読み込みます。
import pandas as pd
# ExcelファイルをDataFrameとして読み込む
df = pd.read_excel('example.xlsx', sheet_name='Sheet1')
このコードは、example.xlsx
のSheet1
をDataFrame
として読み込みます。
DataFrameから行数を取得する方法
DataFrame
の行数を取得するには、shape
属性を使用します。
shape
はタプルを返し、最初の要素が行数を示します。
import pandas as pd
# ExcelファイルをDataFrameとして読み込む
df = pd.read_excel('example.xlsx', sheet_name='Sheet1')
# 行数を取得
row_count = df.shape[0]
print(f"行数: {row_count}")
行数: 10
このコードは、example.xlsx
のSheet1
の行数を取得し、コンソールに出力します。
DataFrameから列数を取得する方法
列数を取得するには、同様にshape
属性を使用します。
shape
の2番目の要素が列数を示します。
import pandas as pd
# ExcelファイルをDataFrameとして読み込む
df = pd.read_excel('example.xlsx', sheet_name='Sheet1')
# 列数を取得
column_count = df.shape[1]
print(f"列数: {column_count}")
列数: 5
このコードは、example.xlsx
のSheet1
の列数を取得し、コンソールに出力します。
xlrdを使用した行数・列数の取得
xlrd
は、Excelファイルを読み込むためのPythonライブラリです。
特に古いバージョンのExcelファイル(.xls形式)を扱う際に便利です。
ここでは、xlrd
を使用してExcelシートの行数と列数を取得する方法について解説します。
xlrdの基本的な使い方
xlrd
を使用するには、まずライブラリをインストールする必要があります。
ただし、xlrd
はバージョン1.2.0以降、.xlsx形式のファイルをサポートしていないため、.xls形式のファイルを扱う場合に使用します。
以下のコマンドでインストールできます。
pip install xlrd==1.2.0
インストールが完了したら、Pythonスクリプト内でxlrd
をインポートし、Excelファイルを読み込むことができます。
import xlrd
# Excelファイルを読み込む
workbook = xlrd.open_workbook('example.xls')
シートの行数を取得する方法
Excelシートの行数を取得するには、nrows
属性を使用します。
以下のサンプルコードでは、指定したシートの行数を取得しています。
import xlrd
# Excelファイルを読み込む
workbook = xlrd.open_workbook('example.xls')
# シートを選択
sheet = workbook.sheet_by_name('Sheet1')
# 行数を取得
row_count = sheet.nrows
print(f"行数: {row_count}")
行数: 10
このコードは、example.xls
のSheet1
の行数を取得し、コンソールに出力します。
シートの列数を取得する方法
列数を取得するには、ncols
属性を使用します。
以下のサンプルコードでは、指定したシートの列数を取得しています。
import xlrd
# Excelファイルを読み込む
workbook = xlrd.open_workbook('example.xls')
# シートを選択
sheet = workbook.sheet_by_name('Sheet1')
# 列数を取得
column_count = sheet.ncols
print(f"列数: {column_count}")
列数: 5
このコードは、example.xls
のSheet1
の列数を取得し、コンソールに出力します。
xlrdの制限事項
xlrd
にはいくつかの制限事項があります。
特に注意すべき点を以下にまとめます。
- .xlsx形式のサポート:
xlrd
のバージョン1.2.0以降は、.xlsx形式のファイルをサポートしていません。
これらのファイルを扱う場合は、openpyxl
やpandas
を使用する必要があります。
- 書き込み機能の欠如:
xlrd
は読み込み専用のライブラリであり、Excelファイルへの書き込みはできません。
書き込みが必要な場合は、xlwt
やopenpyxl
を使用してください。
- 古いファイル形式のサポート: 主に.xls形式の古いExcelファイルを扱うために設計されています。
新しいファイル形式を扱う場合は、他のライブラリを検討してください。
これらの制限を理解した上で、適切なライブラリを選択することが重要です。
応用例:複数シートの行数・列数を一括取得
Excelファイルには複数のシートが含まれていることが多く、それぞれのシートの行数や列数を一括で取得したい場合があります。
ここでは、openpyxl
を使用して複数のシートの行数と列数を一括で取得し、その結果をCSVファイルに出力する方法を解説します。
複数シートの行数を取得する方法
複数のシートの行数を取得するには、openpyxl
でワークブック内のすべてのシートをループし、それぞれのシートのmax_row
属性を使用します。
import openpyxl
# Excelファイルを読み込む
workbook = openpyxl.load_workbook('example.xlsx')
# 各シートの行数を取得
sheet_row_counts = {}
for sheet in workbook.sheetnames:
worksheet = workbook[sheet]
sheet_row_counts[sheet] = worksheet.max_row
print("各シートの行数:", sheet_row_counts)
各シートの行数: {'Sheet1': 10, 'Sheet2': 15, 'Sheet3': 8}
このコードは、example.xlsx
内のすべてのシートの行数を取得し、シート名と行数のペアを辞書として出力します。
複数シートの列数を取得する方法
同様に、複数のシートの列数を取得するには、各シートのmax_column
属性を使用します。
import openpyxl
# Excelファイルを読み込む
workbook = openpyxl.load_workbook('example.xlsx')
# 各シートの列数を取得
sheet_column_counts = {}
for sheet in workbook.sheetnames:
worksheet = workbook[sheet]
sheet_column_counts[sheet] = worksheet.max_column
print("各シートの列数:", sheet_column_counts)
各シートの列数: {'Sheet1': 5, 'Sheet2': 7, 'Sheet3': 4}
このコードは、example.xlsx
内のすべてのシートの列数を取得し、シート名と列数のペアを辞書として出力します。
結果をCSVファイルに出力する方法
取得した行数と列数の情報をCSVファイルに出力するには、csv
モジュールを使用します。
以下のコードでは、行数と列数の情報をCSVファイルに書き出しています。
import openpyxl
import csv
# Excelファイルを読み込む
workbook = openpyxl.load_workbook('example.xlsx')
# CSVファイルに書き出すためのデータを準備
data = [['Sheet Name', 'Row Count', 'Column Count']]
for sheet in workbook.sheetnames:
worksheet = workbook[sheet]
row_count = worksheet.max_row
column_count = worksheet.max_column
data.append([sheet, row_count, column_count])
# CSVファイルに書き出し
with open('sheet_counts.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerows(data)
print("結果を'sheet_counts.csv'に出力しました。")
このコードは、example.xlsx
内の各シートの行数と列数を取得し、それをsheet_counts.csv
というCSVファイルに出力します。
CSVファイルには、シート名、行数、列数がそれぞれの列に記録されます。
応用例:特定の条件に基づく行数・列数の取得
Excelデータを扱う際には、特定の条件に基づいて行数や列数をカウントしたい場合があります。
ここでは、pandas
を使用して、条件付きで行数や列数をカウントする方法と、条件に基づいてデータをフィルタリングする方法を解説します。
条件付きで行数をカウントする方法
特定の条件に基づいて行数をカウントするには、pandas
のDataFrame
をフィルタリングしてから、len()関数
を使用します。
以下の例では、特定の列の値が条件を満たす行数をカウントしています。
import pandas as pd
# ExcelファイルをDataFrameとして読み込む
df = pd.read_excel('example.xlsx', sheet_name='Sheet1')
# 条件を満たす行数をカウント
# 例: 'Status'列が'Completed'の行数をカウント
condition = df['Status'] == 'Completed'
row_count = len(df[condition])
print(f"条件を満たす行数: {row_count}")
条件を満たす行数: 4
このコードは、example.xlsx
のSheet1
で、Status
列がCompleted
である行の数をカウントし、コンソールに出力します。
条件付きで列数をカウントする方法
特定の条件に基づいて列数をカウントするには、DataFrame
の列をフィルタリングしてから、len()関数
を使用します。
以下の例では、特定の行の値が条件を満たす列数をカウントしています。
import pandas as pd
# ExcelファイルをDataFrameとして読み込む
df = pd.read_excel('example.xlsx', sheet_name='Sheet1')
# 条件を満たす列数をカウント
# 例: 1行目の値がすべて'Yes'である列数をカウント
condition = df.iloc[0] == 'Yes'
column_count = len(df.columns[condition])
print(f"条件を満たす列数: {column_count}")
条件を満たす列数: 3
このコードは、example.xlsx
のSheet1
で、1行目の値がすべてYes
である列の数をカウントし、コンソールに出力します。
条件に基づくデータのフィルタリング
条件に基づいてデータをフィルタリングするには、pandas
のDataFrame
を条件でフィルタリングします。
以下の例では、特定の条件を満たすデータを抽出しています。
import pandas as pd
# ExcelファイルをDataFrameとして読み込む
df = pd.read_excel('example.xlsx', sheet_name='Sheet1')
# 条件に基づくデータのフィルタリング
# 例: 'Score'列が80以上のデータを抽出
filtered_data = df[df['Score'] >= 80]
print("条件を満たすデータ:")
print(filtered_data)
条件を満たすデータ:
Name Score Status
0 Alice 85 Completed
2 Charlie 90 Completed
このコードは、example.xlsx
のSheet1
で、Score
列が80以上のデータを抽出し、コンソールに出力します。
フィルタリングされたデータは、新しいDataFrame
として扱うことができます。
まとめ
この記事では、Pythonを使用してExcelファイルの行数と列数を取得する方法について、openpyxl
、pandas
、xlrd
の各ライブラリを用いた手法を解説しました。
各ライブラリの特性を理解し、適切な方法を選択することで、効率的にExcelデータを操作できます。
これを機に、実際のデータ処理において、これらの手法を活用してみてください。