Pythonを使ってデータ前処理ツールを作成します。(複数操作でワンタッチで完了します。)


私達が普段Pythonを使ってデータ処理と分析をする時、importがいっぱいのライブラリを完成した後で、データをプレビューして、データに欠損値、重複値などの異常があるかどうかを確認して、処理を行います。

本稿ではGUIツールPySimpleGUIを結合して、自分のデータをどのように作成するかを説明します。このプロセスも自動化できます。最終効果は以下の通りです

この文章は三つの部分に分けて説明します。
  • GUIインターフェース
  • を作成します。
  • データ処理解説
  • 包装とテスト
  • 主に以下のモジュールに関連します。
  • PySimpleGUI
  • パンdas
  • matplotlib
  • 一、GUIインターフェースの作成
    考え方
    古いルールでは、まず考えを述べてからコードをつけます。まず、PySimpleGUIを使うか、それともその4つの流れを使いますか?
    モジュールの導入=>要素を作成して、フォームを作成します。フォームの作成=>イベントサイクルを作成します。
    元素から見て、このメニューバーを説明するために必要な要素があります。凹んでいるように見えるデータ前処理枠、枠内の3つの単一選択値、ファイルパスを読み取る3つの要素(固定テキスト、入力テキスト、閲覧ボタン)、「表示、処理、クローズ」の3つのボタンがあります。
    全体的に見ると、フォーム全体には、すべての要素が真ん中の分布状態を示す必要があります。メニューバーはフォームの端に左に分布しています。行の接続式の総分布を採用します。
    事件から見ると、使用説明メニューに利用者の注意事項を追加する必要があります。ファイルの読み込み位置は私達がよく使う2種類のデータの保存フォーマット(「.xlsx」、「.xls」)のExcelフォーマットを設定します。
    読み取り後、データ前処理フレームで処理を選択します。続いて、私たちは各エラーに対してポップアップフレームを調べて、調べ終わったらデータに対して最終的な処理をします。
    処理の過程は処理済みのデータを元のデータファイルに上書きする必要があります。全体の過程は継続的でなければならない。ここでtipsを言います。毎回データ分析の前にバックアップをとったほうがいいです。分析の途中で失敗しても元のデータファイルが見つからないのを防ぐことができます。
    コード
    考えを見てみたら、うごめくような感じがしますか?一つの波を実現します。まず完全なコードを見て、後から詳しく分解します。
    
    import PySimpleGUI as sg 
    import pandas as pd 
    import matplotlib 
    matplotlib.use("TkAgg") 
    sg.ChangeLookAndFeel('GreenTan') 
    menu_def = [['&    ', ['&  ']]] 
    layout = [ 
      [sg.Menu(menu_def, tearoff=True)], 
      [sg.Frame(layout=[ 
      [sg.Radio('     ', "RADIO1",size=(15,1),key="dup"), sg.Radio('     ', "RADIO1",size=(15,1),key="mis"), sg.Radio('     ', "RADIO1",default=True,key="war")]], title='     ',title_color='green',title_location='n',relief=sg.RELIEF_SUNKEN, tooltip='          ' )], 
      [sg.Text('    ', size=(8, 1), auto_size_text=False, justification='right'), 
       sg.InputText(enable_events=True,key="lujing"), sg.Button('  ',key = 'getf')], 
      [sg.Button('  ',key = 'look'),sg.Submit('  ',key = 'handle'), sg.Cancel('  ')]] 
     
    window = sg.Window('    ', layout, default_element_size=(40, 1), grab_anywhere=False) 
    while True: 
      event, values = window.read() 
      if event == 'getf': 
        text = sg.popup_get_file('                 ',title = '   ',file_types = (("Excel Files", "*.xlsx"),("Excel Files", "*.xls"),)) 
        sg.popup('  ', '        ---', text) 
        window['lujing'].update(text)  
      if event == "look": 
     ''' 
                   
     ''' 
      if event == "handle": 
     ''' 
                   
     '''    
      if event == "Cancel" or event == sg.WIN_CLOSED: 
        break   
      if event == "  ": 
     ''' 
            
     ''' 
    コード解釈
    実は考えがあったら、すべてが簡単になったようです。次に関連パラメータの役割を説明します。
    まず、matplotlib.use(「TkAgg」)です。matplotlibモジュールを使って、この関数を呼び出す目的は、異常値を確認する処理(箱型図を示す)に用いられ、画像表示を変える方式です。TkAgg(インタラクティブバックグラウンド)。
    インタラクティブバックグラウンドとは、画像を任意に操作し、エリアを拡大縮小したり、値を見たりする機能です。
    この関数を使うのはまずGUIを使っているので、相互作用の感覚が必要です。次にデータ量が大きいと箱型図が小さくなります。
    次にsg.ChinegeLook AndFeel('Green Tan'):フォームの色を変えます。
    じゃ、menudefはメニューバーで、メインメニューバーとサブメニューバーを定義するために「」、「」というフォーマットを使います。tearoffという関数は、可愛い点線を入れて各フィールドを間隔をあけます。
    sg.Frame():これはsg.com lumnsと同じように、主に複数のサブ要素のために使われています。私達はreliefパラメータを設定して、フレーム全体が視覚的に凹形に見えるようにします。tooltipパラメータはマウスの移動枠の位置に現れる小さなヒントボックスです。
    title_.locationパラメータの使い方は非常に面白いです。タイトル文字列の位置設定です。(n,s,e,w,seなど)があります。この位置は他の要素レイアウト位置とは違っています。地理位置座標でサブパラメータを作っています。
    sg.Radio:オプションボックスを選択して、すべてのオプションボックスのサブパラメータgroup_を選択します。IDは同じに設定されています。これで三つの選択肢の中から一つを選ぶことができます。ここでは「RADIO 1」をグループにします。id
    sg.Button():GUI全体で4つのボタンを使っています。その中には専用のボタンがあります。
    sg.popup():初級のポップアップ枠を比較し、提示類のキー情報を表示するために使用されます。
    sg.popup_ゲットするfile():これはテキスト入力フィールドとブラウズボタンを有するポップアップウィンドウから、ユーザがファイルを選択するための高級なポップアップブロック要素である。効果は以下の通りです

    二、データ前処理
    GUIの部分ができたら、データ処理の部分について説明します。主に重複値、欠損値、異常値についてです。
    データ準備
    ここで使っているのは2020年10月28日のA株の相場です。データ部分の展示:

    私たちはこの中に重複した行があり、欠損値があるところを見ることができます。
    繰り返し値処理
    二次元リストDataFrameにとってPandsモジュールを使用することは、オフィスのシンプル化を最も容易に象徴するモジュールです。
    
    import pandas as pd 
    df = df.read_excel('      ') 
    imfor = df[df.duplicated()] 
    imfor = str(imfor) 
    最初にPandsモジュールを呼び出してファイルのパスを読み取ります。ここでは絶対パスを採用します。相対パスを採用しない理由は、私たちがその後包装したGUIはファイルに依存しないPythonによって持参した環境ですので、相対パスの読み取りは識別できません。
    df[df.duplicated()このPands内の関数は、2次元リスト形式で重複値に対応する行を印刷します。ここでdf変数をstr文字列形式に変えたのは、後でGUIでポップアップウィンドウの要素を使う時に文字列で読み込むからです。
    最終処理の重複値の方法は以下の通りである。
    
    df = df.drop_duplicates(inplace = True) 
    コードは一行しかないですが、データテーブル全体の重複値を削除することができます。Pands関数の強さを説明します。
    なぜinplace=Trueを使うかというと、削除関数は元の表の構造を変えることができないので、新しい表を元の表に上書きする必要があります。
    欠損値処理
    まずコードを見てください。実は以前に欠損値処理について1年前に関連記事を書いていました。クリックしてみます。
    
    import pandas as pd 
    df = df.read_excel('      ') 
    #df.isnull() 
    imfor1 = df.isnull().sum() 
    #df.isnull().any() 
    imfor1 = str(imfor1) 
    欠落値があるデータテーブルに対しては、df.isnull()またはdf.isna()が空の値を調べている。この関数の作用は空の値かどうかを判断し、空の値であればTrueを与え、そうでなければFalseを与えます。
    ここではdf.isnull().sum()を使用して、各列のフィールドの欠損値の数を統計します。データ量が大きいなら、df.isnull().any()を使って、欠損値だけの行を調べられます。
    解決方法は欠損値を処理する方法がたくさんあります。平均値を取る、中央値を取る、削除する、下の値を取るなどです。私たちは上の値を取る方法でカバーします。
    
    df = df.fillna(method='pad') 
    異常値処理
    異常値とは、一つの数字フィールドに一つ以上のグループに合わない数字が現れます。一例を挙げると、一列の桁数の数字の中に百桁の数字が現れます。この百桁は異常値です。
    Pythonで異常値を検出するには2つの種類があります。箱線図観察と標準偏差観察です。ここでは箱を選んで観察します。
    箱線図は、選択したデータの分散状況を表示するための統計図であり、設定基準により、箱図の上下線より大きいか小さい数値を異常点として表している。

    図のように、次の4分の桁数とは、サンプルの25%のデータがこの数より小さいということです。上の四分の桁数とは、サンプルの25%がこの数より大きいということです。上の四分の桁数と下の四分の桁数の差の1.5倍と上の四分の桁数は上辺で、反対に下の端です。

    Pandsでは.boxplot()関数を呼び出して箱型図を描くことができます。
    
    import pandas as pd 
    df.boxplot()

    パッケージと効果展示
    コードを全部書いたら、私たちはpyinstallerを使って包装できます。
    あなたのプログラムをyuchuli.pyと名付けたら、cmdウィンドウで入力すればパッケージが完成します。
    
    pyinstaller -F yuchuli.py 
    包装後、exeはPythonファイルがあるフォルダのdistフォルダにあります。起動して効果を見てみます。



    私たちが必要とするデータの前処理の三つの機能が見られます。繰り返し値、欠落値、異常値は指定された方法で処理できます。
    もちろん、ここで提供する方法で、自分で修正して、自分の普段の習慣に合ったデータをカスタマイズして、小ソフトを前処理してもいいです。
    ここでPythonを使ってデータの前処理ツール(複数の操作ボタンで完成)を作成した記事について紹介します。Pythonに関するデータの前処理ツールの内容は以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。