一、pandas数据操作:

  1.处理缺失数据

    (1)判断是否存在缺失值

      ser_obj.isnull(),df_obj.isnull()

    (2)dropna:丢弃缺失数据

    (3)fillna:填充缺失值

  2.常用的统计计算

import numpy as np
import pandas as pd
df1 =pd.DataFrame(np.random.randn(,),columns=['a','b','c','d'])
print(df1)

    (1)sum,mean,max,min.......

    (2)axis=0按照列统计,axis=0按照行进行统计

#求和,求出各列的最大值,默认是axis=的方向
print('df1.sum=\n',df1.sum())
#打印出df1的最大值,求出df1各列的最大值
print('df1.max()=\n',df1.max())
求出水平方向各列的最大值
print('水平方向的最大值=\n',df1.max(axis=1)) #求出水平方向各行的和
print('水平方向各行的和',df1.sum(axis=1))
print('各个值的描述为:\n',df1.describe())

    (3)skipna排除缺失值,默认为True

    (4)idmax,idmin,cumsum

    (5)describe()描述多个数据

二、pandas层级索引

  1.层级索引

    (1)MultiIndex对象

import numpy as np
import pandas as pd #对于多层索引的数据结构,先写外层索引,再写内层索引
ser_obj = pd.Series(np.random.randn(),index=[['a','a','a','b','b','b','c','c','c','d','d','d'],
[,,,,,,,,,,,]
])
print(ser_obj)

a 0 -0.238233
1 1.833810
2 0.440786
b 0 -0.061261
1 1.429524
2 0.472883
c 0 -0.509399
1 1.463129

 

    (2)选取子集

      外层选取   ser_obj['outer_label']

      内层选取  ser_obj[:,'inner_label']

#索引
print('索引为',ser_obj.index)
print('索引的类型:\n',type(ser_obj))

索引为 MultiIndex(levels=[['a', 'b', 'c', 'd'], [0, 1, 2]],
labels=[[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]])
索引的类型:
<class 'pandas.core.series.Series'>

#外层的选取,选取c这一层
print(ser_obj['c']) #内层的选取
print(ser_obj[:,2])

    (3)常用于分组操作透视表生成等

    (4)交换分层次序

       swaplevel

#交换层级索引的顺序,将0,,2作为外层索引,将a,b,c,d作为内层索引
print(ser_obj.swaplevel())

0 a -0.692477
1 a 1.646162
2 a -1.065838
0 b -0.427297
1 b 3.000122
2 b -0.247474
0 c -0.601376
1 c -0.109477
2 c -0.607528
0 d 0.776865
1 d 0.886385
2 d -0.837686

#交换层级索引并排序分层
print(ser_obj.swaplevel().sortlevel())

    (5)排序分层:sortlevel()   

#交换层级索引并排序分层
print(ser_obj.swaplevel().sortlevel())

三、Pandas分组与聚合

  1.分组(groupby)

    (1)对数据集进行分组,然后对每组数据进行统计分析

    (2)SQL能够对数据进行过滤,分组聚合

    (3)pandas能够利用groupby进行更加复杂的分组运算

    (4)分组运算的过程

      split->apply->combine

      拆分:进行分组的根据

      应用:每个分组的计算规则

      合并:把每个分组的计算结果合并起来

  2.聚合(aggregation)

    (1)数组产生标量的过程,如mean(),count()等

    (2)常用于对分组后的数据进行计算

    (3)内置的聚合函数

      sum(),mean(),max(),min(),count(),size(),describe()

    (4)可以自定义函数,传入agg方法中

      grouped.agg(func)

    (5)func的参数为groupby索引对应的记录

  

python数据结构:pandas(3)的更多相关文章

  1. python之pandas学习笔记-pandas数据结构

    pandas数据结构 pandas处理3种数据结构,它们建立在numpy数组之上,所以运行速度很快: 1.系列(Series) 2.数据帧(DataFrame) 3.面板(Panel) 关系: 数据结 ...

  2. 基于 Python 和 Pandas 的数据分析(2) --- Pandas 基础

    在这个用 Python 和 Pandas 实现数据分析的教程中, 我们将明确一些 Pandas 基础知识. 加载到 Pandas Dataframe 的数据形式可以很多, 但是通常需要能形成行和列的数 ...

  3. 基于 Python 和 Pandas 的数据分析(1)

    基于 Python 和 Pandas 的数据分析(1) Pandas 是 Python 的一个模块(module), 我们将用 Python 完成接下来的数据分析的学习. Pandas 模块是一个高性 ...

  4. python之pandas简单介绍及使用(一)

    python之pandas简单介绍及使用(一) 一. Pandas简介1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据 ...

  5. Python之Pandas中Series、DataFrame

    Python之Pandas中Series.DataFrame实践 1. pandas的数据结构Series 1.1 Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一 ...

  6. 「Python」pandas入门教程

    pandas适合于许多不同类型的数据,包括: 具有异构类型列的表格数据,例如SQL表格或Excel数据 有序和无序(不一定是固定频率)时间序列数据. 具有行列标签的任意矩阵数据(均匀类型或不同类型) ...

  7. Python之Pandas中Series、DataFrame实践

    Python之Pandas中Series.DataFrame实践 1. pandas的数据结构Series 1.1 Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一 ...

  8. python数据结构与算法

    最近忙着准备各种笔试的东西,主要看什么数据结构啊,算法啦,balahbalah啊,以前一直就没看过这些,就挑了本简单的<啊哈算法>入门,不过里面的数据结构和算法都是用C语言写的,而自己对p ...

  9. python数据结构与算法——链表

    具体的数据结构可以参考下面的这两篇博客: python 数据结构之单链表的实现: http://www.cnblogs.com/yupeng/p/3413763.html python 数据结构之双向 ...

  10. python数据结构之图的实现

    python数据结构之图的实现,官方有一篇文章介绍,http://www.python.org/doc/essays/graphs.html 下面简要的介绍下: 比如有这么一张图: A -> B ...

随机推荐

  1. Pku2978 Colored stones

    题目链接:Click here Solution: 状压dp,考虑\(f[i][j][k]\)表示当前到了第i个石头,颜色状态为j,选取的最后一个石头颜色为k时能够留下的石头的最大数量 转移也很好转移 ...

  2. CDH安装时,部分节点不受管控

    解决方案: /opt/cm-5.12.0/etc/init.d/cloudera-scm-agent stop cd /opt/cm-5.12.0/lib/cloudera-scm-agent/ rm ...

  3. 不使用spring-boot-starter-parent进行依赖的版本管理

    spring-boot-starter-parent 提供了Dependency Management 进行项目依赖的版本管理,默认的资源过滤和插件配置. 但是,当需要将其他项目作为parent 的时 ...

  4. Linux小记 -- 更新系统软件包

    系统信息 操作系统:Ubuntu 18.04.2 LTS 内核版本:4.15.0-51-generic 何时需要更新 重新启动Ubuntu发现如下motd(message of tody),此时需要更 ...

  5. hdu 6219 Empty Convex Polygons (凸包)

    给你n个点,求面积最大的凸多边形,使得这个凸多边形没有内点. 考虑求凸包的graham算法,需要找到左下角的点,再进行极角排序后按顺序扫点,所以先枚举左下角的点. 这个过程中,如果遇到内点,就需要把这 ...

  6. springboot打war包部署tomcat服务器,以及表单提交数据乱码处理

    小白觉得springboot打成jar包直接使用内嵌的tomcat或jetty容器(java -jar xxx.jar)运行项目不利于定位问题,我还是习惯于查看tomcat或nginx的日志来定位问题 ...

  7. Python 笔试集(2):你不知道的 Python 整数

    面试题 分别给出下述代码在终端(e.g. IPyhon)中和在程序中的运行结果: a = 256 b = 256 c = 257 d = 257 def foo(): e = 257 f = 257 ...

  8. python学习笔记:(六)str(字符串)常用方法

    注意点: 1.字符串是不可变的: 2.%格式化操作符:左侧放置字符串,右侧放置希望被格式化的值. 对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应 ...

  9. 【AOP】操作相关术语---【Spring】的【AOP】操作(基于aspectj的xml方式)

    [AOP]操作相关术语 Joinpoint(连接点):类里面哪些方法可以被增强,这些方法称为连接点. Pointcut(切入点):在类里面可以有很多的方法被增强,比如实际操作中,只是增强了类里面add ...

  10. 跨 Appdomain 对象共享

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...