IoT, AI,機械学習 トピックス

処理する前には整理する

投稿日:

pythonのデータの集計解析のライブラリである「pandas」の使い方を説明します。この名前を見ると動物のパンダを思い出してしまいます。

資料はこちら → Jupyterその8

p.1 numpysympyなどで用いるデータは、型が異なると計算できないことがあります。読み込んだデータをPandasのデータフレームで処理することで、計算できる配列にすることができます。 必要なデータを条件により抽出することも可能です。 いつものようにpandasをインストールして、jupyterを起動します。

p.2 先ずデータを作成します。受験者名前がA~Jさんの10名、教科が国語、数学、英語、理科、社会の5つ、テストの点数乱数で50個(=10×5)設定します。点数は0~100点の間の乱数です。arr1に受験者10名の5教科分の配列、arr2には10名分の5教科の配列、arr3には50個のテスト結果の配列が入っています。pandasをimportで読み込み「pd」の略語で用います。先ず「zip」でarr1~3の配列をまとめてdataに代入します。 次がdataに入ったデータを「DataFrame」を用いて、名前、教科、点数を列名にしたフレームに配列します。df[:5]により最初の5行だけ表示します。表のようになっていますね。

p.3 点数の列の最初の10行を表示させたい場合は、df[’点数’][:10]とします。列を削除する場合は、del df[‘文字’]列を追加したい場合は、右上のようなスクリプトにします。

p.4 [DataFrame].append([DataFrame])が行を追加するスクリプトです。「ignore_index=True」という因数が書かれています。これがあると、最初に書かれていたインデックス(名前。教科、点数。総合)を無視して(名前、教科、中間、期末)に置き換えることもできます。 行の最後にデータを追加する場合は、loc[row+数字]=[追加データ]でできます。最終行がrowー1なので、最終行の次がrow番目の行となります。「row」が行の意味でですね。

p.5 index=listを用いると、0,1,2・・というリストを例えばa,b,c・・のようにインデックスの変更が可能です。ただし、元のフレームには0,1,2・・というインデックスは残っています。抽出する際に、元のインデックスで抽出するときは、iloc[23:28]、変更したインデックスで抽出する場合はloc[]のようにします。文字のインデックスは「’ '」をお忘れなく。

p.6 行列を転置する場合、「.T」をもちいますが、先に「loc」でインデックス変更後に「.T」にしてください。「.T」の後に「loc」として表示されないので、注意が必要です。ただし、「iloc」を用いれば表示はされます。

p.7 データを取得するときは、[DataFrame] [‘列名’],unique()のようにします。[DataFrame] [‘列名’]に数字を掛けたり、割る数式を挿入すると、列にある数字に掛けたり割ったりした数字に計算してくれます

p.8 DetaFrameには「Sries」というスクリプトがあります。これは例えば[’中間’]というSriesは中間の列データのかたまりを表します。[’中間’]の後ろに統計で求めたい平均値であれば「.mean」を付け足します。合計、最小、最大も同様です。 Excelでもソートがありますが、pandasにもあります。.sort_values([列 ],ascending=真偽値 を用います。真偽値がTrue→昇順False→降順となります。TrueFalse大文字にしてください。小文字ではエラーになります。この辺、プログラムの融通が利かない部分です。「」と「,」の違いでも、エラーがよく出ます。syntax errorが出るばあいは、このような気が付き難いエラーが多いですね。

p.9 sort_values(['中間','期末'],ascending=False)とすると、先ず「中間」の列を優先して降順に並べます。中間と期末が同じ数値の場合、期末の降順により順位が決まります。 このあとsrt.groupby('教科')、firstとすると各教科の最大値を表示します。[Groupby]の後に,p.8と同様な統計に関する語句を追加することで、各グループの統計量を表示してくれます。

p.10 氏名のグループを指定して、中間試験結果の高い順に並べます。p.9でgrpの中にあるデータを用いて、grp.agg(['sum','mean','median','min','max'])とすると、統計量を算出して表示してくれます。

p.11 「query」を用いると点数の範囲を指定して取り出すことも可能です。

p.12 Excelでピボットテーブルというのがあります。ここでは、中間試験結果について縦方向のインデックスとして氏名、横方向のに教科を指定して表を作成しています。

本日は、pandasの基本機能について説明しました。いろいろなパラメータに関わるデータを整理するために、pandasは有効なライブラリーだと思います。

本日使用したスクリプトは → jupyter8(スクリプト)

-IoT, AI,機械学習, トピックス

Copyright© 進化するガラクタ , 2022 All Rights Reserved Powered by STINGER.