Python Pandas 空值

  • pandas 判断指定列是否(全部)为NaN(空值)
import pandas as pd
import numpy as np df = pd.DataFrame({"a": ["aa", np.NAN, np.NAN], "b": [3, np.NAN, 2]})
    • 判断某列是否有NaN
>>> df.a.isnull().any()
True
    • 判断是否全部为 NAN
>>> df.a.isnull().all()
True
  • NAN值替换:

    • 不能使用,apply 去判断类型;DataFrame中np.nan 和 None 同为 isnull
>>> df.c.apply(None if x == np.nan else x)  # 错误的方式,x的类型不是np.nan活着np.NAN, 任何类型都有可能。所以这种判断时可用

>>> df = df.where(df.notnull(), None)
>>> print(df)
>>> print(df.isnull())
a b c
0 aa None
1 None None None
2 None None None
a b c
0 False False True
1 True True True
2 True True True

Pandas 使用 cut 把一组数据分割成离散的区间,比如:一组年龄,一组成绩,把年龄或者成绩数据分割成不同的段上面,并打上标签

  • 定义:
def cut(x, bins, right=True, labels=None, retbins=False, precision=3,
include_lowest=False, duplicates='raise'):
  • 参数:

    • x: 被切分的数组数据(array-like),必须为1维,不能使用DataFrame
    • bins: 被切割后的区间,三种形式: int类型,数组或者 pandas.IntervalIndex
      • int: 将 x 均分成 bins 份
      • 数组(bins=[-1, 1, 2, 5,  np.inf]): 分成以下组: (-1, 1], (1, 2], (2, 5], (5, inf), 注意: (-1, 1] 不为str类型
    • right:boo 类型,默认为True,表示是否包含区间右部,比如: bins=[0, 1, 2], right=True, 则: (0, 1], (1, 2] 如果为False,则:(1,2),(2,3)
    • labels: 给分割后的区间打上相应的标签
    • retbins: bool 类型,表示是否将分割后的 bins 返回,当bins为一个int类型,可以获取划分后的区间,默认为False
    • precision: 分割区间,边境的小数位数,默认为3位
    • include_lowest: bool型的参数,表示区间的左边是开还是闭的,默认为false,也就是不包含区间左部(闭)
    • duplicates: 是否允许重复区间: raise, drop,默认: raise(不允许)
  • 例子:
import pandas as pd
ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) #年龄数据
pd.cut(ages, [0,5,20,30,50,100], labels=False)
pd.cut(ages, [0,5,20,30,50,100], labels=False)
array([0, 0, 1, 3, 3, 1, 4, 4, 4, 4, 4, 1, 1, 2, 2, 3], dtype=int64)
    • 与 groupby 配合实现分组: df.groupby(pd.cut(df.ages, [0,5,20,30,50,100]))

Pandas 使用 groupby 对数据分组进行迭代

import pandas as pd
import numpy as np df = pd.DataFrame({'key1': ['a', 'a', 'b', 'b', 'a'], 'key2': ['one', 'two', 'one', 'two', 'one'],
'data1': np.random.randn(5), 'data2': np.random.randn(5)}) print(df)
print("*********") class_key = ["key1", "key2"]
# class_key = ["key1"] # 如果 class_key 是一个元素或者字符串,这class_ 为字符串
for class_, group in df.groupby(class_key):
print("______________")
print(class_)
print(group)

结果:

  key1 key2     data1     data2
0 a one 1.237276 -0.813727
1 a two 0.508972 -1.336699
2 b one -0.343635 0.714680
3 b two 2.433797 0.417454
4 a one 1.215114 2.646685
*********
______________
('a', 'one')
key1 key2 data1 data2
0 a one 1.237276 -0.813727
4 a one 1.215114 2.646685
______________
('a', 'two')
key1 key2 data1 data2
1 a two 0.508972 -1.336699
______________
('b', 'one')
key1 key2 data1 data2
2 b one -0.343635 0.71468
______________
('b', 'two')
key1 key2 data1 data2
3 b two 2.433797 0.417454

Pandas 修改列名

import pandas as pd
import numpy as np a = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
print(a) # a.colums = ["a", "b", "c"] # 错误的写法
a.rename(columns={'A': 'a', 'C': 'c'}, inplace=True)
print(a)

结果:

   A  B  C
0 1 4 7
1 2 5 8
2 3 6 9
a B c
0 1 4 7
1 2 5 8
2 3 6 9

pandas 初识(三)的更多相关文章

  1. pandas初识

    pandas初识 1.生成DataFrame型的数据 import pandas as pd import numpy as np dates = pd.date_range('20130101',p ...

  2. Python数据分析--Pandas知识点(三)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) Python数据分析--Pandas知识点(二) 下面将是在知识点一, ...

  3. pandas(三)汇总和计算描述统计

    pandas对象有一些常用的数学和统计的方法,大部分都属于约简或汇总统计. SUM方法 DataFrame对象的sum方法,返回一个含有列小计的Series >>> df = Dat ...

  4. 浅谈python的第三方库——pandas(三)

    令笔者对pandas印象最为深刻的一件事,就是在pandas中已经内置了很多数据导入导出方法,然而本人并不了解,在一次小项目的工作中曾手写了一个从excel表格导入数据到DataFrame的pytho ...

  5. numpy最后一部分及pandas初识

    今日内容概要 numpy剩余的知识点 pandas模块 今日内容详细 二元函数 加 add 减 sub 乘 mul 除 div 平方 power 数学统计方法 sum 求和 cumsum 累计求和 m ...

  6. pandas 初识(四)

    Pandas 和 sqlalchemy 配合实现分页查询 Mysql 并获取总条数 @api.route('/show', methods=["POST"]) def api_sh ...

  7. pandas 初识(一)

    基本内容 Series: Series 是有一组数据(numpy的数据类型 numpy.ndarray)以及一组数据标签(即索引)组成,可以看成一个一个定长的有序字典(索引值到数据值的一个映射) ob ...

  8. pandas 初识(二)

    基本统计 pivot_table(数据透视表 ): 使用appfunc, 按不同index分类统计各特征values的值 df.pivot_table(index="Pclass" ...

  9. python初识(三)

    目录: 字符编码 文件操作 循环结构拾遗 函数 整体介绍 函数的参数 函数的返回值 函数的调用 自定义函数 一.字符编码 1.了解字符编码的知识储备 a. 文件编辑存取文件的原理(nodepad++, ...

随机推荐

  1. __细看InnoDB数据落盘 图解 MYSQL

    http://hatemysql.com/?p=503 1.  概述 前面很多大侠都分享过MySQL的InnoDB存储引擎将数据刷新的各种情况.我们这篇文章从InnoDB往下,看看数据从InnoDB的 ...

  2. MySQL索引与Index Condition Pushdown(employees示例)

    实验 先从一个简单的实验开始直观认识ICP的作用. 安装数据库 首先需要安装一个支持ICP的MariaDB或MySQL数据库.我使用的是MariaDB 5.5.34,如果是使用MySQL则需要5.6版 ...

  3. 【10】python窗口控制[隐藏,移动]

    步骤一:下载小软件,如下图 该软件用于提取需要控制程序窗口的具体信息 二.程序代码 #__author:"**佳" #date: 2018/10/20 0020 #function ...

  4. mysql 错误2203 1061 及安装最后出现2003现象的解决办法

    错误描述 : 1.#2003-服务器没有响应MySQL无法启动 2.Can''t connect to MySQL server on ''localhost'' (10061) 3.ERROR 20 ...

  5. 7、Django的模型层(1)

    第1节:ORM简介 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极 ...

  6. [游记] Noip 2018

    飞雪连天射白鹿, 笑书神侠倚碧鸳 $ 2018/12/14 $ 经历了 \(noip\) 玩完的心态爆炸之后,还是决定稍微写一下游记记录一下\(QAQ\),以免以后就忘了. 然后打算先写个框架之后再慢 ...

  7. AddHandler php5-script .php\AddType text/html .php和AddType application/x-httpd-php .php的区别?

    让apache支持php文件的解释,有2种方法配置,RPM装的默认配置是:AddHandler php5-script .phpAddType text/html .php网上很多人的配置方法是:Ad ...

  8. 随手练——ZOJ 1093 Monkey and Banana(动态规划)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=93 一堆科学家研究猩猩的智商,给他M种长方体,每种N个. 然后,将一个 ...

  9. [转]VS 2012环境下使用MFC进行OpenGL编程

    我就不黏贴复制了,直接给出原文链接:VS 2012环境下使用MFC进行OpenGL编程 其它好文链接: 1.OpenGL系列教程之十二:OpenGL Windows图形界面应用程序

  10. OpenCV——直方图均衡化(用于图像增强)

    #include <opencv2/opencv.hpp> #include <iostream> #include <math.h> using namespac ...