Python3.5 Pandas模块缺失值处理和层次索引实例详解


Posted in Python onApril 23, 2019

本文实例讲述了Python3.5 Pandas模块缺失值处理和层次索引。分享给大家供大家参考,具体如下:

1、pandas缺失值处理

Python3.5 Pandas模块缺失值处理和层次索引实例详解

Python3.5 Pandas模块缺失值处理和层次索引实例详解

Python3.5 Pandas模块缺失值处理和层次索引实例详解

import numpy as np
import pandas as pd
from pandas import Series,DataFrame

df3 = DataFrame([
  ["Tom",np.nan,456.67,"M"],
  ["Merry",34,345.56,np.nan],
  [np.nan,np.nan,np.nan,np.nan],
  ["John",23,np.nan,"M"],
  ["Joe",18,385.12,"F"]
],columns = ["name","age","salary","gender"])

print(df3)
print("=======判断NaN值=======")
print(df3.isnull())
print("=======判断非NaN值=======")
print(df3.notnull())
print("=======删除包含NaN值的行=======")
print(df3.dropna())
print("=======删除全部为NaN值的行=======")
print(df3.dropna(how="all"))

df3.ix[2,0] = "Gerry"    #修改第2行第0列的值
print(df3)

print("=======删除包含NaN值的列=======")
print(df3.dropna(axis=1))

运行结果:

   name   age  salary gender
0    Tom   NaN  456.67      M
1  Merry  34.0  345.56    NaN
2    NaN   NaN     NaN    NaN
3   John  23.0     NaN      M
4    Joe  18.0  385.12      F
=======判断NaN值=======
    name    age salary gender
0  False   True  False  False
1  False  False  False   True
2   True   True   True   True
3  False  False   True  False
4  False  False  False  False
=======判断非NaN值=======
    name    age salary gender
0   True  False   True   True
1   True   True   True  False
2  False  False  False  False
3   True   True  False   True
4   True   True   True   True
=======删除包含NaN值的行=======
  name   age  salary gender
4  Joe  18.0  385.12      F
=======删除全部为NaN值的行=======
    name   age  salary gender
0    Tom   NaN  456.67      M
1  Merry  34.0  345.56    NaN
3   John  23.0     NaN      M
4    Joe  18.0  385.12      F
    name   age  salary gender
0    Tom   NaN  456.67      M
1  Merry  34.0  345.56    NaN
2  Gerry   NaN     NaN    NaN
3   John  23.0     NaN      M
4    Joe  18.0  385.12      F
=======删除包含NaN值的列=======
    name
0    Tom
1  Merry
2  Gerry
3   John
4    Joe

Python3.5 Pandas模块缺失值处理和层次索引实例详解

import numpy as np
import pandas as pd
from pandas import Series,DataFrame

df4 = DataFrame(np.random.randn(7,3))
print(df4)

df4.ix[:4,1] = np.nan    #第0至3行,第1列的数据
df4.ix[:2,2] = np.nan
print(df4)

print(df4.fillna(0))    #将缺失值用传入的指定值0替换

print(df4.fillna({1:0.5,2:-1}))   #将缺失值按照指定形式填充

运行结果:

          0         1         2
0 -0.737618 -0.530302 -2.716457
1  0.810339  0.063028 -0.341343
2  0.070564  0.347308 -0.121137
3 -0.501875 -1.573071 -0.816077
4 -2.159196 -0.659185 -0.885185
5  0.175086 -0.954109 -0.758657
6  0.395744 -0.875943  0.950323
          0         1         2
0 -0.737618       NaN       NaN
1  0.810339       NaN       NaN
2  0.070564       NaN       NaN
3 -0.501875       NaN -0.816077
4 -2.159196       NaN -0.885185
5  0.175086 -0.954109 -0.758657
6  0.395744 -0.875943  0.950323
          0         1         2
0 -0.737618  0.000000  0.000000
1  0.810339  0.000000  0.000000
2  0.070564  0.000000  0.000000
3 -0.501875  0.000000 -0.816077
4 -2.159196  0.000000 -0.885185
5  0.175086 -0.954109 -0.758657
6  0.395744 -0.875943  0.950323
          0         1         2
0 -0.737618  0.500000 -1.000000
1  0.810339  0.500000 -1.000000
2  0.070564  0.500000 -1.000000
3 -0.501875  0.500000 -0.816077
4 -2.159196  0.500000 -0.885185
5  0.175086 -0.954109 -0.758657
6  0.395744 -0.875943  0.950323

2、pandas常用数学统计方法

Python3.5 Pandas模块缺失值处理和层次索引实例详解

Python3.5 Pandas模块缺失值处理和层次索引实例详解
Python3.5 Pandas模块缺失值处理和层次索引实例详解

Python3.5 Pandas模块缺失值处理和层次索引实例详解

import numpy as np
import pandas as pd
from pandas import Series,DataFrame

#pandas常用数学统计方法

arr = np.array([
  [98.5,89.5,88.5],
  [98.5,85.5,88],
  [70,85,60],
  [80,85,82]
])
df1 = DataFrame(arr,columns=["语文","数学","英语"])
print(df1)
print("=======针对列计算总统计值=======")
print(df1.describe())
print("=======默认计算各列非NaN值个数=======")
print(df1.count())
print("=======计算各行非NaN值个数=======")
print(df1.count(axis=1))

运行结果:

     语文    数学    英语
0  98.5  89.5  88.5
1  98.5  85.5  88.0
2  70.0  85.0  60.0
3  80.0  85.0  82.0
=======针对列计算总统计值=======
              语文         数学         英语
count   4.000000   4.000000   4.000000
mean   86.750000  86.250000  79.625000
std    14.168627   2.179449  13.412525
min    70.000000  85.000000  60.000000
25%    77.500000  85.000000  76.500000
50%    89.250000  85.250000  85.000000
75%    98.500000  86.500000  88.125000
max    98.500000  89.500000  88.500000
=======默认计算各列非NaN值个数=======
语文    4
数学    4
英语    4
dtype: int64
=======计算各行非NaN值个数=======
0    3
1    3
2    3
3    3
dtype: int64

Python3.5 Pandas模块缺失值处理和层次索引实例详解

Python3.5 Pandas模块缺失值处理和层次索引实例详解

import numpy as np
import pandas as pd
from pandas import Series,DataFrame、

#2.pandas相关系数与协方差
df2 = DataFrame({
  "GDP":[12,23,34,45,56],
  "air_temperature":[23,25,26,27,30],
  "year":["2001","2002","2003","2004","2005"]
})

print(df2)
print("=========相关系数========")
print(df2.corr())
print("=========协方差========")
print(df2.cov())
print("=========两个量之间的相关系数========")
print(df2["GDP"].corr(df2["air_temperature"]))
print("=========两个量之间协方差========")
print(df2["GDP"].cov(df2["air_temperature"]))

运行结果:

 GDP  air_temperature  year
0   12               23  2001
1   23               25  2002
2   34               26  2003
3   45               27  2004
4   56               30  2005
=========相关系数========
                      GDP  air_temperature
GDP              1.000000         0.977356
air_temperature  0.977356         1.000000
=========协方差========
                   GDP  air_temperature
GDP              302.5             44.0
air_temperature   44.0              6.7
=========两个量之间的相关系数========
0.97735555485
=========两个量之间协方差========
44.0

Python3.5 Pandas模块缺失值处理和层次索引实例详解

Python3.5 Pandas模块缺失值处理和层次索引实例详解

Python3.5 Pandas模块缺失值处理和层次索引实例详解

Python3.5 Pandas模块缺失值处理和层次索引实例详解

import numpy as np
import pandas as pd
from pandas import Series,DataFrame

#3.pandas唯一值、值计数及成员资格

df3 = DataFrame({
  "order_id":["1001","1002","1003","1004","1005"],
  "member_id":["m01","m01","m02","m01","m02",],
  "order_amt":[345,312.2,123,250.2,235]
})

print(df3)

print("=========去重后的数组=========")
print(df3["member_id"].unique())

print("=========值出现的频率=========")
print(df3["member_id"].value_counts())

print("=========成员资格=========")
df3 = df3["member_id"]
mask = df3.isin(["m01"])
print(mask)
print(df3[mask])

运行结果:

 member_id  order_amt order_id
0       m01      345.0     1001
1       m01      312.2     1002
2       m02      123.0     1003
3       m01      250.2     1004
4       m02      235.0     1005
=========去重后的数组=========
['m01' 'm02']
=========值出现的频率=========
m01    3
m02    2
Name: member_id, dtype: int64
=========成员资格=========
0     True
1     True
2    False
3     True
4    False
Name: member_id, dtype: bool
0    m01
1    m01
3    m01
Name: member_id, dtype: object

3、pandas层次索引

Python3.5 Pandas模块缺失值处理和层次索引实例详解

Python3.5 Pandas模块缺失值处理和层次索引实例详解

Python3.5 Pandas模块缺失值处理和层次索引实例详解

Python3.5 Pandas模块缺失值处理和层次索引实例详解

import numpy as np
import pandas as pd
from pandas import Series,DataFrame

#3.pandas层次索引
data = Series([998.4,6455,5432,9765,5432],
       index=[["2001","2001","2001","2002","2002"],
       ["苹果","香蕉","西瓜","苹果","西瓜"]]
       )
print(data)

df4 = DataFrame({
  "year":[2001,2001,2002,2002,2003],
  "fruit":["apple","banana","apple","banana","apple"],
  "production":[2345,5632,3245,6432,4532],
  "profits":[245.6,432.7,534.1,354,467.8]
})

print(df4)
print("=======层次化索引=======")
df4 = df4.set_index(["year","fruit"])
print(df4)
print("=======依照索引取值=======")
print(df4.ix[2002,"apple"])
print("=======依照层次化索引统计数据=======")
print(df4.sum(level="year"))
print(df4.mean(level="fruit"))
print(df4.min(level=["year","fruit"]))

运行结果:

2001  苹果     998.4
      香蕉    6455.0
      西瓜    5432.0
2002  苹果    9765.0
      西瓜    5432.0
dtype: float64
    fruit  production  profits  year
0   apple        2345    245.6  2001
1  banana        5632    432.7  2001
2   apple        3245    534.1  2002
3  banana        6432    354.0  2002
4   apple        4532    467.8  2003
=======层次化索引=======
             production  profits
year fruit
2001 apple         2345    245.6
     banana        5632    432.7
2002 apple         3245    534.1
     banana        6432    354.0
2003 apple         4532    467.8
=======依照索引取值=======
production    3245.0
profits        534.1
Name: (2002, apple), dtype: float64
=======依照层次化索引统计数据=======
      production  profits
year
2001        7977    678.3
2002        9677    888.1
2003        4532    467.8
        production     profits
fruit
apple         3374  415.833333
banana        6032  393.350000
             production  profits
year fruit
2001 apple         2345    245.6
     banana        5632    432.7
2002 apple         3245    534.1
     banana        6432    354.0
2003 apple         4532    467.8

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
用Python计算三角函数之acos()方法的使用
May 15 Python
Python中的变量和作用域详解
Jul 13 Python
Python处理JSON数据并生成条形图
Aug 05 Python
python itchat给指定联系人发消息的方法
Jun 11 Python
如何通过python画loss曲线的方法
Jun 26 Python
python打印异常信息的两种实现方式
Dec 24 Python
python集合删除多种方法详解
Feb 10 Python
python可迭代对象去重实例
May 15 Python
基于python实现地址和经纬度转换
May 19 Python
如何以Winsows Service方式运行JupyterLab
Aug 30 Python
numpy实现RNN原理实现
Mar 02 Python
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
Jun 09 Python
Python3.5 Pandas模块之DataFrame用法实例分析
Apr 23 #Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 #Python
使用Python控制摄像头拍照并发邮件
Apr 23 #Python
详解Python静态网页爬取获取高清壁纸
Apr 23 #Python
Python matplotlib画图与中文设置操作实例分析
Apr 23 #Python
Python实现的删除重复文件或图片功能示例【去重】
Apr 23 #Python
详解Python 函数如何重载?
Apr 23 #Python
You might like
在PHP程序中使用Rust扩展的方法
2015/07/03 PHP
php实现的任意进制互转类分享
2015/07/07 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
php使用parse_str实现查询字符串解析到变量中的方法
2017/02/17 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
node.js中的buffer.toString方法使用说明
2014/12/14 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
2017/02/15 Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
2017/03/03 Javascript
JQuery元素快速查找与操作
2018/04/22 jQuery
Vue在页面数据渲染完成之后的调用方法
2018/09/11 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
layer弹出层倒计时关闭的实现方法
2019/09/27 Javascript
Python学习资料
2007/02/08 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
2020/06/24 Python
pandas对dataFrame中某一个列的数据进行处理的方法
2019/07/08 Python
Django CBV类的用法详解
2019/07/26 Python
python 实现围棋游戏(纯tkinter gui)
2020/11/13 Python
Python OpenCV中的numpy与图像类型转换操作
2020/12/11 Python
CSS3属性选择符介绍
2008/10/17 HTML / CSS
护士自我介绍信
2014/01/13 职场文书
有创意的广告词
2014/03/18 职场文书
考核工作实施方案
2014/03/30 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
国际残疾人日广播稿范文
2014/10/09 职场文书
2015年学生会纪检部工作总结
2015/03/31 职场文书
单身证明格式样本
2015/06/15 职场文书
开学随笔
2015/08/15 职场文书
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android
Java中CyclicBarrier和CountDownLatch的用法与区别
2021/08/23 Java/Android
Win11 Build 22000.51版本文件资源管理器“命令栏”和上下文菜单有什么新变化?
2021/11/21 数码科技