在数据的常见分布中,有一种是一对多存储的数据,即一个是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. Ubuntu 创建快捷方式的方法

    ln -s  /要创建快捷方式的地方/ /创建在哪里/

  2. JavaScript生成器+随机数的使用

    function* getIndex(indexList){ var len = indexList.length; var m; while(indexList.length > 0){ m ...

  3. php开发入门教程

    LAMP window:WAMP(windows,apache,mysql,php) LAMP是 Linux,Apache,MySQL和PHP的缩写,是我们提供 Web 服务的软件基础. 对于 Lin ...

  4. Python 更改cmd中的字色

    没有gui的python程序是在cmd窗口中运行的,黑色背景,灰色的字,确实很复古,不符合现代人的使用习惯-同事在用我写的小工具时,清一色的字色,看起来会没有重点性,因此我就想通过更改cmd中的字色来 ...

  5. 三种常见字符编码简介:ASCII、Unicode和UTF-8

    什么是字符编码? 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255( ...

  6. 转:gpio_request

    今天再次学习SD卡驱动,遇到pgio_request这个函数,始终不知道其什么意思,看了几遍源代码才有了点感觉.现将其关键部分再此说明一下,以备自己以后复习,或是路客参考. 一般gpio_reques ...

  7. mapreduce (四) MapReduce实现Grep+sort

    1.txt dong xi cheng xi dong cheng wo ai beijing tian an men qiche dong dong dong 2.txt dong xi cheng ...

  8. 如何把iOS代码编译为Android应用

    新闻 <iPhone 6/6 Plus中国销量曝光:单月销量650万>:据iSuppli Corp.中国研究总监王阳爆料,iPhone 6和iPhone 6 Plus在国内受欢迎的情况大大 ...

  9. html中混入的特殊字符

    从设计那里拿来的psd中常常会有全角的单双引号. 如果只是拷贝这些字符到做好的html里面,顶多看到乱码再加以改正. 但是,如果是通篇的doc,需要加上各种html语义标签,在拷贝来的doc文字之间加 ...

  10. C# IOCP服务器

    C# IOCP服务器 @by  群63438968 这是我写的unity 网络斗地主的服务器源码,本来我想只公开部份服务端代码的,但是为了回报大家的热情,以及曾经和现在的好兄弟,我计划慢慢开源! 告诉 ...