《Python Cookbook(第3版)中文版》——6.13 数据汇总和统计

简介:

本节书摘来自异步社区《Python Cookbook(第3版)中文版》一书中的第6章,第6.13节,作者[美]David Beazley , Brian K.Jones,陈舸 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

6.13 数据汇总和统计

6.13.1 问题

我们需要在大型数据库中查询数据并由此生成汇总或者其他形式的统计数据。

6.13.2 解决方案

对于任何涉及统计、时间序列以及其他相关技术的数据分析问题,都应该使用Pandas库(http://pandas.pydata.org)。

为了小试牛刀,下面这个例子使用Pandas来分析芝加哥的老鼠和啮齿动物数据库(https:// data.cityofchicago.org/Service-Requests/311-Service-Requests-Rodent-Baiting/97t6-zrhs)。在写作本书时,这个CSV文件中有大约74 000条数据:

>>> import pandas
>>> # Read a CSV file, skipping last line
>>> rats = pandas.read_csv('rats.csv', skip_footer=1)
>>> rats
<class 'pandas.core.frame.DataFrame'>
Int64Index: 74055 entries, 0 to 74054
Data columns:
Creation Date                 74055 non-null values
Status                     74055 non-null values
Completion Date                 72154 non-null values
Service Request Number         74055 non-null values
Type of Service Request         74055 non-null values
Number of Premises Baited         65804 non-null values
Number of Premises with Garbage    65600 non-null values
Number of Premises with Rats     65752 non-null values
Current Activity             66041 non-null values
Most Recent Action             66023 non-null values
Street Address                 74055 non-null values
ZIP Code                     73584 non-null values
X Coordinate                 74043 non-null values
Y Coordinate                 74043 non-null values
Ward                         74044 non-null values
Police District                 74044 non-null values
Community Area                 74044 non-null values
Latitude                     74043 non-null values
Longitude                     74043 non-null values
Location                     74043 non-null values
dtypes: float64(11), object(9)
>>> # Investigate range of values for a certain field
>>> rats['Current Activity'].unique()
array([nan, Dispatch Crew, Request Sanitation Inspector], dtype=object)
>>> # Filter the data
>>> crew_dispatched = rats[rats['Current Activity'] == 'Dispatch Crew']
>>> len(crew_dispatched)
65676
>>>
>>> # Find 10 most rat-infested ZIP codes in Chicago
>>> crew_dispatched['ZIP Code'].value_counts()[:10]
60647         3837
60618         3530
60614         3284
60629         3251
60636         2801
60657         2465
60641         2238
60609         2206
60651         2152
60632         2071
>>>
>>> # Group by completion date
>>> dates = crew_dispatched.groupby('Completion Date')
<pandas.core.groupby.DataFrameGroupBy object at 0x10d0a2a10>
>>> len(dates)
472
>>>
>>> # Determine counts on each day
>>> date_counts = dates.size()
>>> date_counts[0:10]
Completion Date
01/03/2011               4
01/03/2012             125
01/04/2011              54
01/04/2012              38
01/05/2011              78
01/05/2012             100
01/06/2011             100
01/06/2012              58
01/07/2011               1
01/09/2012              12
>>>

>>> # Sort the counts
>>> date_counts.sort()
>>> date_counts[-10:]
Completion Date
10/12/2012             313
10/21/2011             314
09/20/2011             316
10/26/2011             319
02/22/2011             325
10/26/2012             333
03/17/2011             336
10/13/2011             378
10/14/2011             391
10/07/2011             457
>>>

你没看错,2011年10月7号对于老鼠来说的确是非常忙碌的一天。

6.13.3 讨论

Pandas是一个庞大的库,它还有更多的功能,但我们无法在此一一描述。但是,如果需要分析大型的数据集、将数据归组、执行统计分析或者其他类似的任务,那么Pandas绝对值得一试。

相关文章
|
4天前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。
|
25天前
|
数据格式 Python
如何使用Python的Pandas库进行数据透视图(melt/cast)操作?
Pandas的`melt()`和`pivot()`函数用于数据透视。基本步骤:导入pandas,创建DataFrame,然后使用这两个函数转换数据格式。示例代码展示了如何通过`melt()`转为长格式,再用`pivot()`恢复为宽格式。输入数据是包含&#39;Name&#39;和&#39;Age&#39;列的DataFrame,最终结果经过转换后呈现出不同的布局。
38 6
|
25天前
|
数据挖掘 数据处理 索引
如何使用Python的Pandas库进行数据筛选和过滤?
Pandas是Python数据分析的核心库,其DataFrame数据结构便于数据操作。筛选与过滤数据主要包括:导入pandas,创建DataFrame,通过布尔索引、`query()`或`loc[]`、`iloc[]`方法筛选。
|
1天前
|
机器学习/深度学习 数据采集 数据挖掘
Python 的科学计算和数据分析: 解释什么是数据规整(Data Wrangling)?
数据规整是将原始数据转化为适合分析和建模的格式的关键步骤,涉及缺失值处理(删除、填充、插值)、异常值检测与处理、数据类型转换、重采样、数据合并、特征选择和特征变换等任务。这些预处理步骤确保数据质量和准确性,为后续的数据分析和机器学习模型构建奠定基础。
12 4
|
3天前
|
存储 安全 数据处理
python如何将数据写到数组里
【4月更文挑战第12天】
|
4天前
|
机器学习/深度学习 数据可视化 数据挖掘
用Python进行健康数据分析:挖掘医疗统计中的信息
【4月更文挑战第12天】Python在医疗健康数据分析中扮演重要角色,具备数据处理、机器学习、可视化及丰富生态的优势。基本流程包括数据获取、预处理、探索、模型选择与训练、评估优化及结果可视化。应用案例包括疾病预测、药物效果分析和医疗资源优化,例如使用RandomForestClassifier进行疾病预测,Logit模型分析药物效果,以及linprog优化医疗资源配置。
|
9天前
|
测试技术 Python
288统计出现最多次的字母(PYTHON)
288统计出现最多次的字母(PYTHON)
|
14天前
|
人工智能 监控 数据可视化
【Python】Python商业公司贸易业务数据分析可视化(数据+源码)【独一无二】
【Python】Python商业公司贸易业务数据分析可视化(数据+源码)【独一无二】
|
18天前
|
机器学习/深度学习 人工智能 数据可视化
基于Python的数据可视化技术在大数据分析中的应用
传统的大数据分析往往注重数据处理和计算,然而数据可视化作为一种重要的技术手段,在大数据分析中扮演着至关重要的角色。本文将介绍如何利用Python语言中丰富的数据可视化工具,结合大数据分析,实现更直观、高效的数据展示与分析。
|
22天前
|
数据可视化 数据挖掘 Python
Python中的数据可视化工具Matplotlib简介与实践
在本文中,我们将介绍Python中常用的数据可视化工具Matplotlib,包括其基本概念、常用功能以及实际应用。通过学习Matplotlib,读者可以更好地理解和运用数据可视化技术,提升数据分析与展示的能力。