首页 > 编程知识 正文

在python中重塑,Python重定向

时间:2023-12-27 22:27:42 阅读:326590 作者:LWBE

本文目录一览:

python怎么做数据分析

链接:

提取码:7234

炼数成金:Python数据分析。Python是一种面向对象、直译式计算机程序设计语言。也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用。 Python语法简捷而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起。

课程将从Python的基本使用方法开始,一步步讲解,从ETL到各种数据分析方法的使用,并结合实例,让学员能从中借鉴学习。

课程目录:

Python基础

Python的概览——Python的基本介绍、安装与基本语法、变量类型与运算符

了解Python流程控制——条件、循环语句与其他语句

常用函数——函数的定义与使用方法、主要内置函数的介绍

.....

Python 数据处理(二十八)—— MultiIndex 分层索引

本节将介绍使用多级索引(分层索引)和其他高级索引技巧

分层或多级次索引的存在是非常有意义的,因为它打开了复杂的数据分析和操作的大门,特别是处理高维数据

从本质上讲,它允许您在较低维度的数据结构包括 Series(1d) 和 DataFrame(2d) 中存储和操作任意维度的数据

在本节中,我们将展示分层索引的确切含义,以及如何结合前面介绍的所有 pandas 索引功能使用

在 0.24.0 版本之后, MultiIndex.label 重命名为 MultiIndex.codes 。 MultiIndex.set_labels 重命名为 MultiIndex.set_codes .

MultiIndex 对象是标准 Index 对象的分层模式,它通常在 pandas 对象中存储轴标签

你可以把 MultiIndex 看成一个元组数组,其中每个元组都是唯一的。 MultiIndex 有如下创建方式

当传递给 Index 构造函数一个元组列表时,它将尝试返回一个 MultiIndex 。

下面的示例演示了初始化 MultiIndex 的不同方法。

当你想要对两个可迭代对象中的每个元素进行两两配对时,可以使用 MultiIndex.from_product()

您也可以使用 MultiIndex.from_frame() 方法直接从 DataFrame 中构造一个 MultiIndex 。

为了方便起见,你可以直接将数组列表传递给 Series 或 DataFrame 的 index 参数来自动构造一个 MultiIndex

所有的 MultiIndex 构造函数都接受一个 name 参数,该参数存储索引级别的名称。如果没有设置,则值为 None

索引可以放在任何轴上,索引的层级也可以随你设置

这已经简化了较高层次的索引,使控制台的输出更容易看清。

注意 ,索引的显示方式可以通过 pandas.set_options() 中的 multi_sparse 选项来控制。

值得注意的是,将元组用作轴上的原子标签也是可以的

多索引之所以重要,是因为它允许您执行分组、选择和重塑操作,我们将在下面以及后续部分中描述这些操作

get_level_values() 方法能够返回特定级别的标签向量

分级索引的一个重要特性是,您可以通过标识数据中的子组的部分标签来选择数据

部分选择以一种完全类似于在常规 DataFrame 中选择列的方式,返回的结果会 "降低" 分层索引的级别

MultiIndex 会保留索引的所有已经定义了的级别,尽管它们实际上可能并没有被使用。

在对索引进行切片时,您可能会注意到这一点。例如

这样做的目的是为了避免重新计算级别,以提高切片的性能。如果你只想看某一级别,可以使用 get_level_values() 方法

可以使用 remove_unused_levels() 方法重构 MultiIndex

在具有 MultiIndex 的不同索引对象之间的操作会自动对齐

Series/DataFrames 的 reindex() 方法可以传入一个 MultiIndex ,甚至可以是一个元组列表或元组数组

Python数据分析笔记#8.2.2 索引上的合并

「目录」

数据规整:聚合、合并和重塑

Data Wrangling: Join, Combine, and Reshape

-------- 数据库风格的DataFrame合并

-------- 索引上的合并

上一篇笔记讲的是如何根据DataFrame的列名来链接两个DataFrame对象。

有时候我们要根据DataFrame中的index索引来合并数据。这种情况下,我们可以传入 left_index=True或right_index=True 或两个都传入来说明索引被用作链接键。

我们先创建两个DataFrame,指明根据第一个DataFrame的'key'列和第二个DataFrame的index索引来合并数据:

默认的merge方法是求取链接键的交集,通过传入how='outer'可以得到它们的并集:

层次化索引数据的合并

对于层次化索引的数据的合并,我们要以 列表的形式指明用作合并键的多个列 。

比如下面我们就指定根据第一个DataFrame的'key1'列和'key2'列以及第二个DataFrame的index索引来合并:

同时使用双方的索引来合并也没问题:

join方法

DataFrame还有便捷的实例方法join,它能更方便的实现按索引合并,但要求没有重叠的列。

我们还可以向join传入一组DataFrame,类似于concat函数,实现多个DataFrame的合并拼接:

-END-

Python pandas用法

在Python中,pandas是基于NumPy数组构建的,使数据预处理、清洗、分析工作变得更快更简单。pandas是专门为处理表格和混杂数据设计的,而NumPy更适合处理统一的数值数组数据。

使用下面格式约定,引入pandas包:

pandas有两个主要数据结构:Series和DataFrame。

Series是一种类似于一维数组的对象,它由 一组数据 (各种NumPy数据类型)以及一组与之相关的 数据标签(即索引) 组成,即index和values两部分,可以通过索引的方式选取Series中的单个或一组值。

pd.Series(list,index=[ ]) ,第二个参数是Series中数据的索引,可以省略。

Series类型索引、切片、运算的操作类似于ndarray,同样的类似Python字典类型的操作,包括保留字in操作、使用.get()方法。

Series和ndarray之间的主要区别在于Series之间的操作会根据索引自动对齐数据。

DataFrame是一个表格型的数据类型,每列值类型可以不同,是最常用的pandas对象。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。

pd.DataFrame(data,columns = [ ],index = [ ]) :columns和index为指定的列、行索引,并按照顺序排列。

如果创建时指定了columns和index索引,则按照索引顺序排列,并且如果传入的列在数据中找不到,就会在结果中产生缺失值:

数据索引 :Series和DataFrame的索引是Index类型,Index对象是不可修改,可通过索引值或索引标签获取目标数据,也可通过索引使序列或数据框的计算、操作实现自动化对齐。索引类型index的常用方法:

重新索引 :能够改变、重排Series和DataFrame索引,会创建一个新对象,如果某个索引值当前不存在,就引入缺失值。

df.reindex(index, columns ,fill_value, method, limit, copy ) :index/columns为新的行列自定义索引;fill_value为用于填充缺失位置的值;method为填充方法,ffill当前值向前填充,bfill向后填充;limit为最大填充量;copy 默认True,生成新的对象,False时,新旧相等不复制。

删除指定索引 :默认返回的是一个新对象。

.drop() :能够删除Series和DataFrame指定行或列索引。

删除一行或者一列时,用单引号指定索引,删除多行时用列表指定索引。

如果删除的是列索引,需要增加axis=1或axis='columns'作为参数。

增加inplace=True作为参数,可以就地修改对象,不会返回新的对象。

在pandas中,有多个方法可以选取和重新组合数据。对于DataFrame,表5-4进行了总结

适用于Series和DataFrame的基本统计分析函数 :传入axis='columns'或axis=1将会按行进行运算。

.describe() :针对各列的多个统计汇总,用统计学指标快速描述数据的概要。

.sum() :计算各列数据的和

.count() :非NaN值的数量

.mean( )/.median() :计算数据的算术平均值、算术中位数

.var()/.std() :计算数据的方差、标准差

.corr()/.cov() :计算相关系数矩阵、协方差矩阵,是通过参数对计算出来的。Series的corr方法用于计算两个Series中重叠的、非NA的、按索引对齐的值的相关系数。DataFrame的corr和cov方法将以DataFrame的形式分别返回完整的相关系数或协方差矩阵。

.corrwith() :利用DataFrame的corrwith方法,可以计算其列或行跟另一个Series或DataFrame之间的相关系数。传入一个Series将会返回一个相关系数值Series(针对各列进行计算),传入一个DataFrame则会计算按列名配对的相关系数。

.min()/.max() :计算数据的最小值、最大值

.diff() :计算一阶差分,对时间序列很有效

.mode() :计算众数,返回频数最高的那(几)个

.mean() :计算均值

.quantile() :计算分位数(0到1)

.isin() :用于判断矢量化集合的成员资格,可用于过滤Series中或DataFrame列中数据的子集

适用于Series的基本统计分析函数,DataFrame[列名]返回的是一个Series类型。

.unique() :返回一个Series中的唯一值组成的数组。

.value_counts() :计算一个Series中各值出现的频率。

.argmin()/.argmax() :计算数据最大值、最小值所在位置的索引位置(自动索引)

.idxmin()/.idxmax() :计算数据最大值、最小值所在位置的索引(自定义索引)

pandas提供了一些用于将表格型数据读取为DataFrame对象的函数。下表对它们进行了总结,其中read_csv()、read_table()、to_csv()是用得最多的。

在数据分析和建模的过程中,相当多的时间要用在数据准备上:加载、清理、转换以及重塑。

在许多数据分析工作中,缺失数据是经常发生的。对于数值数据,pandas使用浮点值NaN(np.nan)表示缺失数据,也可将缺失值表示为NA(Python内置的None值)。

替换值

.replace(old, new) :用新的数据替换老的数据,如果希望一次性替换多个值,old和new可以是列表。默认会返回一个新的对象,传入inplace=True可以对现有对象进行就地修改。

删除重复数据

利用函数或字典进行数据转换

df.head():查询数据的前五行

df.tail():查询数据的末尾5行

pandas.cut()

pandas.qcut() 基于分位数的离散化函数。基于秩或基于样本分位数将变量离散化为等大小桶。

pandas.date_range() 返回一个时间索引

df.apply() 沿相应轴应用函数

Series.value_counts() 返回不同数据的计数值

df.aggregate()

df.reset_index() 重新设置index,参数drop = True时会丢弃原来的索引,设置新的从0开始的索引。常与groupby()一起用

numpy.zeros()

python零基础自学笔记day3(向量和矩阵的索引)

1.什么是索引?

【1】表示引用向量或者矩阵中的一个数

2.什么是向量的索引?

引用向量中具体的某几个数例如:

[1].给出a向量,a=np.arrary(0,1,2,3,4,5,6,7,8,9)

[2].引用a向量中0-8的数并打印出来:print(a[0:9])

[3].把3后面的数都打印出来:print(a[3:])

[4].把3到最后倒数第二个数都打印出来:print(a[3:-1])//注:其中-1表示的是至倒数第一 个 数,但不能用-0,这样则表示无效

[5].把3前面的数全部打印出来:print(a[:3])

2.注意事项:[1].0:9表示的是比9小的数,而不包括9

3.什么是矩阵的索引?

[1].给出矩阵b,在已经给出a向量的前提下,我们对a进行重塑:b=a.reshape(5,2)得到一个五行两列的矩阵按照0123456789的顺序排列下来

[2].如果想取矩阵中的某个元素--按照几行几列的方法例如:print(b[2,3])这里得到的就是2行3列的一个元素

[3].如果想要得到某一行的元素:print(b[3,:])表示取到第4行的元素

[4].如果想要得到某一列的元素:print(b[:,1])表示取到第2列的元素

python 数据挖掘需要用哪些库和工具

1、Numpy

Numpy是Python科学计算的基础包,它提供了很多功能:快速高效的多维数组对象ndarray、用于对数组执行元素级计算以及直接对数组执行数学运算的函数、用于读写硬盘上基于数组的数据集的工具、线性代数运算、傅里叶变换以及随机数生成等。NumPy在数据分析方面还有另外一个主要作用,即作为在算法和库之间传递数据的容器。

2、Pandas

Pandas提供了快速便捷处理结构化数据的大量数据结构和函数。自从2010年出现以来,它助使Python成为强大而高效的数据分析环境。其中用得最多的Pandas对象是DataFrame,它是一个面向列的二维表结构,另一个是Series,一个一维的标签化数组对象。Pandas兼具Numpy高性能的数组计算功能以及电子表格和关系型数据库灵活的数据处理功能。还提供了复杂精细的索引功能,能更加便捷地完成重塑、切片和切块、聚合以及选取数据子集等操作。

3、matplotlib

matplotlib是最流行的用于绘制图表和其他二维数据可视化的Python库。它最初由John

D.Hunter(JDH)创建,目前由一个庞大的开发团队维护。它非常适合创建出版物上用的图表。虽然还有其他的Python可视化库,但matplotlib应用最为广泛。

4、SciPy

SciPy是一组专门解决科学计算中各种标准问题域的包的集合,它与Numpy结合使用,便形成了一个相当完备和成熟的计算平台,可以处理多种传统的科学计算问题。

5、scikit-learn

2010年诞生以来,scikit-learn成为了Python通用机器学习工具包。它的子模块包括:分类、回归、聚类、降维、选型、预处理等。与pandas、statsmodels和IPython一起,scikit-learn对于Python成为高效数据科学编程语言起到了关键作用。

6、statsmodels

statsmodels是一个统计分析包,起源于斯坦福大学统计学教授,他设计了多种流行于R语言的回归分析模型。Skipper Seabold和Josef

Perktold在2010年正式创建了statsmodels项目,随后汇聚了大量的使用者和贡献者。与scikit-learn比较,statsmodels包含经典统计学和经济计量学的算法。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。