《Python数据分析实战》
1.Pandas:Python数据分析库
Pandas是一个专门用于数据分析的开源Python库。它能够以最简单的方式提供数据处理、数据抽取和数据操作所需的全部工具。
Pandas还有专门为数据分析设计的两个数据结构,Series和DataFrame。
Numpy主要是处理矩阵/数组。
2.Pandas数据结构—Series对象
pandas库的Series对象用来表示一维数据结构,跟数组类似,但多了一些额外的功能,每个元素都有与之相关联的索引,被存储在一个Index的数组中。
声明Series对象:
调用Series()构造函数,可以把数据以元组/数组形式传入,就能创建一个Serise对象。同时可以进行指定Index选项。
import numpy as np
import pandas as pd
s = pd.Series((1,2,3,4))
s
>> 0 1
1 2
2 3
3 4
dtype: int64
s = pd.Series([1,2,3,4],index=['a','b','c','d'])
s
>> a 1
b 2
c 3
d 4
dtype: int64
如果想查看组成Series对象的两个数组,可像下面这样调用它的两个属性:index(索引)和value(元素)。
s.value
>> array([1, 2, 3, 4], dtype=int64)
s.index
>> Index(['a', 'b', 'c', 'd'], dtype='object')
选择内部元素:
#通过索引index
s
>> a 1
b 2
c 3
d 4
dtype: int64
s[1]
>> 2
s['b']
>> 2
#从Numpy数组中选择多个元素
s[0:2]
>> a 1
b 2
dtype: int64
s[['b','c']]
>> b 2
c 3
dtype: int64
Numpy数组中选择多个元素的方法可以通过类似切片的方法,或者通过使用元素对应的标签,只不过要把标签放到数组中。
为元素赋值:
s
>> a 1
b 2
c 3
d 4
dtype: int64
s[0] = 0
s['b'] = 1
s
>> a 0
b 1
c 3
d 4
dtype: int64
用Numpy数组或其他Series对象定义新Series对象:
#1.通过Numpy数组创建Series对象
arr1 = np.array((1,2,3))
arr2 = np.array([4,5,6])
s1 = pd.Series(arr1)
s2 = pd.Series(arr2)
s1
>> 0 1
1 2
2 3
dtype: int32
s2
>> 0 4
1 5
2 6
dtype: int32
#2.通过字典创建Series对象,相当于同时指定索引了。
s3 = pd.Series({
'1':1,'2':2,'3':3})
s3
>> 1 1
2 2
3 3
dtype: int64
#通过Series创建Series对象
s
>> a 12
b 1
c 7
d 9
dtype:int64
s4 = pd>series(s)
>> a 12
b 1
c 7
d 9
dtype:int64
然而,这样做时不要忘记新Series对象中的元素不是原Numpy数组或Series对象元素的副本,而是对它们的引用。也就是说,这些对象时动态插入到新Series对象中。如改变原有对象元素的值,新Series对象中的这些元素也会发生改变。
附注:Numpy新建一个数组的方法:1.单层或嵌套列表 2.单层或嵌套元组 3.元组和列表混合组成的列表 4.np.arange(0,10)或np.arange(0,10,2)方法。
筛选元素:
pandas库的开发时以Numpy库为基础的,因此就数据结构而言,Numpy数组的多种操作方法得以扩展到Series对象中,其中就有根据条件筛选数据结构中的元素这一方法。
#numpy中
b = np.array([1,2,3,4,5,6,7,8,9])
b[b>4]
>> array([5, 6, 7, 8, 9])
#Series中
s
>>0 12
1 4
2 7
3 9
dtype: int32
s[s>8]
>> 0 12
3 9
dtype: