您的位置:首页 > 理论基础 > 数据结构算法

Python数据分析入门(一)-Pandas数据结构(Series)

2017-10-31 16:35 906 查看

Series是一种类似于一维数组的对象,具有标签(或者说索引),下面将介绍Series对象的常用方法及操作

导包

import pandas as pd
import numpy as np


创建Series对象

list1 = [1,2,3,4] # 以list方式创建,索引默认为从0开始的整数
ser = pd.Series(list1)
>>> ser
0    1
1    2
2    3
3    4
dtype: int64


index_list=['a','b','c','d']
ser = pd.Series(list1,index=index_list) # 还可以指定索引
>>>ser
a    1
b    2
c    3
d    4
dtype: int64


#  或者直接用字典来创建Series
dict1 = {'tina':None,'kris':22,'hiphopman':30}
ser = pd.Series(dict1) # 默认按value的顺序降序排列
>>>ser
hiphopman       30
kris            22
tina            NaN    # 此处可见series可以接受空值
dtype: int64


可以用pd.isnull 或者 pd.notnull来进行条件选择

ser_bool = pd.isnull(ser)
# 此时返回的依然是Series,其对应位置的value为null则为True,反之则为False,而pd.notnull则是相反。
>>>ser_bool
hiphopman    False
kris         False
tina          True
dtype: bool


元素及索引

>>>ser['tina'] # 取索引为tina的元素的值
nan

>>>ser[['tina','hiphopman']  # 根据list索引返回series对象
tina          NaN
hiphopman    30.0

>>>ser.values # 返回此ser的所有元素值,类型为 numpy.ndarray
[ 30.  22.  nan]

>>>ser.index # 返回此ser的所有索引,类型为pandas.indexes.base.Index
Index(['hiphopman', 'kris', 'tina'], dtype='object')


常用运算

>>>ser[ser>22] # 找到ser中值大于22的元素,返回的是Series对象
hiphopman    30.0
dtype: float64

>>>ser/2 # ser中所有元素进行 /2 的操作,自动过掉NaN
hiphopman    15.0
kris         11.0
tina          NaN
dtype: float64

>>>ser1 # series还支持自动匹配运算
hiphopman    30.0
kris         22.0
tina          NaN
dtype: float64

>>>dict2 = {'tina':None,'kris':22,'hiphopman':30,'micoon':24}
>>>ser2 = pd.Series(dict2)
>>>ser2
hiphopman    30.0
kris         22.0
micoon       24.0
tina          NaN
dtype: float64

>>>ser1+ser2 # 此时会返回series对象,其index会是参加运算的series所有元素的并集,而各自未交集的元素将值置空,如下显示micoon也为空
hiphopman    60.0
kris         44.0
micoon        NaN
tina          NaN
dtype: float64


增删改(查询见上面元素及索引)

>>>dict2 = {'cilo':19,'machine':29,'robot':34,'sellter':20}
>>>ser2 = pd.Series(dict2) # 创建一个新series
>>>new_ser = ser1.append(ser2) # 把ser2append到ser1中
>>>new_ser
hiphopman    30.0
kris         22.0
tina          NaN
cilo         19.0
machine      29.0
robot        34.0
sellter      20.0
dtype: float64
>>>new_ser.drop('tina') # 根据索引值删除,此方法为值传递,会返回一个新series,而不会改变原来new_ser的值
hiphopman    30.0
kris         22.0
cilo         19.0
machine      29.0
robot        34.0
sellter      20.0
dtype: float64
>>>new_ser['tina'] = 100 # 选取元素后直接赋值,即可修改
hipho
4000
pman     30.0
kris          22.0
tina         100.0
cilo          19.0
machine       29.0
robot         34.0
sellter       20.0
dtype: float64
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息