ホームページ  >  記事  >  バックエンド開発  >  Excel で Python スクリプトを呼び出してデータ処理を自動化する方法!

Excel で Python スクリプトを呼び出してデータ処理を自動化する方法!

PHPz
PHPz転載
2023-04-13 09:19:062929ブラウズ

Excel で Python スクリプトを呼び出してデータ処理を自動化する方法!

Excelと言えば、まさにデータ処理分野の王者であり、誕生して30年以上経ちますが、現在も世界中で7億5千万人の愛用者がいます。そして、インターネットで有名な言語である Python の開発者はわずか 700 万人です。

Excel は世界で最も人気のあるプログラミング言語です。 Microsoft が LAMBDA 定義関数を導入して以来、Excel はプログラミング言語でアルゴリズムを実装できるようになったため、JavaScript、Java、Python と同様にチューリングが完成しました。

Excel は小規模なデータのシナリオでは不可欠なツールですが、大きなデータに直面するとやや不十分になります。

Excel テーブルには最大 1,048,576 行と 16,384 列を表示できることがわかっています。数十万行を含むテーブルを処理すると、多少の遅れが生じる可能性があります。もちろん、データ処理に VBA を使用することもできます。 Pythonを使用してExcelを操作します。

これがこの記事のテーマである Python のサードパーティ ライブラリ -xlwings です。これは、Python と Excel の間の対話型ツールとして機能し、VBA を介して Python スクリプトを簡単に呼び出して、複雑なデータ分析を実現できます。

たとえば、データを自動的にインポートする: Excel で Python スクリプトを呼び出してデータ処理を自動化する方法!

またはテキストをランダムに一致させる: Excel で Python スクリプトを呼び出してデータ処理を自動化する方法!

1. Python を Excel VBA と統合する理由は何ですか?

VBA は、Excel の組み込みマクロ言語として、自動化、データ処理、分析、モデリングなど、ほぼ何でも行うことができます。では、なぜ Python を使用して Excel VBA を統合するのでしょうか?主な理由は 3 つあります。


  1. VBA に習熟していない場合は、Python を直接使用して Excel 計算用の分析関数を作成できます。 VBA を使用する必要があります;

    1. Python は VBA よりも高速に実行され、コードの作成はより簡潔で柔軟です;

    1. Python には優れたサードパーティ ライブラリが多数あり、いつでも使用できるため、コーディング時間を大幅に節約できます。

    Python 愛好家の方はぜひどうぞ pandas や numpy などのデータ サイエンス ライブラリはよくご存知かと思いますが、Excel のデータ分析に使用できればさらに強力になります。

    2. なぜ xlwing を使用するのですか?

    Python には、xlsxwriter、openpyxl、pandas、xlwings など、Excel を操作できるライブラリが多数あります。

    しかし、他のライブラリと比較すると、xlwings は全体的なパフォーマンスがほぼ最高であり、xlwings は Excel マクロを通じて Python コードを呼び出すことができます。

    Excel で Python スクリプトを呼び出してデータ処理を自動化する方法!画像は初期の Python からのものです。Excel で Python スクリプトを呼び出してデータ処理を自動化する方法!

    ここでは、xlwing の入門的な使用法についてはあまり説明しません。

    xlwings のインストールは非常に簡単です。コマンド ラインの pip を使用して簡単にインストールできます:

    pip install python
    

    xlwings をインストールした後、xlwings の Excel 統合プラグインをインストールする必要があります。インストール前にを使用するには、すべての Excel アプリケーションを閉じる必要があります。閉じないと、エラーが報告されます。

    コマンド ラインで次のコマンドも入力します。

    xlwings addin install
    

    次のプロンプトは、統合プラグインが正常にインストールされたことを示します。 Excel で Python スクリプトを呼び出してデータ処理を自動化する方法!

    xlwings とプラグインがインストールされたら、この時点で Excel を開くと、ツールバーに xlwings メニュー ボックスが表示されます。これは、xlwings プラグインが正常にインストールされたことを意味します。 VBA 呼び出しのブリッジとして機能します。マッチメイキング用の Python スクリプトです。

    Excel で Python スクリプトを呼び出してデータ処理を自動化する方法!

    また、メニュー バーに「開発ツール」が表示されていない場合は、マクロを使用する必要があるため、リボンに「開発ツール」を追加する必要があります。

    手順は簡単です:

    1. [ファイル] タブで、[カスタマイズ > オプション] に移動します。

    2. [リボンのカスタマイズ] と [メイン タブ] で、[開発ツール] チェックボックスをオンにします。

    Excel で Python スクリプトを呼び出してデータ処理を自動化する方法!

    #メニュー バーに開発ツールが表示され、マクロの使用を開始できます。

    マクロが何なのかまだわからない場合は、自動化とバッチ処理のためのツールとして一時的に理解できます。

    これで事前準備作業は完了し、次は実戦です!

    三、玩转xlwings

    要想在excel中调用python脚本,需要写VBA程序来实现,但对于不懂VBA的小伙伴来说就是个麻烦事。

    但xlwings解决了这个问题,不需要你写VBA代码就能直接在excel中调用python脚本,并将结果输出到excel表中。

    xlwings会帮助你创建​​.xlsm​​​和​​.py​​​两个文件,在​​.py​​​文件里写python代码,在​​.xlsm​​文件里点击执行,就完成了excel与python的交互。

    怎么创建这两个文件呢?非常简单,直接在命令行输入以下代码即可:

    xlwings quickstart ProjectName
    

    这里的​​ProjectName​​可以自定义,是创建后文件的名字。

    Excel で Python スクリプトを呼び出してデータ処理を自動化する方法!

    如果你想把文件创建到指定文件夹里,需要提前将命令行导航到指定目录。

    创建好后,在指定文件夹里会出现两个文件,就是之前说的​​.xlsm​​​和​​.py​​文件。

    Excel で Python スクリプトを呼び出してデータ処理を自動化する方法!

    我们打开​​.xlsm​​文件,这是一个excel宏文件,xlwings已经提前帮你写好了调用Python的VBA代码。

    按快捷键​​Alt + F11​​​,就能调出VBA编辑器。

    Excel で Python スクリプトを呼び出してデータ処理を自動化する方法!


    Sub SampleCall()<br>mymodule = Left(ThisWorkbook.Name, (InStrRev(ThisWorkbook.Name, ".", -1, vbTextCompare) - 1))<br>RunPython "import " & mymodule & ";" & mymodule & ".main()"<br>End Sub<br><br>

    里面这串代码主要执行两个步骤:

    1、在​​.xlsm​​​文件相同位置查找相同名称的​​.py​​文件 

    2、调用​​.py​​​脚本里的​​main()​​函数

    我们先来看一个简单的例子,自动在excel表里输入​​['a','b','c','d','e']​

    第一步:我们把​​.py​​文件里的代码改成以下形式。

    import xlwings as xw
    import pandas as pd
    
    
    def main():
        wb = xw.Book.caller()
        values = ['a','b','c','d','e']
        wb.sheets[0].range('A1').value = values
    
    
    @xw.func
    def hello(name):
        return f"Hello {name}!"
    
    
    if __name__ == "__main__":
        xw.Book("PythonExcelTest.xlsm").set_mock_caller()
        main()
    
    
    

    然后在​​.xlsm​​​文件​​sheet1​​中创建一个按钮,并设置默认的宏,变成一个触发按钮。

    Excel で Python スクリプトを呼び出してデータ処理を自動化する方法!Excel で Python スクリプトを呼び出してデータ処理を自動化する方法!Excel で Python スクリプトを呼び出してデータ処理を自動化する方法!

    设置好触发按钮后,我们直接点击它,就会发现第一行出现了​​['a','b','c','d','e']​​。

    Excel で Python スクリプトを呼び出してデータ処理を自動化する方法!

    同样的,我们可以把鸢尾花数据集自动导入到excel中,只需要在.py文件里改动代码即可,代码如下:

    import xlwings as xw
    import pandas as pd
    
    def main():
        wb = xw.Book.caller()
        df = pd.read_csv(r"E:\test\PythonExcelTest\iris.csv")
        df['total_length'] =  df['sepal_length'] + df['petal_length']
        wb.sheets[0].range('A1').value = df
    
    
    @xw.func
    def hello(name):
        return f"Hello {name}!"
    
    
    if __name__ == "__main__":
        xw.Book("PythonExcelTest.xlsm").set_mock_caller()
        main()
    
    
    

    Excel で Python スクリプトを呼び出してデータ処理を自動化する方法!

    好了,这就是在excel中调用Python脚本的全过程,你可以试试其他有趣的玩法,比如实现机器学习算法、文本清洗、数据匹配、自动化报告等等。

    Excel+Python,简直法力无边。

    参考medium文章

    以上がExcel で Python スクリプトを呼び出してデータ処理を自動化する方法!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。