引入Pandas包,
import pandas as pd
Series属于Pands的一维数据
1.创建一个Series数据
语法:pd.Series(列表)
obj = pd.Series([1, 2, 3, 4, 5])
# 结果
0 1
1 2
2 3
3 4
4 5
dtype: int64
参数一:dypte = np.数据类型
举例:pd.Series(obj, dtypte = np.int64
)
参数二:name = 命名;默认为None
举例:pd.Series(obj, name= 'demo'
)
参数三:index = [list];将Series数据进行排序,默认为从0开始
举例:pd.Series(obj, index=[4, 3, 2, 1, 0]
)
用字典构建Series数据,字典的键就是Series的索索引index
语法:pd.Series({dict})
举例:
obj1 = pd.Series({'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000})
obj1
Ohio 35000
Texas 71000
Oregon 16000
Utah 5000
dtype: int64
1.1 查看Series数据
查看Series的键(index):数据.index
obj.index
RangeIndex(start=0, stop=5, step=1)
RangeIndex(start=0, stop=5, step=1),代表从0开始—5结束,数之间的间隔是1
查看Series的值:数据.values
obj.values
array([1, 2, 3, 4, 5], dtype=int64)
1.2 Series数据加减及NaN数据
键(index)对应的数据会进行相加,若没有对应的数据,则会生成一个NaN数据。
obj1 = pd.Series({'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000})
obj2 = pd.Series({'Ohios': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000})
obj1:
Ohio 35000
Texas 71000
Oregon 16000
Utah 5000
dtype: int64
obj2:
Ohios 35000
Texas 71000
Oregon 16000
Utah 5000
dtype: int64
两个数据不一样的键是Ohio和Ohios
obj3 = obj1 + obj2
obj3
Ohio NaN
Ohios NaN
Oregon 32000.0
Texas 142000.0
Utah 10000.0
dtype: float64
判断矩阵中是否含有NaN数据
- 判断是NaN数据-
data.isNull()
- 判断不是NaN数据-
data.notNull()
obj3.notnull()
Ohio False
Ohios False
Oregon True
Texas True
Utah True
dtype: bool
两种方法均会生成一个Bool型的Series数据,键(index)对应数据data中的键
1.3 Series的命名
给键命名:data.index.name = 'index_name'
给Series命名:data.name = 'obj_name'
原来的obj3:
Ohio NaN
Ohios NaN
Oregon 32000.0
Texas 142000.0
Utah 10000.0
dtype: float64
给键命名:
obj3.index.name = 'index_name'
index_name
Ohio NaN
Ohios NaN
Oregon 32000.0
Texas 142000.0
Utah 10000.0
dtype: float64
给obj3命名:
obj3.name = 'obj_name'
index_name
Ohio NaN
Ohios NaN
Oregon 32000.0
Texas 142000.0
Utah 10000.0
Name: obj_name, dtype: float64
1.4 Series数据的转置
语法:obj.reindex([list], method)
参数一为要重置的索引列表;
若重置后的数据含有空值,则可以加入第二参数
method = ’ffill‘
用前面的数来补充NaN值
method = 'bfill'
用后面的数来补充NaN值
注意:进行Method时,新索引和原索引必须是数字类型的数据
obj = pd.Series([4.5, 7.2, -5.3, 3.6], index=['d', 'b', 'a', 'c'])
d 4.5
b 7.2
a -5.3
c 3.6
dtype: float64
普通的转置:
obj2 = obj.reindex(['a','b','c','d','e'])
a -5.3
b 7.2
c 3.6
d 4.5
e NaN
dtype: float64
加了参数的转置:
得先把index转为数字
obj2.index = [2, 4, 6, 8, 10]
2 -5.3
4 7.2
6 3.6
8 4.5
10 NaN
dtype: float64
method = ‘ffill’,
数字1行索引之前在原索引中没有索引数据了所以仍然是NaN
obj3 = obj2.reindex([1, 2, 3, 4, 5], method = 'ffill')
1 NaN
2 -5.3
3 -5.3
4 7.2
5 7.2
dtype: float64
method = ‘bfill’
数字5行索引在原索引中后一个数字6索引中有值,所以将数字6索引的value引入
obj4 = obj2.reindex([1, 2, 3, 4, 5], method = 'bfill')
1 -5.3
2 -5.3
3 7.2
4 7.2
5 3.6
dtype: float64