pandas exercise one

pandas基础应用   入门

# -*- coding: utf-8 -*-
import json
import pprint
from collections import defaultdict,Counter
import pandas as pd
import numpy as np
import pylab as pl
from pandas import DataFrame,Series #DataFrame将数据表示为一个列表

def get_counts(sequence):
    counts=defaultdict(int) #所有的值都会被初始化为0
    for x in sequence:
        counts[x]+=1
    return counts

def top_counts(count_dict,n=10):
    # value_key_pairs=[(count,tz) for tz,count in count_dict.items()] #列表排序,默认以第一个单位
    # value_key_pairs.sort(key=lambda x:x[0])
    # return value_key_pairs[-n:]
    counts=Counter(count_dict)
    top10=counts.most_common(10)
    return top10

if __name__ == '__main__':
    path = 'datas/usagov_bitly_data2012-03-16-1331923249.txt'
    records = [json.loads(line) for line in open(path)]
    # time_zones = [rec['tz'] for rec in records if 'tz' in rec]
    # count_dict=get_counts(time_zones)
    # tz_top10=top_counts(count_dict)
    frame=DataFrame(records)
    clean_tz=frame['tz'].fillna('Missing') #fillna函数可以替换缺失值(NA),而未知值(空字符串)则可以通过布尔型数组索引加以替换
    clean_tz[clean_tz=='']='Unknown'
    tz_counts = clean_tz.value_counts()
    # tz_counts[:10].plot(kind='barh',rot=0)
    results= Series([x.split()[0] for x in frame.a.dropna()])
    results.value_counts()
    cframe=frame[frame.a.notnull()] #将agent缺失的数据剔除
    operating_system=np.where(cframe['a'].str.contains('Windows'),'Windows','Not Windows') #计算各行中是否有‘Windows
    by_tz_os=cframe.groupby(['tz',operating_system])
    agg_counts=by_tz_os.size().unstack().fillna(0) #size 计数,unstack 对计数结果进行重塑
    indexer=agg_counts.sum(1).argsort() #根据agg_counts中的行数构造一个间接索引数组
    count_subset=agg_counts.take(indexer)[-10:]
    # count_subset.plot(kind='barh',stacked=True)
    print(count_subset)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值