在数据的常见分布中,有一种是一对多存储的数据,即一个是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. 通用方法解决dedecms导航调用二级、三级栏目菜单

    博客之前做网站的时候经常会遇到二级菜单.三级菜单.了解dede的人都知道从5.5版本开始都有二级菜单的调用方法了,网上也有不少的教程文章.不过这个调用需要修改dede源码的二级菜单样式.个人感觉不是很 ...

  2. test知识

    内部测试SIT ——system integration testcase 用户测试UAT——user acceptance test SIT是集成测试UAT是验收测试从时间上看,UAT要在SIT后面 ...

  3. JS拖动div的原理

    要实现移动窗体,首先要捕获三个参数:1.a = 鼠标点击时的坐标.2.b = 被移动窗体的左顶点坐标.3.c = 鼠标移动时的坐标.然后还要算出你鼠标无论点击窗体哪个位置,移动改变的都是 (d = 窗 ...

  4. Unity3d shader内置矩阵

    内置矩阵 支持的矩阵(float4x4):UNITY_MATRIX_MVP        当前模型视图投影矩阵UNITY_MATRIX_MV           当前模型视图矩阵UNITY_MATRI ...

  5. 巧用powerpoint制作符合期刊要求的复合图

  6. "Ray, Pass me the dishes!"

    uvaLive3938:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&pag ...

  7. Request.url用法

    原文:Request.url用法 我們在開發網頁應用程式,時常需要去解析網址(Request.Url)的每個片段,進行一些判斷.例如說 "http://localhost:1897/News ...

  8. 【单调队列】Vijos P1771 瑞士轮 (NOIP2011普及组第三题)

    题目链接: https://vijos.org/p/1771 题目大意: 给定2N个人(N<=100 000)和其初始分数.能力值(能力两两不同),比赛M次(M<=50),每次PK都是按分 ...

  9. 【26】Remove Duplicates from Sorted Array

    [26]Remove Duplicates from Sorted Array Given a sorted array, remove the duplicates in place such th ...

  10. Nodejs in Visual Studio Code 13.构建单页应用Scrat示例挖一挖

    1.开始 Scrat作者说要搞个很碉堡的示例,果然就搞出来了,如果要学习并使用Scrat,可以从官方示例开始,简直太方便了. 2.Scrat示例 目录 component_modules : 公共组件 ...