您的位置:首页 > 编程语言 > Python开发

Python分类统计数据

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

示例数据如下,统计每天对应的level的均值及方差等。
Datelevel
2014/6/108.11
2014/6/108.02
2014/6/118.04
2014/6/118.04
2014/6/118.13
2014/6/118.12
2014/6/118.13
2014/6/128.02
2014/6/128.03
2014/6/128.04
2014/6/128.05
2014/6/137.97
2014/6/137.96
2014/6/137.97
2014/6/137.96
2014/6/137.98
2014/6/137.95
2014/6/137.94
2014/6/137.95
2014/6/137.97
2014/6/137.96
2014/6/137.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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: