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获取远程图片大小和尺寸的方法
Mar 26 Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
Sep 24 Python
Python输出带颜色的字符串实例
Oct 10 Python
对numpy中的transpose和swapaxes函数详解
Aug 02 Python
Python实现注册、登录小程序功能
Sep 21 Python
Python简单过滤字母和数字的方法小结
Jan 09 Python
python实现贪吃蛇游戏
Mar 21 Python
python3实现指定目录下文件sha256及文件大小统计
Feb 25 Python
python3.7 使用pymssql往sqlserver插入数据的方法
Jul 08 Python
Python Opencv任意形状目标检测并绘制框图
Jul 23 Python
python实现监控阿里云账户余额功能
Dec 16 Python
Python Selenium参数配置方法解析
Jan 19 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(二)
2012/03/21 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
php采用session实现防止页面重复刷新
2015/12/24 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
2016/09/22 PHP
YII框架行为behaviors用法示例
2019/04/26 PHP
PHP使用PDO 连接与连接管理操作实例分析
2020/04/21 PHP
JavaScript 组件之旅(四):测试 JavaScript 组件
2009/10/28 Javascript
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
js随机颜色代码的多种实现方式
2013/04/23 Javascript
javascript的document.referrer浏览器支持、失效情况总结
2014/07/18 Javascript
一行命令搞定node.js 版本升级
2014/07/20 Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
2016/05/09 Javascript
vue 文件目录结构详解
2017/11/24 Javascript
vue.js简单配置axios的方法详解
2017/12/13 Javascript
Vue开发之封装分页组件与使用示例
2019/04/25 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
Vue 根据条件判断van-tab的显示方式
2020/08/03 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
ant design的table组件实现全选功能以及自定义分页
2020/11/17 Javascript
[47:21]Liquid vs TNC Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
python -v 报错问题的解决方法
2020/09/15 Python
解决pytorch下出现multi-target not supported at的一种可能原因
2021/02/06 Python
HTML5微信播放全屏问题的解决方法
2017/03/09 HTML / CSS
人力资源部门的主要职能
2014/02/22 职场文书
学期评语大全
2014/04/30 职场文书
爱护公物主题班会
2015/08/17 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
《落花生》教学反思
2016/02/16 职场文书
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP
使用 Apache 反向代理的设置技巧
2022/01/18 Servers