こんにちは。
産婦人科医で人工知能の研究をしているTommy(Twitter:@obgyntommy)です。
本記事ではPythonのライブラリの1つである pandas の計算処理について学習していきます。
pandasの使い方については、以下の記事にまとめていますので参照してください。
【Python】Pandasの使い方【基本から応用まで全て解説】
続きを見る
また、pandasで Excelファイルを読み込む方法については以下の記事を参考にしてください。
【Python】pandasでExcelファイルを読み込む方法
続きを見る
データ解析をする際にはCSV、データベースなどのデータを扱いますが、Excelもその一つです。
pandasでExcelデータを取り扱えうようになれれば、普段、エクセルでデータを扱っている多くのユーザーとデータを共有できるようになります。
本記事では pandas を利用して Excel の書き込み方を習得してを使いこなせるようになりましょう。
なお、pandas.DataFrame.to_excel
に関する公式ドキュメントは以下になります。
pandas.DataFrame.to_excel — pandas 2.2.3 documentation
続きを見る
ここで本記事の学習到達目標です。
本記事の学習目標
- pandasで1つの Excelシートに書き込む方法
- pandasで複数の Excelシートに書き込む方法
- pandasでのindexの使用方法
- Excelのheaderの変更方法
- Excelの列を指定して書き込む方法
今回は、これらのテーマに沿って Excelを読み込む方法についてしっかり学習していきましょう。
※ データの準備とpandasの実行の箇所については、pandasで Excelを読み込む方法の内容と一部被っていますが復習として掲載しています。
データの準備とpandasの実行
pandasのインストール方法
pandasでエクセルを取り扱うときには、xlrd
をインストールしておきましょう。
In[]
1 2 3 4 5 | pip install xlrd or pip3 install xlrd |
pandasをインポートする
まず、pandas を読み込みます。
下記を実行してください。
In[]
1 2 | # pandasの読み込み import pandas as pd |
本記事で扱う対象データ
データは適当に用意した下記のデータを使います。
Sheet1, 2, 3, 4 にデータが入っているExcelファイルです。
実行して、パスを設定しておきましょう。
In[]
1 2 3 | # データパス data_path = 'https://obgynai.com/sample.xlsx' Sheet1 |
Sheet1
1列目に列名があるデータです。
Sheet2
Sheet1に3行ほど、他のデータが混じっていて、4行目からデータが始まっている場合です。
Sheet3
以下の表がSheet1の列名がない場合です。
Sheet4
Sheet1に index
(行名)をつけたもの
行名は 1, 2, 3, 4, 5
としています。
index
は数値に限らず、文字列でもOKです。
pandasでExcelファイルを書き込む方法
DataFrameをエクセルとして書き込む方法について紹介します。
解析したデータを共有するときに、共有相手がpythonや、jupyter notebookの環境がない場合には、エクセルのデータが欲しいとなる場合があります。
CSVでも良いですが、エクセルの場合、複数のシートに分けてデータをまとめて書き込めるので、エクセルに書き込むスキルも必要となります。
書き込むには、to_excelメソッドを使用しますが、このときにpandas.ExcelWriterも必要になります。
書き込むときは、通常のファイル操作と同じようにwith構文を使います。
In[]
1 2 | with pd.ExcelWriter('出力ファイル名') as writer: df.to_excel(writer) |
ExcelWirterに出力ファイル名を渡し、writerを宣言して、DataFrameのto_excelにwriterを渡しています。
ただのルールなので、こういったものだと覚えてください。
書き込むデータを読み込んでおきましょう。
In[]
1 2 | df = pd.read_excel(data_path, sheet_name='Sheet1') df.head() |
1つの Excelシートに書き込む方法
シンプルに1つのシートがあるエクセルを書き込みましょう。
出力ファイルを ’output.xlsx
’ としています。
In[]
1 2 | with pd.ExcelWriter('output.xlsx') as writer: df.to_excel(writer) |
Out[]
シート名を指定する場合は、パラメータ「sheet_name
」を使います。
sheet_name=’シート1’
にしてみましょう。
In[]
1 2 | with pd.ExcelWriter('output.xlsx') as writer: df.to_excel(writer, sheet_name='シート1') |
Out[]
複数の Excelシートに書き込む方法
複数のシートに書き込む場合は、そのまま、どんどん sheet_name
を指定して書き込んでいきます。
In[]
1 2 3 4 | with pd.ExcelWriter('output.xlsx') as writer: df.to_excel(writer, sheet_name='シート1') df.to_excel(writer, sheet_name='シート2') df.to_excel(writer, sheet_name='シート3') |
Out[]
今回は書き込んでいるデータが同じですが、色々なデータをシートに分けて書き込んでみましょう。
indexの使い方
A列にはDataFrameのindexのデータが出力されています。
出力するしないは、パラメータ「index
」を使います。
- True:出力する
- False:出力しない
となります。
In[]
1 2 | with pd.ExcelWriter('output.xlsx') as writer: df.to_excel(writer, sheet_name='シート1', index=False) |
Out[]
Excelのheaderを変更
header
が不要な場合は、パラメータ「header
」を使います。
- True:出力する
- False:出力しない
となります。
In[]
1 2 | with pd.ExcelWriter('output.xlsx') as writer: df.to_excel(writer, sheet_name='シート1', header=False) |
Out[]
Excelの列を指定して書き込む方法
書き込む列を指定する場合は、パラメータ「columns
」に対象列名をリストに渡します。
In[]
1 2 | with pd.ExcelWriter('output.xlsx') as writer: df.to_excel(writer, sheet_name='シート1', columns=['購入者', '商品ID']) |
もし、うまくいかない場合DataFrame側で列名を指定することで実現できます。
In[]
1 2 | with pd.ExcelWriter('output.xlsx') as writer: df[['購入者', '商品ID']].to_excel(writer, sheet_name='シート1') |
Out[]
今回は以上となります。
pandas の使用方法については以下の記事にまとめています。一通り本記事でpandasで Excelを使用する方法を学習できた方は再度復習してみましょう。
【Python】Pandasの使い方【基本から応用まで全て解説】
続きを見る
また、pandasで Excelファイルを読み込む方法については以下の記事を参考にしてください。
【Python】pandasでExcelファイルを読み込む方法
続きを見る