pandas数据结构Series学习
来源:互联网 发布:mac怎么看硬盘文件 编辑:程序博客网 时间:2024/05/16 15:40
pandas的两个主要数据结构:Series和DataFrame
Series是一种类似于一维数组的对象,由一组数据和一组数据标签(即索引)组成。
Series对象创建方法:
①直接传入值列表,创建默认0到N-1(N为数组的长度)整数索引Series对象
In [1]: import numpy as npIn [2]: import pandas as pdIn [3]: pd.Series([1,3,5,np.nan,6,8])Out[3]:0 1.01 3.02 5.03 NaN4 6.05 8.0dtype: float64②创建指定数据标签的Series对象
In [8]: pd.Series([1,3,5,np.nan,6,8],index=['A','B','C','D','E','F'])Out[8]:A 1.0B 3.0C 5.0D NaNE 6.0F 8.0dtype: float64
③利用字典创建Series对象,字典的键当作Series对象的索引(有序排列)
In [13]: data = {'A':2,'B':4,'D':8,'C':16}In [14]: s2 = pd.Series(data)In [15]: s2Out[15]:A 2B 4C 16D 8dtype: int64④字典键根据指定索引匹配创建Series对象,匹配上的取字典values,否则取Nan
In [16]: idx = ['A','B','D','G']In [17]: s3 = pd.Series(data,index=idx)In [18]: s3Out[18]:A 2.0B 4.0D 8.0G NaNdtype: float64Series对象属性:
①shape属性获取数组的形状
In [9]: s = pd.Series([1,3,5,np.nan,6,8])In [10]: s.shapeOut[10]: (6,)②dtype属性获取数组的数据类型
In [12]: s = pd.Series([1,3,5,np.nan,6,8])In [13]: s.dtypeOut[13]: dtype('float64')③values属性获取数组的内容
In [4]: s = pd.Series([1,3,5,np.nan,6,8])In [5]: s.valuesOut[5]: array([ 1., 3., 5., nan, 6., 8.])④index属性获取数组的索引
In [6]: s = pd.Series([1,3,5,np.nan,6,8])In [7]: s.indexOut[7]: RangeIndex(start=0, stop=6, step=1)
⑤Series对象本身及索引的name属性
In [23]: s3.name='data'In [24]: s3.index.name='idx'In [25]: s3Out[25]:idxA 2.0B 4.0D 8.0G NaNName: data, dtype: float64Series缺失数据处理
①检查缺失数据
In [19]: pd.isnull(s3)Out[19]:A FalseB FalseD FalseG Truedtype: boolIn [20]: pd.notnull(s3)Out[20]:A TrueB TrueD TrueG Falsedtype: boolIn [21]: s3.isnullOut[21]:<bound method NDFrame.isnull of A 2.0B 4.0D 8.0G NaNdtype: float64>In [22]: s3.notnullOut[22]:<bound method NDFrame.notnull of A 2.0B 4.0D 8.0G NaNdtype: float64>
②删除缺失数据
In [29]: s3.dropna()#返回删除Nan后数据,原s3不受影响Out[29]:A 2.0B 4.0C 8.0Name: data, dtype: float64In [30]: s3Out[30]:A 2.0B 4.0C 8.0D NaNName: data, dtype: float64 In [31]: s3[s3.notnull()]#通过布尔索引获取不为Nan数据Out[31]:A 2.0B 4.0C 8.0Name: data, dtype: float64
③填充缺失数据
In [32]: s3.fillna(0)#用0填充缺失数据Out[32]:A 2.0B 4.0C 8.0D 0.0Name: data, dtype: float64In [40]: s3.fillna(s3.mean())#用均值填充缺失数据Out[40]:A 6.0B 4.0C 8.0D 6.0Name: data, dtype: float64In [33]: s3.fillna(method='ffill')#向前填充Out[33]:A 2.0B 4.0C 8.0D 8.0Name: data, dtype: float64In [36]: s3.A=NoneIn [37]: s3Out[37]:A NaNB 4.0C 8.0D NaNName: data, dtype: float64In [39]: s3.fillna(method='bfill')#向后填充Out[39]:A 4.0B 4.0C 8.0D NaNName: data, dtype: float64In [41]: s3.fillna(method ='bfill',limit=1)#向后填充,同时控制填充的次数Out[41]:A 4.0B 4.0C 8.0D NaNName: data, dtype: float64Series数据选择:
首先新建Series对象s:
In [1]: import pandas as pdIn [2]: import numpy as npIn [3]: s = pd.Series([1,3,5,np.nan,6,8],index=['A','B','C','D','E','F'])In [4]: sOut[4]:A 1.0B 3.0C 5.0D NaNE 6.0F 8.0dtype: float64①下标位置整数索引
In [5]: s[1]#获取单值Out[5]: 3.0In [6]: s[[1,2,3]]#获取多值Out[6]:B 3.0C 5.0D NaNdtype: float64
②数据标签索引
In [7]: s['B']Out[7]: 3.0In [8]: s[['B','C','D']]Out[8]:B 3.0C 5.0D NaNdtype: float64
get(self, key, default=None)
get_value(self, label, takeable=False)
get_values(self)
In [11]: s.get(1)#获取单值Out[11]: 3.0In [12]: s.get('B')Out[12]: 3.0In [13]: s.get([1,3])#获取多值Out[13]:B 3.0D NaNdtype: float64In [14]: s.get(['B','D'])Out[14]:B 3.0D NaNdtype: float64In [15]: s.get_value(1)#只能获取单值Out[15]: 3.0In [16]: s.get_value('B')Out[16]: 3.0In [17]: s.get_values()#获取所有值Out[17]: array([ 1., 3., 5., nan, 6., 8.])In [18]: s.get('G')#索引不存在,默认返回None,不报错④切片
In [3]: s = pd.Series([1,3,5,np.nan,6,8],index=['A','B','C','D','E','F'])In [4]: s[:3]#获取下标为3之前的所有数据,不包含下标为3索引数据Out[4]:A 1.0B 3.0C 5.0dtype: float64In [5]: s[3:]#获取下标为3之后的所有数据,包含下标为3索引数据Out[5]:D NaNE 6.0F 8.0dtype: float64In [6]: s[:-1]#获取所有数据Out[6]:A 1.0B 3.0C 5.0D NaNE 6.0dtype: float64In [7]: s[-1:]#获取最后一个数据Out[7]:F 8.0dtype: float64In [8]: s[1:5:2]#获取下标为1、3索引数据Out[8]:B 3.0D NaNdtype: float64In [10]: s[-1::-1]#逆序输出Out[10]:F 8.0E 6.0D NaNC 5.0B 3.0A 1.0dtype: float64
①直接赋值操作
In [1]: import pandas as pd ...: import numpy as np ...: s = pd.Series([1,3,5,np.nan,6,8],index=['A','B','C','D','E','F']) ...: s.D=4 ...: s ...:Out[1]:A 1.0B 3.0C 5.0D 4.0E 6.0F 8.0dtype: float64
②布尔运算
In [2]: s[s>3]Out[2]:C 5.0D 4.0E 6.0F 8.0dtype: float64
In [3]: s*2Out[3]:A 2.0B 6.0C 10.0D 8.0E 12.0F 16.0dtype: float64
In [4]: s1 = pd.Series([4,5,6,7],index=['B','C','D','G'])In [6]: s1Out[6]:B 4C 5D 6G 7dtype: int64In [7]: s+s1Out[7]:A NaNB 7.0C 10.0D 10.0E NaNF NaNG NaNdtype: float64
⑤成员运算
In [8]: 'B' in sOut[8]: TrueIn [9]: 'G' not in sOut[9]: True⑥Series对象索引的赋值就地修改
In [26]: s3.index=['A','B','C','D']In [27]: s3Out[27]:A 2.0B 4.0C 8.0D NaNName: data, dtype: float64
0 0
- pandas数据结构Series学习
- pandas&pandas学习教程&DataFrame与Series数据结构
- Pandas数据结构之:Series
- Pandas数据结构-Series
- pandas数据结构之Series
- pandas学习笔记-Series
- pandas中的Series学习
- Pandas 数据结构(Series,DataFrame)
- pandas的数据结构-Series
- pandas核心数据结构series详解
- Pandas 数据结构Series、DataFrame分析
- python-pandas-Series和DataFrame数据结构构建
- Python-Pandas(5)核心数据结构Series详解
- Pandas Series
- pandas: series
- Pandas Series
- pandas-Series
- Pandas-Series
- 剑指offer 10. 二进制中1的个数
- error KVM 桥接虚拟机不能使用
- Git 常用命令大全
- Hadoop常用指令
- 去除android导航栏和状态栏(返回键,home键,列表键)
- pandas数据结构Series学习
- yolo论文
- softmax回归(Softmax Regression)
- LoadRunner的安装破解教程
- [转载] ubuntu下如何查找某个文件的路径
- redhat下安装activeMQ
- STM32 根据固件库新建工程
- java 的接口可以实现接口吗?抽象类呢?
- 在ubuntu上安装neo4j图形数据库(3.2.0 Community Edition)