天色グラフィティ

機械学習やプログラミングでいろいろ作って遊ぶブログ

Kaggleで使えるpandasテクニック集

f:id:ejinote:20190112195735j:plain

PythonでKaggleなどのデータ分析を行う際、pandasでゴリゴリ作業をすることが多いかと思います。

最近知って「めっちゃ便利やん!」ってなったものをまとめておきたいと思います。 全部の関数にドキュメントへのリンクを付けたので参考にしてください。

今回も検証にはTitanicのデータセットを用います。また、文中でのdf.hoge()はpandasのDataFrameのメソッドであることを、pd.hoge()はpandasの関数であることを表します。

df = read_csv('input/train.csv', index_col=0)
print(df.shape)
df.head()

f:id:ejinote:20180530220813p:plain

続きを読む

ARC098に参加しました (726位)

f:id:ejinote:20180527175257p:plain

ARC098に参加しました。C問題を1回TLEしてD問題が解けず無事死亡しました。 レートは1334→1298ということで、微減ですね。 D問題が解けなかったのは久しぶりなので練習不足を感じます。 最近Kaggleが忙しくて過去問埋めもあまりできていません。

前回の記事

amalog.hateblo.jp

続きを読む

AGC024に参加しました (445位)

f:id:ejinote:20180521194539p:plain

AGC024に参加しました。A・B・Cを3完し、Dを途中まで解いて散りました。レートは1240→1334となりました。 順調に水色を進んでいます。早く暖色になるぞという強い意志を持ってやっていきたいと思います。

と書いておいてウケるんですが、先週末土曜日にあったGCJ Round2はぶっちしてしまいました。 飲み会に参加していて気づいたら0時だったのでもう無理でした。しまった。

前回のAtCoder

amalog.hateblo.jp

続きを読む

ひとつの本屋で起きたこと。を読んで

バズっていたこの記事を読んでいろいろ考えたのでメモがてら残しておく。

nyawaraban2014.amebaownd.com

これを読んでいる間は「なんだこの絵に描いたような無能な上司は」「たった一人のマネジメントでこんなぐちゃぐちゃになるんだなぁ」といった感想しか持たなかったが、数時間置いて読み返すと背筋が薄ら寒くなった。

これ。

繁忙期も終わっていよいよ棚の構成を考えなければならなくなっていた頃、私は『岩波文庫はなるべく少なくするように』と言われてイライラしていた。 岩波書店の本は基本的に返品できない“買切”という制度。 でも大学の書店では教授が大好きだし、授業でも使うし、他の出版社の文庫よりはるかに売れる。 そりゃぁ選書が悪けりゃ在庫が増えるけど、2ヶ月ごとに100冊は注文しているけれど、ほとんど売り切れますよと言っても『もう注文はしないで在庫だけでまわして』と言われたのでカチンとキてその日のうちに100冊近く注文した。 (悪い店員だな、真似しないように!)

それもほとんど売り切れた。でもそういう店の特徴や実績は関係ないそうだ。

多くの店舗で岩波書店の本は(大学の書店ほど)売れていないのだろうし、買切制度も相まって在庫リスクも大きい。 だから全体としては岩波文庫を縮小する方に向かったほうが「プラマイ合わせるとトータルでは」良いのかもしれない。 でも、そうじゃないよね。各店舗もプラスにすべきだよね。

データ分析をしている人は常にこういうことが起きないか気を配るべきだと思う。 油断しているとそれぞれの店で事情は違うのに「全体としての傾向としてはそうだよね」みたいな戦略を取りがちになる。

現場の感覚はきっと正しいことが多くて、一方でデータで見えてくるものもあって、 どうバランスをとって両方を活かしていくか、ということが今後求められているマネジメント層やデータアナリストの在り方ではないだろうか。


ちなみに続編もだいぶ悲惨でした。

nyawaraban2014.amebaownd.com

GCJ Round1C 通過しました (1165位)

f:id:ejinote:20180506173658j:plain

Round1Aで敢えなく撃沈し、Round1Bは深夜1時からの開催に耐えきれず不参加。今回迎えたRound1Cで無事突破することができました。

内訳としては1問目をvisible、hiddenともに解き、2問目を通し、3問目はDPだなーと思いながら撃沈しました。DP力が低すぎる。

amalog.hateblo.jp

この日は朝早起きしてかるたの練習に行き、帰ってきて昼寝して自転車のメンテナンスをするという充実の土曜日でした。 これはもう通過間違い無しと思いながらGCJに臨みました。 ちなみに自転車はチェーンが錆びついてしまったので今度ちゃんと整備に出します。

続きを読む

AGC023に参加した (412位)

f:id:ejinote:20180428233923p:plain

アイコンが変わりました。クラウドソーシングサイトでお願いして写真を送ったところ、ものごっつい美化されて返ってきました。 かわいいのでありとあらゆるSNSのアイコンを変更して回っています。

さて、AGC023に参加しました。AとBを解いて、Cで撃沈した結果、412位でした。 レートは11211240になりました。 ついに水色に突入! 名実ともにABCを卒業ですね。

パフォーマンスは1800(青相当)だったので、ARCにちゃんと毎回出てればここまではあがるぞ、ということでしょうか。

500点〜800点の問題(ARCのD/E、AGCのA/B/Cあたり)を順に埋めていく季節が来たようです。

前回の記事

amalog.hateblo.jp

続きを読む

pandas + matplotlibで描くヒストグラムいろいろ

データ解析コンペの初期段階では、データを可視化して眺め、特徴を探すという探索的データ分析(EDA)が行われます。

Pythonでデータ分析している場合、可視化にはpandasのプロット機能、もしくはmatplotlibを使うことが多いでしょう。 今回はヒストグラムに絞って、僕が良く使っている書き方を紹介したいと思います。

題材とするデータにはKaggleのTitanicコンペのデータを使うことにしましょう。一部を抜き出してくるとこんな感じのデータになっています。今回はこのAgeの列を可視化してみたいと思います。

data = pd.read_csv('input/train.csv')
data[['Name', 'Age']].head()
Name Age
0 Braund, Mr. Owen Harris 22.0
1 Cumings, Mrs. John Bradley (Florence Briggs Th... 38.0
2 Heikkinen, Miss. Laina 26.0
3 Futrelle, Mrs. Jacques Heath (Lily May Peel) 35.0
4 Allen, Mr. William Henry 35.0
続きを読む