[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 pdDataFrameとして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データを操作できます。
これを機に、実際のデータ処理において、これらの手法を活用してみてください。