在数据的常见分布中,有一种是一对多存储的数据,即一个是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. 练习2 D 题- 第几天?

    Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   Description 给定一个日 ...

  2. 快速傅里叶变换(FFT)

    一.FFT的意义 DFT虽然实现了FT的计算机计算,但是计算量大,不适合实时的数字信号处理.FFT算法的出现,使DFT的计算效率更高,速度更快. 二.FFT与DFT的关系 从FT到DFT经过了数字角频 ...

  3. Egret 纹理、计时器

    1. 九宫切 典型例子就是圆角矩形的拉伸问题. 先去P一张绿色的圆角矩形. private createGameScene():void { var box:egret.Bitmap = new eg ...

  4. isKindOfClass:和isMemberOfClass:-b

    isKindOfClass: Returns a Boolean value that indicates whether the receiver is an instance of given c ...

  5. HBase eclipse开发环境搭建

    伪分布式环境安装 事先本机必须部署好了伪分布式hadoop开发环境将Hbase/lib下的 hadoop-core-*.jar 与 hadoop保持一致. 将hadoop下的复制到hbase下将had ...

  6. bbc 大数据

    http://video.sina.com.cn/v/b/107900125-2192582404.html

  7. BZOJ 3243 向量内积

    Description 两个\(d\)维向量\(A=[a_{1},a_{2},...,a_{d}]\)与\(B=[b_{1},b_{2},...,b_{d}]\)的内积为其相对应维度的权值的乘积和,即 ...

  8. The Wedding Juicer

    poj2227:http://poj.org/problem?id=2227 题意:给你一块矩形区域,这个矩形区域是由一个个方格拼起来的,并且每个方格有一个高度.现在给这个方格灌水,问最多能装多少水. ...

  9. SOC

    http://marsvaadin.iteye.com/blog/1311438 http://blog.csdn.net/cxxsoft/article/details/12610641

  10. Grails架设和配置--起步

    现在作这些配置有些轻车熟路了.. 因为RAILS ON RUBY和它真的有很多相像的,, 什么DRY,什么约定先于配置这些的概念... 然后,GITHUB上有好文档,可以一步一步的实践.. https ...