Python Pandas 数据分析实例1
USA.gov Data from Bitly(USA.gov数据集) 2011年,短链接服务(URL shortening service)商Bitly和美国政府网站USA.gov合作,提供了一份从用户中收集来的匿名数据,这些用户使用了结尾为.gov或.mil的短链接。在2011年,这些数据的动态信息每小时都会保存一次,并可供下载。不过在2017年,这项服务被停掉了。 代码实例 import json from collections import defaultdict from collections import Counter import pandas as pd import numpy as np def get_counts2(sequence): # 优化方法 counts = defaultdict(int) # 所有的值均会被初始化为0 for x in sequence: counts[x] += 1 return counts def get_counts(sequence): counts = {} for x in...
Python Pandas 分组连接
任何分组(groupby)操作都涉及原始对象的以下操作之一。它们是 - 分割对象 应用一个函数 结合的结果 在许多情况下,我们将数据分成多个集合,并在每个子集上应用一些函数。在应用函数中,可以执行以下操作 - 聚合 - 计算汇总统计 转换 - 执行一些特定于组的操作 过滤 - 在某些情况下丢弃数据 将数据拆分成组 Pandas对象可以分成任何对象。有多种方式来拆分对象,如 - obj.groupby(‘key’) obj.groupby([‘key1’,’key2’]) obj.groupby(key,axis=1) 聚合 聚合函数为每个组返回单个聚合值。当创建了分组(group by)对象,就可以对分组数据执行多个聚合操作。 一个比较常用的是通过聚合或等效的agg方法聚合 一次应用多个聚合函数 通过分组系列,还可以传递函数的列表或字典来进行聚合,并生成DataFrame作为输出...
Python Pandas 对缺失数据的处理
数据丢失(缺失)在现实生活中总是一个问题。 机器学习和数据挖掘等领域由于数据缺失导致的数据质量差,在模型预测的准确性上面临着严重的问题。 在这些领域,缺失值处理是使模型更加准确和有效的重点。 现在来看看如何处理使用_Pandas_的缺失值(如NA或NaN)。 检查缺失值 为了更容易地检测缺失值(以及跨越不同的数组dtype),Pandas提供了isnull()和notnull()函数,它们也是Series和DataFrame对象的方法 - 缺少数据的计算 在求和数据时,NA将被视为0 如果数据全部是NA,那么结果将是NA 清理/填充缺少数据 _Pandas_提供了各种方法来清除缺失的值。fillna()函数可以通过几种方法用非空数据“填充”NA值,在下面的章节中将学习和使用。 用标量值替换NaN 以下程序显示如何用0替换NaN。 填写NA前进和后退 使用重构索引章节讨论的填充概念,来填补缺失的值。 丢失缺少的值 如果只想排除缺少的值,则使用dropna函数和axis参数。 默认情况下,axis =...
Python Pandas 统计聚合函数
统计方法有助于理解和分析数据的行为。现在我们将学习一些统计函数,可以将这些函数应用到_Pandas_的对象上。 pct_change()函数 系列,DatFrames和Panel都有pct_change()函数。此函数将每个元素与其前一个元素进行比较,并计算变化百分比。 默认情况下,pct_change()对列进行操作; 如果想应用到行上,那么可使用axis = 1参数。 协方差 协方差适用于系列数据。Series对象有一个方法cov用来计算序列对象之间的协方差。NA将被自动排除。 协方差(Covariance)在概率论和统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。 协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。...
Python Pandas索引和选择数据
Python和NumPy索引运算符"[]"和属性运算符"."。 可以在广泛的用例中快速轻松地访问_Pandas_数据结构。然而,由于要访问的数据类型不是预先知道的,所以直接使用标准运算符具有一些优化限制。对于生产环境的代码,我们建议利用本章介绍的优化_Pandas_数据访问方法。 _Pandas_现在支持三种类型的多轴索引; 这三种类型在下表中提到 - 编号 索引 描述 1 .loc() 基于标签 2 .iloc() 基于整数 3 .ix() 基于标签和整数 .loc() _Pandas_提供了各种方法来完成基于标签的索引。 切片时,也包括起始边界。整数是有效的标签,但它们是指标签而不是位置。 .loc()具有多种访问方式,如 - 单个标量标签 标签列表 切片对象 一个布尔数组 loc需要两个单/列表/范围运算符,用","分隔。第一个表示行,第二个表示列。 .iloc() _Pandas_提供了各种方法,以获得纯整数索引。像python和numpy一样,第一个位置是基于0的索引。 各种访问方式如下...
Python Pandas选项和自定义
Pandas提供API来自定义其行为的某些方面,大多使用来显示。 API由五个相关函数组成。它们分别是 - get_option() set_option() reset_option() describe_option() option_context() 现在来了解函数是如何工作的。 get_option(param) get_option(param)需要一个参数,并返回下面输出中给出的值 - get_option需要一个参数,并返回下面输出中给出的值 - display.max_rows 显示默认值。解释器读取此值并显示此值作为显示上限的行。 display.max_columns...
Python Pandas字符串和文本数据
_Pandas_提供了一组字符串函数,可以方便地对字符串数据进行操作。 最重要的是,这些函数忽略(或排除)丢失/NaN值。 几乎这些方法都使用Python字符串函数(请参阅: http://docs.python.org/3/library/stdtypes.html#string-methods )。 因此,将Series对象转换为String对象,然后执行该操作。 下面来看看每个操作的执行和说明。 编号 函数 描述 1 lower() 将Series/Index中的字符串转换为小写。 2 upper() 将Series/Index中的字符串转换为大写。 3 len() 计算字符串长度。 4 strip() 帮助从两侧的系列/索引中的每个字符串中删除空格(包括换行符)。 5 split(' ') 用给定的模式拆分每个字符串。 6 cat(sep='...
Python Pandas之迭代和排序
Pandas对象之间的基本迭代的行为取决于类型。当迭代一个系列时,它被视为数组式,基本迭代产生这些值。其他数据结构,如:DataFrame和Panel,遵循类似惯例迭代对象的键。 简而言之,基本迭代(对于i在对象中)产生 - Series - 值 DataFrame - 列标签 Pannel - 项目标签 迭代DataFrame 迭代DataFrame提供列名 要遍历数据帧(DataFrame)中的行,可以使用以下函数 - iteritems() - 迭代(key,value)对 iterrows() - 将行迭代为(索引,系列)对 itertuples() - 以namedtuples的形式迭代行 iteritems() 将每个列作为键,将值与值作为键和列值迭代为Series对象。 iterrows() iterrows()返回迭代器,产生每个索引值以及包含每行数据的序列 itertuples() itertuples()方法将为DataFrame中的每一行返回一个产生一个命名元组的迭代器。元组的第一个元素将是行的相应索引值,而剩余的值是行值。 Pandas...
Python Pandas 重建索引
重新索引会更改DataFrame的行标签和列标签。重新索引意味着符合数据以匹配特定轴上的一组给定的标签。 可以通过索引来实现多个操作 - 重新排序现有数据以匹配一组新的标签。 在没有标签数据的标签位置插入缺失值(NA)标记。 import pandas as pd import numpy as np N = 20 df = pd.DataFrame({ ‘A’: pd.date_range(start=‘2016-01-01’, periods=N, freq=‘D’), ‘x’: np.linspace(0, stop=N - 1, num=N), ‘y’: np.random.rand(N), ‘C’: np.random.choice([‘Low’, ‘Medium’, ‘High’], N).tolist(), ‘D’: np.random.normal(100, 10, size=(N)).tolist() }) print(df) # reindex the DataFrame df_reindexed = df.reindex(index=[0, 2,...
Python Pandas函数应用
要将自己或其他库的函数应用于_Pandas_对象,应该了解三种重要的方法。以下讨论了这些方法。 使用适当的方法取决于函数是否期望在整个DataFrame,行或列或元素上进行操作。 表格函数应用:pipe() 行或列函数应用:apply() 元素函数应用:applymap() 表格函数应用 可以通过将函数和适当数量的参数作为管道参数来执行自定义操作。 因此,对整个DataFrame执行操作 行或列智能函数应用 可以使用apply()方法沿DataFrame或Panel的轴应用任意函数,它与描述性统计方法一样,采用可选的轴参数。 默认情况下,操作按列执行,将每列列为数组。 元素智能函数应用 并不是所有的函数都可以向量化(也不是返回另一个数组的NumPy数组,也不是任何值),在DataFrame上的方法applymap()和类似地在Series上的map()接受任何Python函数,并且返回单个值。 代码实例: import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5, 3),...