Python

【Python】pandasでExcelにデータを書き出す方法

んー
どうしたの?
前回はPythonでExcelのデータを読み込む方法があるのはわかったけど
Excelに書き出す方法ってないの?
あるよ
やっぱあるんかーい

PythonでExcelファイルにデータを書き出すことはできるのか。

実はこちらもpandasでできる。

今回は「PythonのpandasでExcelにデータを書き出す方法」について紹介する。

この記事を書いている人


システムエンジニア、AIエンジニアと、IT業界で10年以上働いている中堅。PythonとSQLが得意。最近はGCPの習得中。

記事を読むメリット

  • PythonのpandasでExcelにデータを書き出す方法がわかる

  • pandasでExcelにデータを書き出す方法

    pandasでExcelにデータを書き出す方法はある。



    まずcsvに書き出す場合は to_csv() メソッドを使う。

    import pandas as pd
    
    data_list = [
    [1,2,3],
    [2,3,4],
    [3,4,5]
    ]
    col_list = ["c1","c2","c3"]
    df = pd.DataFrame(data=data_list, columns=col_list)
    print(df)
    
    #    c1  c2  c3
    # 0   1   2   3
    # 1   2   3   4
    # 2   3   4   5
    
    print("Write to CSV.")
    df.to_csv("out.csv")
    

    するとデータフレームの内容をCSVファイルとして書き出すことができる。



    ではExcelファイルで書き出す場合はどうなるだろうか。

    この流れだとto_excel()とか?
    正解

    Excelファイルで書き出す場合は to_excel() メソッドを用いる。

    import pandas as pd
    
    data_list = [
    [1,2,3],
    [2,3,4],
    [3,4,5]
    ]
    col_list = ["c1","c2","c3"]
    df = pd.DataFrame(data=data_list, columns=col_list)
    print(df)
    
    #    c1  c2  c3
    # 0   1   2   3
    # 1   2   3   4
    # 2   3   4   5
    
    print("Write to Excel.")
    df.to_excel("out.xlsx")
    



    ModuleNotFoundErrorが出る場合

    ModuleNotFoundError: No module named 'openpyxl'
    

    このようなModuleNotFoundErrorが出る場合は、名前の通りモジュールが不足している

    というのもExcelファイルの書き出しには内部で別のライブラリを使っている。

    Excel2003までの .xlsファイルには xlwt、Excel2007以降の .xlsxファイルには openpyxlというライブラリが必要になる。

    ModuleNotFoundErrorが出た際は、コマンドプロンプトもしくはターミナルを起動して pip または pip3 でインストールしよう。

    pip install xlwt
    pip install openpyxl
    



    複数シートに書き込む

    Excelファイルに書き込む際、1ファイルの中でシートを分けて書き込みたいこともあるだろう。

    そんな場合は ExcelWriter オブジェクトとして開いている間に to_excel() メソッドでシート名を指定しながら書き込むと複数シートに書き込むことができる。

    import openpyxl
    
    data_list2 = [
    [3,2,1,0],
    [4,3,2,1],
    [5,4,3,2]
    ]
    col_list2 = ["c3","c2","c1","c0"]
    df2 = pd.DataFrame(data=data_list2, columns=col_list2)
    print(df2)
    
    #    c3  c2  c1  c0
    # 0   3   2   1   0
    # 1   4   3   2   1
    # 2   5   4   3   2
    
    print("Write to Excel (multi-sheets).")
    out_excel_multisheets = "out_excel_multisheets.xlsx"
    with pd.ExcelWriter(out_excel_multisheets) as writer:
        df.to_excel(writer, sheet_name='sheet1')
        df2.to_excel(writer, sheet_name='sheet2')
    



    読み込みに比べて、書き出しはちょっと面倒
    IOはそんなものですね

    ITipsと同じようなブログを作る方法

    ブログに興味がありますか?

    もしブログに興味がある場合は↓このページ↓を参考にすれば、ITipsと同じ構成でブログを作ることができます

    サーバー、ドメイン、ASPと【ブログに必要なものは全て】このページに書きました。
    同じ構成でブログ作るのはいいけど、記事はマネしないでネ (TДT;)

    ランキング参加中

    にほんブログ村 IT技術ブログへ

    他にもブログやSNSで紹介してくれると励みになります。

    はてブのコメントで酷評されると泣きます(´;ω;`)

    -Python
    -,

    Translate »

    © 2022 ITips