在数据的常见分布中,有一种是一对多存储的数据,即一个是key,其他改key对应的多个value。例如气象数据等,每天有很多组,又或者是一个球员,他每天得多少分等等。我做这个东西有三种方法,即:常规编程法,数据库查询法以及pandas包提供的group方法。第一种方法我自己写出的代码比较繁琐,这里不做介绍。

  示例数据如下,统计每天对应的level的均值及方差等。
Date level
2014/6/10 8.11
2014/6/10 8.02
2014/6/11 8.04
2014/6/11 8.04
2014/6/11 8.13
2014/6/11 8.12
2014/6/11 8.13
2014/6/12 8.02
2014/6/12 8.03
2014/6/12 8.04
2014/6/12 8.05
2014/6/13 7.97
2014/6/13 7.96
2014/6/13 7.97
2014/6/13 7.96
2014/6/13 7.98
2014/6/13 7.95
2014/6/13 7.94
2014/6/13 7.95
2014/6/13 7.97
2014/6/13 7.96
2014/6/13 7.93
方法1:

  利用SQL查询语句,将上面的数据存储到数据库中(可以用access存储)的表中(level),然后利用下面的sql语句即可输出:
  SELECT DATE as 'Date',AVG(LEVEL) as 'Mean Level' FROM LEVEL GROUP BY DATE
  这样即可输入结果。
方法2:Python的pandas包提供一种group格式,即dict(字典格式),然后利用describe方法输出统计结果。
  pandas是pypi提供的众多包之一,其中提供了大量的统计方法。一般推荐安装这个包,可以在命令行管理器中使用:pip install pandas安装。
  代码:
# -*- coding: utf-8 -*-
"""
Created on Mon Aug 10 21:20:29 2015
 
@author: zhigang
"""
 
'''
Stats data by date
'''
import pandas as pd
 
data = pd.read_excel('waterLevel.xls',sheetname = 'zx')#zx是sheet名字
print(data.head(5))
#print(data.T)
grouped = data.groupby("Date")
print(grouped.describe())
 
然后输出结果:
                      level
Date                       
2014-06-10 count   2.000000
           mean    8.065000
           std     0.063640
           min     8.020000
           25%     8.042500
           50%     8.065000
           75%     8.087500
           max     8.110000
2014-06-11 count   5.000000
           mean    8.092000
           std     0.047645
           min     8.040000
           25%     8.040000
           50%     8.120000
           75%     8.130000
           max     8.130000
2014-06-12 count   4.000000
           mean    8.035000
           std     0.012910
           min     8.020000
           25%     8.027500
           50%     8.035000
           75%     8.042500
           max     8.050000
2014-06-13 count  11.000000
           mean    7.958182
           std     0.014709
           min     7.930000
           25%     7.950000
           50%     7.960000
           75%     7.970000
           max     7.980000
  上述的结果可以直接写入到exlce中,可将上述代码进行改动如下即可:
  description = grouped.describe()
  description.to_excel('stats_total.xls',sheet_name = 'stats')
效果:

  如果只需要提取mean,那么修改以下代码,将结果输出到excel中:
  escription = grouped.describe()
  index = [i for i in range(1,len(description),8)]
  #print(description.iloc[index].name,descrption.iloc[index].level)
  description.iloc[index].to_excel('stats.xls',sheet_name = 'stats')
代码文件见:https://github.com/zgcao/stats.git中的d2_pandas_stats_waterlevel.py

Python分类统计数据的更多相关文章

  1. python和数据科学(Anaconda)

    Python拥有着极其丰富且稳定的数据科学工具环境.遗憾的是,对不了解的人来说这个环境犹如丛林一般(cue snake joke).在这篇文章中,我会一步一步指导你怎么进入这个PyData丛林. 你可 ...

  2. 用 Python 排序数据的多种方法

    用 Python 排序数据的多种方法 目录 [Python HOWTOs系列]排序 Python 列表有内置就地排序的方法 list.sort(),此外还有一个内置的 sorted() 函数将一个可迭 ...

  3. python爬虫+数据可视化项目(关注、持续更新)

    python爬虫+数据可视化项目(一) 爬取目标:中国天气网(起始url:http://www.weather.com.cn/textFC/hb.shtml#) 爬取内容:全国实时温度最低的十个城市气 ...

  4. python调用数据返回字典dict数据的现象2

    python调用数据返回字典dict数据的现象2 思考: 话题1连接:https://www.cnblogs.com/zwgbk/p/10248479.html在打印和添加时候加上内存地址id(),可 ...

  5. python调用数据返回字典dict数据的现象1

    python调用数据返回字典dict数据的现象1 思考: 可以看到这两种情况,区别在于构造函数make()里赋值给字典dict的方式不同.使用相同的调用方式,而结果却完全不同.可以看到第二种情况才是我 ...

  6. python 小数据池,is and "==",decode ,encode

    一:小数据池 1.python运行中的缓存: 2.目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建过多的对象 3.python 缓存数据:缓存:int, str, bool.         ...

  7. 【转】Python用数据说明程序员需要掌握的技能

    [转]Python用数据说明程序员需要掌握的技能 https://blog.csdn.net/HuangZhang_123/article/details/80497951 当下是一个大数据的时代,各 ...

  8. Excel透视技巧-三级分类统计名单、分类统计数据

    Excel透视技巧-三级分类统计名单.分类统计数据 基础数据 透视表1--三级分类统计名单 透视表2-分类统计数据

  9. MySQL实验准备(二)--Python模拟数据(MySQL数据库)

    Python模拟数据(MySQL数据库) 数据模拟 目的:模拟多个表的插入和查询数据的模拟,再通过基准测试脚本测试服务器性能和收集数据,仿真模拟. 备注: 如果需要基础的python环境,可以查看&l ...

随机推荐

  1. Python Tutorial 学习(十)-- Brief Tour of the Standard Library

    10.1. Operating System Interface os库 import os os.getcwd() # Return the current working directory 'C ...

  2. cloudera目录位置

    http://www.aboutyun.com/thread-9189-1-1.html 这里来的嘿嘿. 1. 相关目录/var/log/cloudera-scm-installer : 安装日志目录 ...

  3. X86架构与ARM架构比较

    引言 CPU是怎样运作的? CPU的运作与人脑的运作差不多.先谈一下人这个系统的工作方式.眼镜.耳朵.舌头.皮肤等等感觉器官接收到“触觉”,把信息传给大脑,大脑把信息处理后,把处理结果送给手.脚.嘴等 ...

  4. BTREE与HASH的区别

    对于 B-tree 和 hash 数据结构的理解能够有助于预测不同存储引擎下使用不同索引的查询性能的差异,尤其是那些允许你选择 B-tree 或者 hash 索引的内存存储引擎. B-Tree 索引的 ...

  5. SharePoint Designer cannot open site error " the server could not complete your request"

    3.SPD cannot open site, in the log :Error when open web service: System.InvalidOperationException: A ...

  6. 快学Scala第一部分

    转载: 1.变量声明 val answer = 8 * 5 + 2; //常量 var counter = 0;    //变量 //在必要的时候 ,可以指定类型 val greeting:Strin ...

  7. Church encoding

    In mathematics, Church encoding is a means of representing data and operators in the lambda calculus ...

  8. 【算法Everyday】第二日 求子数组的最大和

    题目 // 3.求子数组的最大和 // 题目: // 输入一个整形数组,数组里有正数也有负数. // 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. // 求所有子数组的和的最大值. ...

  9. Android 金融项目整理

    本来是安安心心周末休假的时间,却被强征来加班.魔都今天雾霾严重,窗外都看不到360无死角都能看到的东方明珠.吃完午饭后睡一觉起来,觉得该给自己做点事情了.那就把项目里面的一些可圈可点的技术都罗列出来, ...

  10. 数据结构(动态树):[国家集训队2012]tree(伍一鸣)

    [问题描述] 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一: + u v c:将u到v的路径上的点的权值都加上自然数c: - u1 v1 u2 v2:将树中原 ...