CCCマーケティング データベースマーケティング研究所の Tech Blog

研究所スタッフによる格闘記録やマーケティング界隈についての記事など

Python初心者のつぶやき

こんにちは。ソリューション開発チームの塩田です。
今日は私が入社してから始めたプログラミングで日々悩んでいること等についてお話したいと思います。

Pythonとの出会い

みなさまは日ごろプログラミングをされていますか?
私はこの会社に入社するまでプログラミングに触れたことが皆無でした。(入社前は臨床データをクリーニングしたり、分析したりをしていました。)
プログラミング言語でメジャーなものの一つにPythonがありますね。
研究所のメンバーはPythonを使用する人ばかりですので、入社後に私がPythonを使用できない!ことに、さぞ周りの人は驚いていたと思います。 入社してからは分析しようにも、今まで使用(愛用)していた分析ソフトの環境がないためRと、そしてPythonで分析をするしかない状態になり…(買ってもらえると思っていた統計ソフトを買ってもらえなかった)
入社して半年以上経ち、Pythonの勉強をはじめました。

苦難の日々

巷でいう「Python初心者」とは異なり、本当に初心者の私は、わからないことだらけで、本当に困っていました。
まず、基礎知識として必要な言葉を知りません。 カラムって何だろう?(カラムは列のことを意味します)…と思いながら苦戦していました。

強力なアシスト

かといって、すねていても、泣いていてもPythonができるようになるわけではありません。
少しずつですが、なるべくpythonを使用してデータ集計や加工等の業務を行うように努めました。
しかし、わからないことをネットで調べても、基礎知識がない状態では、意図する記事がみつけられないことも多く、思うようには進められないことに行き詰っていました。
そんな中で、研究所の技術開発チームのメンバーはどの方もPythonに詳しく、丁寧に教えてくれることがわかりました。
現在は、わからないことは、まず自分で調べて(ネットや過去に自分で書いたコードをみる)、どうしても解決できないことは技術開発チームのメンバーに教えてもらう、ということを繰り返しています。

具体的なタスクに活用

今年度の下期では社内のカフェの来店者人数を予測するモデルをPythonで作ることに取り組みました。

現実の壁

まず実際のデータにおいては分析する前の処理がとても重要です。
データの前処理を適切にしないことには始まらない、というのはどのツールで分析することにおいても共通するのだということも深く実感した次第です。
今回は来店者人数を作成するために会計履歴を用いて同じ日時で同じ残額の人を一人と加工する、日付から曜日を取得しダミー変数化をする等を行いました。

今回のちょっとしたお役立ちメモ

%load_ext autotime
pd.set_option('display.max_columns',200)
 pd.set_option('display.max_rows', 200)

  • 1行目のコードを書くとそのセルでの所要時間が表示されます
  • 2行目のコードを書くと出力されるカラム数が設定できます
  • 3行目のコードを書くと出力される行数が設定できます

今回の教訓

もちろんたくさんあるのですが、一つ厳選すると私の場合 「インデックスのリセットを忘れない」 です。   忘れて何度も変な現象が起きてしまいました。


df= df.reset_index()

主にreset indexを忘れると悲惨な目に合う場面の例

  • groupbyをしてデータをグループ分けとき
  • concatでデータフレームを縦に結合したとき

f:id:a_shioda:20200417101146p:plain
groupbyの後にindexをrestした場合
indexをrestしないとdateがindexとして扱われることになります。
この後、dateを変数として使用する際に困ったことが起こります。

最後に

これからもPythonの業務を通しての勉強は続きます。
よく使うけれど、毎回調べないと書けないコードなどをまとめたチートシートを作成中です。

  • 記載内容の一部
    • データセットのカラムのデータ型を確認する方法
      • object型のデータの詳細(strかdateか)も確認できる方法
    • データフレームのある列の要素を分割する方法
      • 20181219を2018と12と19に分割

順次こちらのブログで共有できたらいいなと思います。 今日もfor文がうまく書けなくて、悲しみにくれました。
しかしながら、新しいことができて、有効なoutputにつながったときの喜びはひとしおです。