[PYTHON] Utilisez pandas-ply

Utilisez pandas-ply

Contenu

Utilisez pandas_ply.

Faites quelque chose comme le dplyr de R avec les pandas.

Si vous pouvez utiliser la chaîne de méthodes, le code est facile à écrire et amusant.

Cette fois, jouons avec les données électorales.

Utilisation du nom du candidat du petit district électoral de la Chambre des représentants et des données sur le nombre de résultats lors de la recherche par nom, pandas -Jouer avec pli.

code

Préparatifs pour l'utilisation de pandas_ply.

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

Lisez les données.

Ce sont les données du nom du candidat + le nombre de résultats lors de la recherche sur Google.

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

print data.head(2)
   BLOCK    NAME       AGE    PARTY STATUS   HIT
0 Hokkaido 1er quartier Takahiro Yokomichi 73 Avant la démocratie 153000
1 Hokkaido 1 Ward Hiroyuki Noroda 56 Communiste Nouveau 346000

Découvrez le nombre de candidats et l'âge moyen par parti

Vous pouvez les regrouper et les agréger.

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

print partySummarize
       candidateNum    meanAge
PARTY                         
Komei 9 52.111111
Communiste 292 53.188356
Nouvelle génération 39 50.461538
Démocratie 178 50.595506
Nulle part 45 53.177778
Vie 13 54.230769
Entreprise citoyenne 18 56.833333
Restauration 77 45.311688
LDP 283 53.346290
Diverses factions 5 52.400000

Candidats de moins de 30 ans

Le dplyr :: filter correspond à ply_where.

## under 30 
print (data
    .ply_where(X.AGE < 30)
    .head(10)
    )
21 Takako Suzuki, 7 quartiers, Hokkaido 28 Avant la démocratie 1670000
88 Akita 2 Ward Midorikawa Takashi 29 Nouveau démocrate 170000
174 Saitama 1 Ward Sho Matsumoto 29 Company Private New 3070000
221 Chiba 1st Ward Naoyoshi Yoshida 27 Communiste Nouveau 1690000
269 Tokyo 1st Ward Takanobu Nozaki 27 Nowhere New 530000
271 Noriyuki Ishizawa, 2nd Ward, Tokyo 27 Communiste Nouveau 156000
297 Tokyo 8 Ward Shingo Sawada 29 Communiste Nouveau 400000
306 Tokyo 11th Ward Shimomura Mei 27 Nowhere New 380000
390 Kanagawa 8 Ward Yasuhisa Wakabayashi 29 Communiste Nouveau 525000
403 Kanagawa 12 Ward Kotaro Amimura 25 Communiste Nouveau 106000

Nombre de résultats lors de la recherche (10 000)

Les opérations correspondant à dplyr :: mutant sont également possibles dans ply_select.

print (data
    .ply_select(
      NAME=X.NAME,
      HIT_x10000 = X.HIT / 1000
      )
    .head(10)
    )
  HIT_x10000    NAME
0       15.30 Takahiro Yokomichi
1       34.60 Hiroyuki Noroda
2      268.00 Toshimi Funahashi
3       54.30 Yoshihiro Iida
4       54.Dix Takamori Yoshikawa
5      152.00 Maki Ikeda
6        7.42 Kenko Matsuki
7        5.92 Masatoshi Kanakura
8       33.50 Satoshi Arai
9       30.30 Hiroko Yoshioka

Je me demande pourquoi l'ordre des colonnes est changé.

Impressions

Plus amusant que d'utiliser des pandas bruts.

Je ne sais pas comment trier. Qu'est-ce qui correspond à dplyr :: arrange?

c'est tout.


Ce message a été publié par Github: point_right: Qiita.

Recommended Posts

Utilisez pandas-ply
Utilisez DeepLabCut
Utiliser pycscope
Utilisez des collections.
Utilisation: Django-MySQL
Utilisez Pygments.rb
Utilisez Numpy
Utilisez GitPython
Utiliser Miniconda
Utiliser le TSC invariant
Pourquoi utiliser Linux
[C] Utilisez qsort ()
Utilisons pytube
Utilisez des références faibles
Utiliser django-debug-toolbar de manière non locale
Utiliser l'optimisation des combinaisons