share facebook facebook twitter menu hatena pocket slack

2016.12.27 TUE

ショロカレ 11 日目 | 初老と Python(2)〜 dict 型のデータを colletions モジュールで集計する 〜

川原 洋平

WRITTEN BY 川原 洋平

これは

初老丸アドベントカレンダー 11 日目の記事です。

初老丸 Advent Calendar 2016 - Qiita
集え、初老丸達よ。初老丸達による世界に向けた技術的(又はそれに関連する)な物語を綴るカレンダーです。我こそ初老丸という方、初老丸予備軍の方も奮ってご参加下さい。

qiita.com

ということで、小ネタ大ネタを交えて 12/25 まで張り切っていきましょう。

初老と Python(2)

福岡市の人口

上司:あー、この list の中に入っている dict 型のデータから各キー毎の数値を集計してくさ
初老:承知仕り、要は福岡市の男性と女性の人数を算出しろってことですな
渡された、dict 型データは以下のようなデータ。

_dict = [
    {'東区': {'男':151463, '女': 159614}},
    {'博多区': {'男': 111692, '女': 122038}},
    {'中央区': {'男': 86813, '女': 108072}},
    {'南区': {'男': 120229, '女': 137904}},
    {'城南区': {'男': 61674, '女': 69562}},
    {'早良区': {'男': 102788, '女': 115247}},
    {'西区': {'男': 100422, '女': 108619}}
]

2016 年 12 月現在の福岡市の区別の人口。(※こちらより引用させて頂きました。)

collections モジュール

dict 型を集計する場合、collections を使えば超簡単に集計することが出来るったい。(データ構造にも寄ると思う。複雑な dict だとそれなりに辛いと思う)

# -*- coding: utf-8 -*-

import collections

_dict = [
    {'東区': {'男':151463, '女': 159614}},
    {'博多区': {'男': 111692, '女': 122038}},
    {'中央区': {'男': 86813, '女': 108072}},
    {'南区': {'男': 120229, '女': 137904}},
    {'城南区': {'男': 61674, '女': 69562}},
    {'早良区': {'男': 102788, '女': 115247}},
    {'西区': {'男': 100422, '女': 108619}}
]

counter = collections.Counter()
for data in _dict:
    for k, v in data.iteritems():
        counter.update(v)
#
print '男: ' + str(counter.get('男'))
print '女: ' + str(counter.get('女'))

男女の人口を報告

初老:上司さん、以下のような感じでいいすかねー。

$ python test.py
男: 735081
女: 821056

初老:女子率高いですねー
上司:うむ、さすが福岡ったい

以上

メモでした。

元記事はこちら

ショロカレ 11 日目 | 初老と Python(2)〜 dict 型のデータを colletions モジュールで集計する 〜

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。