chapter5 Pandas入门
来源:互联网 发布:企业数据库视频教程 编辑:程序博客网 时间:2024/06/06 01:59
chapter5 Pandas入门
《Python for Data Analysis》学习记录
pandas的数据结构介绍
pandas中两个主要的数据结构为:Series,DataFrame。
- Series:是一种类似于一维数组的对象,有一组数据以及一组与之相关的数据标签组成。
- DataFrame:是一个表格型的数据结构,包含有一组有序的列,每一列可以使不同的值类型(数值、字符串、布尔值等)
处理缺失数据
缺失数据在大部分数据分析中都很常见。pandas的设计目标之一就是让缺失数据的处理任务尽量轻松。
pandas使用NaN表示浮点和非浮点数组中的缺失数据。
表:NA的 处理方法
滤除缺失数据
对于一个Series,dropna返回一个仅仅含非空数据和索引值的Series:
import pandas as pdfrom numpy import nan as NAfrom pandas import Series, DataFramedata = Series([1,NA,3.5,NA,7])data.dropna()# 输出:# 0 1.0# 2 3.5# 4 7.0
也可以使用 布尔型索引达到同样的效果:
data[data.notnull()]
而对于DataFrame对象,默认为丢弃任何含有缺失值的行:
这里写代码片
传入how='all'
将只丢弃全为NA的那些行:
这里写代码片
使用此种方法丢弃列,传入axis=1
即可: data.dropna(axis=1, how='all')
填充缺失数据
使用fillna()
方法,通过一个常数调用fillna就可以将缺失值替换为那个常数值:
df = DataFrame(np.random.randn(7,3))df.ix[:4, 1] = NAdf.ix[:2, 2] = NA>>> df 0 1 20 2.129052 NaN NaN1 -0.160965 NaN NaN2 -1.090751 NaN NaN3 -0.695483 NaN 0.7640654 0.140421 NaN 1.1274415 0.127681 -1.007816 0.0424046 -0.081363 -0.595110 -0.152502>>> df.fillna(0) 0 1 20 2.129052 0.000000 0.0000001 -0.160965 0.000000 0.0000002 -1.090751 0.000000 0.0000003 -0.695483 0.000000 0.7640654 0.140421 0.000000 1.1274415 0.127681 -1.007816 0.0424046 -0.081363 -0.595110 -0.152502
通过一个字典调用fillna,可以实现对不同的列填充不同的值:
>>> df.fillna({1:2.1, 3:3.2}) 0 1 20 2.129052 2.100000 NaN1 -0.160965 2.100000 NaN2 -1.090751 2.100000 NaN3 -0.695483 2.100000 0.7640654 0.140421 2.100000 1.1274415 0.127681 -1.007816 0.0424046 -0.081363 -0.595110 -0.152502
层次化索引
层次化索引(hierarchical indexing)是pandas的一项重要功能,使得能在一个轴上拥有多个(两个以上)索引级别。抽象点来说就是,是你可以以低维度形式处理高维度数据。
例:创建一个Series,并使用一个由列表或数组组成的列表作为索引。
data = Series(np.random.randn(10),index= [['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd'], [1, 2, 3, 1, 2, 3, 1, 2, 2, 3]])>>> dataa 1 -0.896044 2 -0.780102 3 0.105427b 1 -1.892290 2 -1.771580 3 -2.018065c 1 -0.613627 2 -1.596825d 2 1.667650 3 0.610973dtype: float64
这就是带有MultiIndex索引的Series的格式化输出形式。索引之间的“间隔”表示“直接使用上面的标签”:
>>> data.indexMultiIndex(levels=[['a', 'b', 'c', 'd'], [1, 2, 3]],labels=[[0, 0, 0, 1, 1, 1, 2, 2, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 1, 2]])
对于一个层次化索引的对象,选取数据子集的操作也时比较容易:
>>> data['b':'c']b 1 -1.892290 2 -1.771580 3 -2.018065c 1 -0.613627 2 -1.596825dtype: float64
还可以在内层中选择:
>>> data[:,2]a -0.780102b -1.771580c -1.596825d 1.667650dtype: float64
层次化索引在数据重塑和基于分组操作中扮演着重要的角色。如使用unstack方法将数据重新安排到一个DataFrame中:
>>> data.unstack() 1 2 3a -0.896044 -0.780102 0.105427b -1.892290 -1.771580 -2.018065c -0.613627 -1.596825 NaNd NaN 1.667650 0.610973
unstack的逆运算是stack:
>>> data.unstack().stack()a 1 -0.896044 2 -0.780102 3 0.105427b 1 -1.892290 2 -1.771580 3 -2.018065c 1 -0.613627 2 -1.596825d 2 1.667650 3 0.610973dtype: float64
阅读全文
0 0
- chapter5 Pandas入门
- Chapter5-1: pandas 数据结构介绍
- chapter5
- chapter5
- chapter5
- Chapter5
- pandas入门
- pandas入门
- Pandas入门
- Pandas入门
- pandas入门
- pandas入门
- Pandas 入门
- pandas入门
- Pandas入门
- pandas 数据分析入门
- pandas入门(持续更新)
- 10分钟入门pandas
- MyBatis--动态SQL
- 八、Shell数组:shell数组的定义、数组长度
- vue常用UI组件
- cocos2dx-js Shader的使用(高斯模糊)
- 两篇文章掌握Python语法和内置函数功能(第一篇)
- chapter5 Pandas入门
- Vue.js学习随笔
- 关于echart热力图 官网demo展示
- Struts2从一个action转到另一个action的两种方法
- 测试工具JMeter的安装及配置
- 深入解析iOS日志库CocoaLumberjack
- 递推求值
- 软件工程之概述
- SSH免密登录两台机器