読者です 読者をやめる 読者になる 読者になる

鴨川にあこがれる日々

軽い技術っぽい記事かいてます

pandasのメモ

python プログラミング

はじめに

個人用のpandasメモです.

pandas
Python Data Analysis Library — pandas: Python Data Analysis Library


機械学習Rubyでやるのはライブラリがなく関係でほぼ不可能なので,いい加減Pythonに入門しようと思いました.

pandas,scikit-learn,gensimあたりが使えれば良さげな印象*1なのでまずはpandasから触ってみます.
gensimはword2vec入ってますし,scikit-learnはNMI入っててとても羨ましい...

環境

本題

データはnzw.hatenablog.jp
を使います.

pandasを使うとSQLっぽくデータの集計ができます.

csvファイルの読み込み

>>> import pandas as pd
>>> import numpy as np

>>> data = pd.read_csv("data/train.csv")

列をGroupごとに集計

>>> data.groupby(["Category"]).size()

Category
ARSON                            1513
ASSAULT                         76876
BAD CHECKS                        406
BRIBERY                           289
...

複数列でGroupごとに集計

SQLでいうと

SELECT col1,col2.count(*) FROM data GROUBY BY 'co1','col2'

です.

>>> data.groupby(["Category","DayOfWeek"]).size()
Category       DayOfWeek
ARSON          Friday         220
               Monday         228
               Saturday       220
               Sunday         211
               Thursday       199
               Tuesday        235
               Wednesday      200
ASSAULT        Friday       11160
               Monday       10560
...

任意の列だけ取り出す

>>> data[["Address","Dates"]]
                              Address                Dates
0                  OAK ST / LAGUNA ST  2015-05-13 23:53:00
1                  OAK ST / LAGUNA ST  2015-05-13 23:53:00
2           VANNESS AV / GREENWICH ST  2015-05-13 23:33:00
3            1500 Block of LOMBARD ST  2015-05-13 23:30:00
4           100 Block of BRODERICK ST  2015-05-13 23:30:00
...

適宜足していきます.

*1:怒られそう