pandas」をモチーフに使って実際に動作させ学習する。blogPandasとは、なにか?初め考えていたのは、EXCELシートも扱えるPython版スプレッドシートライブラリ。VBAの代わりにマクロをPython上で実行できる便利なものと考えていた。Pandasを実際に使ってみると始めて使ったのは、テキストデータをEXCELのxlsxに変換しておきたかったから。実際に変換してみると思ったより難しい(実際には、我々がEXCELを表計算としてとらえていなくて計算機能と印刷機能を持つワープロとして使っているのが原因)。Pandasも高機能なので出来ることが多く大いに迷ったが、それでもEXCELファイルの書き出しに成功したのでこれは便利だ!ということでこれを機に少し使ってみようと考えた。(2/6)Pandasを覚える!さて、グーグル先生に教えてもらえば大抵のことは分かるのだが、それが今の最適解なのか?と考えるとそうではない。グーグル先生のサーチ機能は、カンニングペーパーであり、単語帳である。欲しい答えを最小ステップでたどり着くための方法。例えるなら、望遠鏡、又は顕微鏡で拡大されたエリアで見つけた希望(答え)。なるのか?なぜそう書けば動くのか?など、答えに対する成り立ちがすっぽり抜けてしまうのである。Notebookで敷地も下がって来ている。入門書や学習本を眺めて図を見てなんとなくへーとか言って分かった気になって何も残らないパターンになりかねない。Notebookを使い実行していってみようと思う。これにより、学習講座のWorkshop形式で講師が腹痛で欠席したので自己学習してなさい版くらいの知識に残ることを期待。実行した結果をここに残し、その時のメモ書きとエッセンスと晒してみる。Numpy式は直感的でインタラクティブな作業には便利ですが、プロダクションコードのためには、最適化されたpandasデータアクセスメソッド、.at、.iat、.locおよび.ilocをお勧めします。Indexingを参照してください。【解説】Pandasで最適化されたアクセス方法を用意してあるのでそっちを使ってね。Numpy式が何かは分かりにくいが今私たちが思い浮かぶアクセスだよね?付けて選択する方法とかでx,y座標的につかったりするやりかた。()単一の列を選択すると、単一Seriesオブジェクトとなりdf.Aでもあります。float64type(df['A'])pandas.core.series.Series【実況】Numpy形式か?間を選択すると行がスライスされます。1]【解説】だよね?Numpyと少し動作が違うNumpyでは[start:end:step]がイタレーション的forループで作られているから条件式部分がcount<endで定義されているのでendは含まれない。'20190503'【解説】DatetimeIndexなんて特別なクラスを使っているから'2019-05-03'を'20190503'と省略して書けるのね。それは置いておいて、1つ選ぶのに直接呼び出したらエラーになった。行選択ラベルによる選択の詳細を参照してください。float64【実況】dates[0]ってなんだ?dfを定義したときに使った変数だけど。freq='D')【解説】indexに使ったDatetimeIndex形式はインスタンス化するときに'20190501'として日まで入力しているが実際は秒まで認識している。0.654380【解説】リスト形式にすることで、columnを複数選択できる。スライスとは違うラベルスライスを表示すると、両方のエンドポイントが含まれます。0.824024【解説】indexだけでなくcolumnもスライスできます返されるオブジェクトのサイズを縮小します。'B']])pandas.core.series.Series【解説】indexが、一つの場合column列のSeriesを返してくる。(.iloc[])位置による選択の詳細を参照してください。渡された整数の位置で選択します。]指定なので配列風,行列風な指定方法です。pythonに似た動作をします。pythonスタイルに似ています。A列の中で0以上のものをTrueとして判定。]なので、dfのindexの並び順に照らし合わせてTrueの行のみを選択したブール条件が満たされるDataFrameから値を選択する。False【解説】さらに分かりにくいdf>0なので全体に足して0より大きいがどうかを判定している。objecttype(df2['E'])pandas.core.series.Series【解説】E列を使ってフィルタする。'four'])は、E列に対してisinを適応isinは、中にある?の関数なので'two'と'four'があるindexのみTrueして判定1列なのでSeriesが戻ってくる。]全体に適応するとTrueの行のみが選択される。(追加,更新)新しい列を設定すると、インデックスによってデータが自動的に整列されます。6【解説】F列にSeriesデータを代入。結果としてF列が無いので新規に追加してSeriesのデータを各indexに代入された。NaN【解説】インデックスによってデータが自動的に整列されます。部分が分からなかったけど、追加するデータがindexに足して少ないとその要素はNaNとして扱われる。freq='D')【解説】A列,dates[0]='2019-05-01'行のデータが0.0に更新されました。NaN【解説】こっちはかんたんですね。.iat[]なので数値指定できます。NaNlen(df)6【解説】ラベル(.loc)で追加、Numpyの1次元配列をindex分作って代入しています。【実況】あれ、そうですかdfにlen()を適応するとindexの行数が戻ってくるんですね。Numpyの場合、要素数になるのでそうかともってましたwhere設定ありの操作。NaN【解説】フィルタの全体適応ですね。-df2は、自分に上書きしているのでその点は気を付けましょう。df2>0で0以上を調べTrue/FalseのMaskを作って該当す要素の書き換えをしています。結果としてすべてマイナス要素に代わってます。pandas」をモチーフに使って実際に動作させ学習する。blogPandasとは、なにか?初め考えていたのは、EXCELシートも扱えるPython版スプレッドシートライブラリ。VBAの代わりにマクロをPython上で実行できる便利なものと考えていた。Pandasを実際に使ってみると始めて使ったのは、テキストデータをEXCELのxlsxに変換しておきたかったから。実際に変換してみると思ったより難しい(実際には、我々がEXCELを表計算としてとらえていなくて計算機能と印刷機能を持つワープロとして使っているのが原因)。Pandasも高機能なので出来ることが多く大いに迷ったが、それでもEXCELファイルの書き出しに成功したのでこれは便利だ!ということでこれを機に少し使ってみようと考えた。pandas」を実際にやってみるPandasを覚える!さて、グーグル先生に教えてもらえば大抵のことは分かるのだが、それが今の最適解なのか?と考えるとそうではない。グーグル先生のサーチ機能は、カンニングペーパーであり、単語帳である。欲しい答えを最小ステップでたどり着くための方法。例えるなら、望遠鏡、又は顕微鏡で拡大されたエリアで見つけた希望(答え)。なるのか?なぜそう書けば動くのか?など、答えに対する成り立ちがすっぽり抜けてしまうのである。Notebookで敷地も下がって来ている。入門書や学習本を眺めて図を見てなんとなくへーとか言って分かった気になって何も残らないパターンになりかねない。Notebookを使い実行していってみようと思う。これにより、学習講座のWorkshop形式で講師が腹痛で欠席したので自己学習してなさい版くらいの知識に残ることを期待。実行した結果をここに残し、その時のメモ書きとエッセンスと晒してみる。データの簡単な統計要約を表示します。(1/6)約10分でPandasを覚える!これはパンダの簡単な紹介で、主に新規ユーザーを対象としています。あなたはクックブックにもっと複雑なレシピを見ることができます。pd【実況】importこれがないと始まらない。matplotlibもそうだがpandasもnumpyライブラリを使用して作られている。1.オブジェクト作成Pandasの基本オブジェクトSeriesオブジェクトの作成データ構造の紹介セクションを参照してください。10分で何とかPandasの概要が分かればいいなぁの感覚なのに。リンク先のデータ構造紹介セレクションと書かれていることは「数学」の代数幾何紹介で行列についてうんたらかんたらとそう。中間試験範囲より広い内容じゃねーかよ!ってな感じで学習にはなったがおモッキリPandasの全体の概要が知りたかったんだよ!に対しては、大きく外れてしまった。要は、ここだけですでに数時間かかっている。Numpyでもそうだったけど初めは、np.array()なんだよね。Numpyオブジェクトを作ってそれから使う方法を覚える。PandasもSeriesとDataFrameが基本だからそのオブジェクトの作り方いろいろが学べたのは非常に良かったかもしれない。chiyoh.hatenablog.comSeries値のリストを渡してを作成し、パンダにデフォルトの整数インデックスを作成させます。float64【解説】数字の羅列がデータ化されてPandasライブラリのSeriesオブジェクトが作成された。0~5の番号はindexと呼ばれる。