pandas之Series基础
·
pandas之Series基础
1. pandas介绍
pandas是python语言的一个扩展程序库,用于数据分析pandas是一个开放源码,BSD许可的库,提供高性能,易于使用的数据结构和数据分析工具pandas名字衍生自术语panel data(面板数据)和python data analysis(python数据分析)pandas是一个强大的分析结构化数据的工具集,基础是numpy(提供高性能的矩阵运算)pandas可以从各种文件格式导入数据,例如;csv,excel,json...pandas可以对各种数据进行运算操作,比如:归并,再成形,选择,还有数据清洗和数据加工特征pandas的最主要数据结构是Series(一维数据)和DataFrame(二维数据),这两种数据结构足以处理金融,统计,社会科学,工程等领域里的大多数典型用例
2.Series定义
Series是一种类似于字典(dict-like)的一维数组(array-like)的对象,由下面两个部分组成:
注意:Series类型数值会强制统一
values:一组数据(ndarray类型)index:相关的数据索引标签
3.构造Series
-
1.
from ndarray,使用ndarray构造Series,是一个引用对象# 通过ndarry数组创建Series arr1=np.random.randint(0,10,size=5) # index是用来指定Series对象的显示索引,如果没有设置,则默认显示隐式索引填充(数组填充) s1=pd.Series(data=arr1,index=['A','B','C','D','E']) -
2.
from list使用列表构造,是一个副本对象#通过列表创建Series lis=[1,2,3,4] s3=pd.Series(data=lis,index=list('ABCD')) -
3.
from dict,使用字典构造#通过字典创建Series,通过字典创建不会传递index,字典的key就是index,如果传入index,会与字典中的key匹配,不匹配,返回NaN #字典构造的Series.默认使用字典的key作为显示索引,values作为Series的值 #NaN not a number 是空数值 user_info={ 'name':'hello', 'age':20, 'address':"安徽" } s4=pd.Series(data=user_info) #自动匹配user_info中的key s5=pd.Series(data=user_info,index=['name','address','A']) -
4.
from scalar(标量)value- 使用一个标量(常量或变量)构造时,必须指定index,标量会被重复匹配到每一个
index
index=list('ABCDE') #会将标量6重复匹配到每一个index s6=pd.Series(data=6,index=index) - 使用一个标量(常量或变量)构造时,必须指定index,标量会被重复匹配到每一个
4.Series属性
| 属性 | 含义 |
|---|---|
name | 返回Series对象的名字 |
shape | 返回Series对象的形状 |
size | 返回Series对象的元素个数 |
index or keys() | 返回Series对象的显示索引 |
values | 返回Series对象的所有元素值 |
items() | Python 字典的表达式和方法来检测键 / 索引和值 |
s = pd.Series(data=[1,2,3], index=list('ABC'))
s.shape #(3,)
s.index #Index(['A', 'B', 'C'], dtype='object')
s.keys() #Index(['A', 'B', 'C'], dtype='object')
s.values #array([1, 2, 3], dtype=int64)
s.size #3
list(s.items()) #[('A', 1), ('B', 2), ('C', 3)]
5. Series的数学运算
-
Series对大多数Numpy的函数都是兼容的 -
1.与非
pandas对象运算 【服从广播机制原则】#服从广播机制 s=pd.Series(data=[1,2,3],index=list('ABC')) s + 1 -
2.
numpy functions,numpy的函数Series也可用#求平方 np.power(np.array([1,2,3]),2) -
3.
Series之间的运算- 索引对齐原则
- 对不齐补空值,使用
add/sub/nul/div函数处理空值
s=pd.Series(data=[1,2,3],index=list('ABC')) s1=pd.Series(data=np.array([2,3,4]),index=['C','A','B']) s+s1 A 4 B 6 C 5 dtype: int64 #对不齐的补空值 s1=pd.Series(data=np.array([2,3,4]),index=['C','A','B']) s2=pd.Series(data=[2,3,4],index=['A','C','D']) s1+s2 A 5.0 B NaN C 5.0 D NaN dtype: float64
6. Series的索引和切片
| 显示索引 | 隐式索引 | 含义 |
|---|---|---|
data[0] | data['语文'] | 索引获取值 |
data[[0,2]] | data[['语文','数学'] ] | 列表获取值 |
data[0:2] | data['语文':'数学'] | 切片获取值 |
dic={ '语文':98, '数学':100, '英语':60 }
data=pd.Series(data=dic)
data[0]
data['语文']
data[0:2]
data['语文':'数学']
data[[0,2]]
data[['语文','英语']]

7. Series的常用方法
| 方法 | 含义 |
|---|---|
head() | 默认前n行数据,n默认为5 |
tail() | 默认后n行数据,n默认为5 |
unique() | 返回去重后元素值 |
nunique() | 返回去重后元素个数 |
value_counts() | 求不同元素的个数 |
isnull() | 判断数据是否为空 |
notnull() | 判断数据是否不为空 |
isnull() | 判断数据是否为空 |
notnull() | 判断数据是否不为空 |
add(n) | 每个元素加上n |
sub(n) | 每个元素减上n |
mul(n) | 每个元素乘上n |
div(n) | 每个元素除上n |
s4=pd.Series(data=[1,2,4,6,3,5,6,6,6,4,3,2,1])
display( s4.head(),s4.tail(),s4.unique() ,s4.nunique() ,s4.isnull(),s4.notnull(),s4.add(2),s4.sub(2),s4.mul(2),s4.div(2))
更多推荐
所有评论(0)