python中Pandas怎么用


这篇文章主要为大家展示了“python中Pandas怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python中Pandas怎么用”这篇文章吧。Pandas建立在NumPy之上,更多NumPy相关的知识点可以参考我之前写的文章前置机器学习(三):30分钟掌握常用NumPy用法。
Pandas特别适合处理表格数据,如SQL表格、EXCEL表格。有序或无序的时间序列。具有行和列标签的任意矩阵数据。打开Jupyter Notebook,导入numpy和pandas开始我们的教程:Series是带有索引的一维ndarray数组。索引值可不唯一,但必须是可哈希的。输出:我们可以看到默认索引值为0、1、2、3、4、5这样的数字。添加index属性,指定其为’c’,’a’,’i’,’yong’,’j’,’i’。输出如下,我们可以看到index是可重复的。DataFrame是带有行和列的表格结构。可以理解为多个Series对象的字典结构。输出表格如下,其中index对应它的行,columns对应它的列。准备数据,随机生成6行4列的二维数组,行标签为从20210101到20210106的日期,列标签为A、B、C、D。展示表格如下:查看表格前几行:展示表格如下:查看表格后几行:展示表格如下:describe方法用于生成DataFrame的描述统计信息。可以很方便的查看数据集的分布情况。注意,这里的统计分布不包含NaN值。展示如下:我们首先回顾一下我们掌握的数学公式。平均数(mean):$$bar x = frac{sum_{i=1}^{n}{x_i}}{n}$$方差(variance):$$s^2 = frac{sum_{i=1}^{n}{(x_i -bar x)^2}}{n}$$标准差(std):$$s = sqrt{frac{sum_{i=1}^{n}{(x_i -bar x)^2}}{n}}$$我们解释一下pandas的describe统计信息各属性的意义。我们仅以 A 列为例。count表示计数。A列有6个数据不为空。mean表示平均值。A列所有不为空的数据平均值为0.0825402。std表示标准差。A列的标准差为0.551412。min表示最小值。A列最小值为-0.816064。即,0%的数据比-0.816064小。25%表示四分之一分位数。A列的四分之一分位数为-0.18。即,25%的数据比-0.18小。50%表示二分之一分位数。A列的四分之一分位数为0.298188。即,50%的数据比0.298188小。75%表示四分之三分位数。A列的四分之三分位数为0.342885。即,75%的数据比0.342885小。max表示最大值。A列的最大值为0.696541。即,100%的数据比0.696541小。T一般表示Transpose的缩写,即转置。行列转换。展示表格如下:指定某一列进行排序,如下代码根据C列进行正序排序。展示表格如下:选择某列最大的n行数据。如:df.nlargest(2,'A')表示,返回A列最大的2行数据。展示表格如下:sample方法表示查看随机的样例数据。df.sample(5)表示返回随机5行数据。参数frac表示fraction,分数的意思。frac=0.01即返回1%的随机数据作为样例展示。我们输入df['A']命令选取A列。输出A列数据,同时也是一个Series对象:df[0:3]该代码与df.head(3)同理。但df[0:3]是NumPy的数组选择方式,这说明了Pandas对于NumPy具有良好的支持。展示表格如下: | | A | B | C | D | |:———–|———:|———-:|———-:|———-:| | 2021-01-01 | 0.270961 | -0.405463 | 0.348373 | 0.828572 | | 2021-01-02 | 0.696541 | 0.136352 | -1.64592 | -0.69841 | | 2021-01-03 | 0.325415 | -0.602236 | -0.134508 | 1.28121 |通过loc方法指定行列标签。展示表格如下:ilocloc不同。loc指定具体的标签,而iloc指定标签的索引位置。df.iloc[3:5, 0:3]表示选取索引为3、4的行,索引为0、1、2的列。即,第4、5行,第1、2、3列。 注意,索引序号从0开始。冒号表示区间,左右两侧分别表示开始和结束。如3:5表示左开右闭区间[3,5),即不包含5自身。DataFrame可根据条件进行筛选,当条件判断True时,返回。当条件判断为False时,过滤掉。我们设置一个过滤器用来判断A列是否大于0。输出结果如下,可以看到2021-01-042021-01-06的行为False。我们通过过滤器查看数据集。查看表格我们可以发现,2021-01-042021-01-06的行被过滤掉了。准备数据。展示表格如下:使用dropna方法清空NaN值。注意:dropa方法返回新的DataFrame,并不会改变原有的DataFrame。以上代码表示,当行数据有任意的数值为空时,删除。使用filna命令填补NaN值。以上代码表示,使用每一列的平均值来填补空缺。同样地,fillna并不会更新原有的DataFrame,如需更新原有DataFrame使用代码df2 = df2.fillna(df2.mean())。展示表格如下:agg是Aggregate的缩写,意为聚合。常用聚合方法如下:mean(): Compute mean of groupssum(): Compute sum of group valuessize(): Compute group sizescount(): Compute count of groupstd(): Standard deviation of groupsvar(): Compute variance of groupssem(): Standard error of the mean of groupsdescribe(): Generates descriptive statisticsfirst(): Compute first of group valueslast(): Compute last of group valuesnth() : Take nth value, or a subset if n is a listmin(): Compute min of group valuesmax(): Compute max of group values返回各列平均值可通过加参数axis查看行平均值。输出:如果我们想查看某一列的多项聚合统计怎么办?
这时我们可以调用agg方法:返回结果显示标准差std和均值mean:对于不同的列应用不同的聚合函数:返回结果如下:apply()是对方法的调用。 如df.apply(np.sum)表示每一列调用np.sum方法,返回每一列的数值和。输出结果为:apply方法支持lambda表达式。value_counts方法查看各行、列的数值重复统计。 我们重新生成一些整数数据,来保证有一定的数据重复。调用value_counts()方法。查看输出我们可以看到 A列的数字8有两个,其他数字的数量为1。Pandas内置字符串处理方法。通过以上代码我们将Series中的字符串全部设置为大写。首字母大写:输出为:判断是否为数字:输出为:字符串分割:以逗号分割字符串,结果为:concat用来将数据集串联起来。我们先准备数据。使用concat方法将两个数据集串联起来。得到表格: | | Col1 | Col2 | |—:|:——-|:——-| | 0 | A0 | B0 | | 1 | A1 | B1 | | 2 | A2 | B2 | | 3 | A3 | B3 | | 0 | C0 | D0 | | 1 | C1 | D1 | | 2 | C2 | D2 | | 3 | C3 | D3 |merge相当于SQL操作中的join方法,用于将两个数据集通过某种关系连接起来我们根据name来连接两个张表,连接方式为outer。返回结果为:我们注意,how : {‘left’, ‘right’, ‘outer’, ‘inner’} 有4种连接方式。表示是否选取左右两侧表的nan值。如left表示保留左侧表中所有数据,当遇到右侧表数据为nan值时,不显示右侧的数据。 简单来说,把left表和right表看作两个集合。left表示取左表全部集合+两表交集right表示取右表全部集合+两表交集outer表示取两表并集inner表示取两表交集Pandas中的分组功能非常类似于SQL语句SELECT Column1, Column2, mean(Column3), sum(Column4)FROM SomeTableGROUP BY Column1, Column2。即使没有接触过SQL也没有关系,分组就相当于把表格数据按照某一列进行拆分、统计、合并的过程。准备数据。可以看到,我们的A列和B列有很多重复数据。这时我们可以根据foo/bar或者one/two进行分组。我们应用groupby方法将上方表格中的数据进行分组。执行上方代码可以看到,groupby方法返回的是一个类型为DataFrameGroupBy的对象。我们无法直接查看,需要应用聚合函数。参考本文4.1节。我们应用聚合函数sum试试。展示表格如下:groupby方法支持将多个列作为参数传入。分组后显示结果如下:我们应用agg(),将聚合方法数组作为参数传入方法。下方代码根据A分类且只统计C列的数值。可以看到bar组与foo组各聚合函数的结果如下:下方代码对C、D列分别进行 香港云主机不同的聚合统计,对C列进行求和,对D列进行标准差统计。输出如下:更多关于Pandas的goupby方法请参考官网:https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.htmlreshape表示重塑表格。对于复杂表格,我们需要将其转换成适合我们理解的样子,比如根据某些属性分组后进行单独统计。stack方法将表格分为索引和数据两个部分。索引各列保留,数据堆叠放置。准备数据。根据上方代码,我们创建了一个复合索引。我们创建一个具备复合索引的DataFrame。输出如下:我们执行stack方法。输出堆叠(压缩)后的表格如下。注意:你使用Jupyter Notebook/Lab进行的输出可能和如下结果不太一样。下方输出的各位为了方便在Markdown中显示有一定的调整。我们执行unstack将数据进行展开。输出原表格。我们加入参数level。当level=0时得到如下输出,大家可以试试level=1时输出什么。pivot_table表示透视表,是一种对数据动态排布并且分类汇总的表格格式。我们生成无索引列的DataFrame。展示表格如下:通过观察数据,我们可以显然得出A、B、C列的具备一定属性含义。我们执行pivot_table方法。上方代码的意思为,将D、E列作为数据列,A、B作为复合行索引,C的数据值作为列索引。date_range是Pandas自带的生成日期间隔的方法。我们执行下方代码:date_range方法从2021年1月1日0秒开始,以1秒作为时间间隔执行100次时间段的划分。输出结果如下:我们将freq的参数值从S(second)改为M(Month)试试看。输出:我们设置可以以季度作为频率进行日期生成。输出2018第一季度到2020第四季度间的全部季度。Pandas有一种特殊的数据类型叫做”目录”,即dtype=”category”,我们根据将某些列设置为目录来进行分类。准备数据。我们添加一个新列grade并将它的数据类型设置为category。我们可以看到grade列只有3种值a,b,e。我们按顺序替换a、b、e为very good、good、very bad。此时的表格为:我们对表格进行排序:查看各类别的数量:以上代码输出为:Pandas支持直接从文件中读写数据,如CSV、JSON、EXCEL等文件格式。Pandas支持的文件格式如下。我们仅以CSV文件为例作为讲解。其他格式请参考上方表格。我们从CSV文件导入数据。大家不用特别在意下方网址的域名地址。查看前5行数据:Pandas支持matplotlib,matplotlib是功能强大的Python可视化工具。本节仅对Pandas支持的绘图方法进行简单介绍,我们将会在下一篇文章中进行matplotlib的详细介绍。为了不错过更新,欢迎大家关注我。我们直接调用plot方法进行展示。 这里有两个需要注意的地方:该plot方法是通过Pandas调用的plot方法,而非matplotlib。我们知道Python语言是无需分号进行结束语句的。此处的分号表示执行绘图渲染后直接显示图像。以上是“python中Pandas怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注开发云行业资讯频道!

相关推荐: pandas层级索引

第一个子list是外层索引,第二个list是内层索引。示例代码:运行结果:示例代码:运行结果:示例代码:运行结果:示例代码:运行结果:示例代码:运行结果: 香港云主机示例代码:运行结果:相关推荐: win10如何修改登录密码错误次数小编给大家分享一下win10…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 08/31 16:30
Next 08/31 16:30

相关推荐