- 导入pandas库
import pandas as pd
2.pandas数据结构简介
pandas的核心为两大数据结构,数据分析相关的所有事务都是围绕着这两种结构进行的:
Series Series这类数据结构用于存储一个序列的一维数据,
DataFrame 用于存储多维数据(类似于excel表格的结构)。
2.1 Series
pandas库的Series对象用来表示一维数据结构,跟数组array类似,但多了一些额外功能。它的内部结构很简单,由两个相互关联的数组组成,其中主数组用来存放数据。主数组的每个元素都有一个与之相关联的标签,这些标签存储在另外一个叫做Index的数组中。
2.1.1声明Series对象
声明Series时,若不指定标签,pandas默认使用从0开始依次递增的数值作为标签。这种情况下,标签与Series对象中元素的索引(在数组中的位置)一致。
s = pd.Series([12, -4, 7, 9])
也可以用NumPy数组或其他Series对象定义新Series对象
(注:numpy引用:import numpy as np)
arr = np.array([1, 2, 3, 4])
s1 = pd.Series(arr)
因此,调用构造函数时,就需要制定index选项,把存放有标签的数组赋给它,其中标签为字符串类型。
s = pd.Series([12, -4, 7, 9], index=[‘a’, ‘b’, ‘c’, ‘d’])
s.values
s.index
我们还可以把Series对象当做字典对象来用。定义Series对象时,就可以利用这种相似性。事实上,我们可以用事先定义好的字典来创建Series对象。(该方法与指定索引的效果相同)
mydict = {'red':2000, 'blue':1000, 'yellow':500, 'orange':1000}
s2 = pd.Series(mydict)
2.1.2选择内部数据
若想获取Series对象内部的元素,把它作为普通的NumPy数组,指定键即可(即位置,从0开始)。
s[2]
或者,指定位于索引位置处的标签。
s[‘c’]
跟从NumPy数组选择多个元素的方法相同:
s[0:2]
(选取位置时包含起始键但不包括终止键的数据,即:[0:2]取键为0,1的数据不包含2)
s[[‘a’, ‘b’]]
(当用索引查找多个数据时,索引必须用list包起来)
查找尽量用索引,键不稳定(两个连续的索引重复,会报IndexERROR)
2.1.3为元素赋值
s[0] = 0
s[‘b’] = 1
2.1.4筛选元素
s > 8
s[s > 8]
2.1.5 Series对象运算和数学函数(对每个元素都进行运算得到的Series必须重新赋值,s不会有改变)
s + 2
s - 2
s * 2
s / 2
2.1.6 Series对象的组成元素
serd = pd.Series([1, 0, 2, 1, 2, 3], index=[“white”, “white”,”blue”, “green”, “green”, “yellow”])
serd.unique()
(对Series对象的values去重, 返回结果为一个数组array)
serd.value_counts()
(跟unique()函数相似,不仅返回各个不同的元素,还计算每个元素在Series中的出现次数)
新的Series的index代表去除后的元素,values代表出现次数
isin()函数用来判断所属关系,也就是判断给定的一列元素是否包含在数据结构之中。Isin()函数返回布尔值,可用于筛选Series和DataFrame列中的数据:
serd.isin([0, 3])
serd[serd.isin([0, 3])]
2.1.8NaN
NaN(Not a Number,非数值)、None、NULL。数据结构中若字段为空或者不符合数字的定义时,用这个特定的值来表示。
s2 = pd.Series([5, -3, np.NaN, 14])
Isnull()
和notnull()
函数用来识别没有对应元素的索引时非常好用。
s2.isnull()
s2.notnull()
这两个函数可用作筛选条件:
s2[s2.notnull()]
s2[s2.isnull()]
2.1.8 Series对象之间的运算
Series对象之间进行运算时,在标签相对应元素之间进行计算当找不到对应的标签时,返回NaN(Series能够通过标识符标签对齐不一致的数据)。
mydict = {'red':2000, 'blue':1000, 'yellow':500, 'orange':1000}
myseries = pd.Series(mydict)
mydict2 = {'red':400, 'yellow':1000, 'black':700}
myseries2 = pd.Series(mydict2)
myseries + myseries2
Series的简介和基本用法差不多就介绍完了
未完待续……….