KIOICHO Eng.

株式会社イーウェルのエンジニアが社内エンジニア系イベント等の情報を発信するブログです。

pandasのこと

# 1.はじめに
こんにちは。マーケティングIT企画本部 開発第1部 開発1Gからお送りいたします。
私は今年の1月からイーウェルで働き始めており、データ分析を含む、
これからのイーウェルの方向性を探るプロジェクトに関わっています。
そのプロジェクトの中で、主にデータ分析を行っています。
今回は、データ分析の中でも、割と地味ですが重要なデータの前処理に関する技術紹介を。

 # 2.データ分析業務のツール
## (1)データ分析での問題
データ分析では、数万~数十万行のデータを扱うことが頻繁にあります。
それらのデータはテキストファイルや、エクセルファイルなどで保存されています。
が、そのファイルサイズは数GB単位になることもあり、エクセルファイルが激重で
ファイル開くのがやっと・・・ということになります。

また、データ分析にあたって、
・Rのsummary()のように集計を一気に出したい。
・列全体に対して処理をしたい。
・sparse matrix化したい。
・良く行う処理はひとまとめにしておきたい・・・など。
・前処理(欠損値の補完、特徴量抽出、文字列処理、正規化、二値化)しなきゃ・・・
など、いろいろ出てきます。

エクセルファイルはデータを見ながら分析が進められるので、良いツールなのですが、
上記の問題には、アドインなどで対応しなくてはいけないなど、やや使いづらくなる場面があります。
データサイエンティストではなくデータマエショリストという言葉(※)もあります。
(※)https://tjo.hatenablog.com/entry/2013/11/11/225800

さらに、「再現性」の問題もあります。。
人手が入ると、次に同じことを実行する際に「まったく同じこと」をできない可能性が発生します。
たとえば目視で最大値を見つけてみたり、グラフのタイトルをいじったりなど・・・
エクセルだとつい人手が入ってしまい、再現性が低くなることも。


そんな場面で役立つのが、「pandas」です。


## (2)pandasについて
データ分析業務に使うツールの中に「pandas」(https://pandas.pydata.org/)というものがあります。
pandas はpython上で動作するデータ分析ツールであり、データの前処理(欠損値の補完、特徴量抽出、文字列処理)や
機械学習、可視化、レポート作成、自動化まで対応できる便利なツールです。

## (3)エクセルとの対比
エクセルとの対比で、pandasを使うメリットは以下のとおりです。
【メリット】
・早い:数百万行でも処理可能。
・入力が短く手済む:エクセルの関数&ctl+Dよりも楽
・自動化可能(一連の処理を関数として作成して1クリックで済む)※excelマクロでも可能ですが、処理速度や
使える関数の豊富さでpandasの方が強いです。

【デメリット】
・(エクセルのように)ダブルクリックでファイルが起動しない。
・マウス使えない ex:コピペが直観的にできない。
・変な形式のデータ(先頭行に題名が入っている。セルが結合されてる、など)は扱いにくい。
・Pandasの文法を少し覚えないといけない。

## (4)実際の動作
以下、エクセルでやる動作と、pandasで同じことを実現するために書くコードを対比していきます。
いかにpandasで効率化可能かがわかるかと思います(エクセルも便利ですけどね)。

* データの読み込み↓

f:id:KIOICHOEng:20190626093139p:plain

* データの表示↓

f:id:KIOICHOEng:20190626093213p:plain

* データの作成・表示・編集・削除↓

f:id:KIOICHOEng:20190626093238p:plain


* データのソート、入れ替え↓

f:id:KIOICHOEng:20190626093301p:plain

* よくやる動作↓

f:id:KIOICHOEng:20190626093315p:plain

* 列単位の集計

f:id:KIOICHOEng:20190626093329p:plain

最初はpandasの操作になれる必要がありますが、効率的に(かつ再現性を持って)作業ができると思います。
pandasの前提となるpythonも、5月のWindowsアップデートでインストールしやすくなったので、
試してみてください。

 

# 3.まとめ
・pandasを使うと(併用すると)エクセルの作業効率がアップする!

 

# 4.参考:
[Python Pandas を Excel代わりに利用してデータ操作](https://qiita.com/xza/items/2fa962260c229e39ea4c
[Excelから乗り換え? 手作業を省くpandasの使い方](https://blank-oldstranger.com/2018/03/25/python_pandas/
[「Python」がない……とおさらば! 「Windows 10 May 2019 Update」のちょっとした新機能](https://forest.watch.impress.co.jp/docs/serial/yajiuma/1188376.html)

以上です!