19
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

pandas-plyを使う

Last updated at Posted at 2014-12-15

pandas-plyを使う

内容

pandas_plyを使います.

pandasでRのdplyrみたいなことをする, というものです.

メソッドチェーンが使えると, コードが書きやすくて楽しいです.

今回は, 選挙のデータを使って遊んでみます.

衆院選小選挙区立候補者名と, 名前で検索した時のヒット件数のデータを使って, pandas-plyで遊びます.

コード

pandas_plyを使うまでの準備です.

import pandas as pd
from ply import install_ply, X, sym_call
install_ply(pd)

データを読み込みます.

立候補者名+ググった時のヒット件数のデータです.

data = pd.read_csv("../kouho.hit.list", encoding="utf-8", header=0)

print data.head(2)
   BLOCK    NAME       AGE    PARTY STATUS   HIT
0  北海道1区  横路 孝弘    73    民主    前   153000
1  北海道1区  野呂田 博之   56   共産     新  346000

党別に候補者数と平均年齢を調べる

グループ化して, 集計すればいいです.

partySummarize = (
    data
    .groupby('PARTY')
    .ply_select(
      meanAge=X.AGE.mean(),
      candidateNum=X.NAME.size(),
      )
    )

print partySummarize
       candidateNum    meanAge
PARTY                         
公明                9  52.111111
共産              292  53.188356
次世               39  50.461538
民主              178  50.595506
無所               45  53.177778
生活               13  54.230769
社民               18  56.833333
維新               77  45.311688
自民              283  53.346290
諸派                5  52.400000

30歳以下の立候補者

dplyr::filterに対応するのはply_whereです.

## under 30 
print (data
    .ply_where(X.AGE < 30)
    .head(10)
    )
21    北海道7区   鈴木 貴子   28    民主      前  1670000
88     秋田2区   緑川 貴士   29    民主      新   170000
174    埼玉1区    松本 翔   29    社民      新  3070000
221    千葉1区   吉田 直義   27    共産      新  1690000
269    東京1区   野崎 孝信   27    無所      新   530000
271    東京2区   石沢 憲之   27    共産      新   156000
297    東京8区   沢田 真吾   29    共産      新   400000
306   東京11区   下村 芽生   27    無所      新   380000
390   神奈川8区   若林 靖久   29    共産      新   525000
403  神奈川12区  味村 耕太郎   25    共産      新   106000

検索した時のヒット数(万件)

dplyr::mutateに対応する操作も, ply_selectの中で可能です.

print (data
    .ply_select(
      NAME=X.NAME,
      HIT_x10000 = X.HIT / 1000
      )
    .head(10)
    )
  HIT_x10000    NAME
0       15.30   横路 孝弘
1       34.60  野呂田 博之
2      268.00   船橋 利実
3       54.30   飯田 佳宏
4       54.10   吉川 貴盛
5      152.00   池田 真紀
6        7.42   松木 謙公
7        5.92   金倉 昌俊
8       33.50    荒井 聰
9       30.30   吉岡 弘子

カラムの順番が入れ替わるのなんでだろう.

感想

生pandas使うより楽しい.

並べ替えの方法が分かりません. dplyr::arrangeに対応するのは何?

以上です.


この投稿はGithub :point_right: Qiitaから投稿されました。

19
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?