3.2.2 Python之pandas详解1-Series

Pandas是基于NumPy的一个常用库。之所以如此,是因为不论是读取还是处理数据,用它都非常简单。
1,pandas基本数据结构
Pandas有两种自己独有的基本数据结构。
pandas虽然有两种数据结构,因为他是Python的一个库,所以Python的数据类型在这里依然适用,同样还可以使用类自己定义数据类型。
Pandas里面又定义了两种数据类型: SeriesDataFrame
基本的导入方式:
from pandas import Series,DataFrame
import pandas as pd
1)Series介绍
Series如同列表一样,有一系列数据,每个数据对应一个索引值。
>>> a = Series ([20,"hello","python","beijing"])
>>> a
0 20
1 hello
2 python
3 beijing
dtype: object
上面能看出来,Series就是“竖起来”的list
另外一点也很像列表,就是其中元素的类型由你任意决定
>>> a. values
array([20, 'hello', 'python', 'beijing'], dtype=object)
>>> a. index
RangeIndex(start=0, stop=4, step=1)
我们创建了一个Series对象,这个对象有其属性和方法。 a.valuesa.index两个属性依次可以显示Series对象的数据值和索引
列表的索引只能是从0开始的整数,在默认情况下,Series数据类型其索引也是如此。但区别于列表的是,Series可以 自定义索引
>>> a1 = Series ([20,"hello","python","beijing"], index =["age","title","name","addr"])
>>> a1
age 20
title hello
name python
addr beijing
dtype: object
每个元素都有了索引,就可以根据索引操作元素了。
根据索引 查看修改数值:
>>> a1["age"]
20
>>> a1["age"]= 18
>>> a1
age 18
title hello
name python
addr beijing
dtype: object
前面定义Series对象的时候,用的是列表,即Series()方法的参数中第一个列表就是其数据值,如果需要定义index,放在后面依然是一个列表。除了这种方法之外,还可以用下面的方法定义Series对象:
>>> s = {"java":7000,"python":8000,"zhangsan":18}
>>> s1 = Series (s)
>>> s1
java 7000
python 8000
zhangsan 18
dtype: int64
是不是有点类似数据字典(dict),这时候,索引依然可以自定义。如果自定义了索引,自定义的索引会自动寻找原来的索引。如果一样,就取原来索引对应的值,这个可以简称为“ 自动对齐”。
>>> s2 = Series (s,index=["java","c++","python","zhangsan"])
>>> s2
java 7000.0
c++ NaN
python 8000.0
zhangsan 18.0
dtype: float64
于是其他能够“自动对齐”的照搬原值,没有的那个“c++”依然在新Series对象的索引中存在,并且自动为其赋值 NaN。在Pandas中,如果没有值,都对齐赋给NaN。
Pandas有专门的方法来判断值是否为空:
>>> pd.isnull(s2)
java False
c++ True
python False
zhangsan False
dtype: bool
>>> pd.notnull(s2)
java True
c++ False
python True
zhangsan True
dtype: bool
Series也有同样的方法:
>>> s2.isnull()
java False
c++ True
python False
zhangsan False
dtype: bool
索引的名字也可以重新定义:
>>> s2.index = ["q1","q2","q3","q4"]
>>> s2
q1 7000.0
q2 NaN
q3 8000.0
q4 18.0
dtype: float64
对于Series数据,也可以做这样的运算:
>>> s3 = Series ([3,6,9,5],index=["a","b","c","d"])
>>> s3
a 3
b 6
c 9
d 5
dtype: int64
>>> s3[s3 > 5]
b 6
c 9
dtype: int64
>>> s3 * 2
a 6
b 12
c 18
d 10
dtype: int64
这些操作直接在交互模式中进行就行。

注意:别忘记了最前面的引入Series,DataFrame和Pandas

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值