Python是一个很适合与数据打交道的语言,你可以用它来做爬虫,做表格,做折线图,数据清洗,大数据,量化交易,做分析工具用来炒股,图形AI识别。
一、初识pandas
pandas是进行数据分析的库,有很强大的数据处理能力
pandas基于Numpy的数据分析工具(Numpy我会在进阶篇写的)
她没用Python已有的数据结构和其他库的数据结构,而是自己设计了两种数据结构:Series和Dataframe
用他们两个来处理表格型的数据非常方便。
Series数组
Series是一种一维的带标签数组对象
Series数组对象由两部分构成:
值(value):一维数组的各元素值,是一个ndarray(会在Numpy篇里讲)类型数据。
索引(index):与一维数组值一一对应的标签。利用索引,我们可非常方便在Series数组中进行取值。
使用列表创建Series
创建Series数据结构时,如果没有指定标签,那就从0开始递增。
也可以一开始给指定index:
这里就可以利用索引取值出来了:
a[0]或者a['b']
从NumPy创建Series(这里必须是传入的一维数组对象)
使用字典创建series
series数组常用属性
Series数组的属性与numpy数组属性很是类似,如下表所示
DataFrame数组
series是一维的,dataframe是二维的,和Excel表格相似,其数据的呈现方式类似于Excel这种二维表结构。
相比于Series数组,DataFrame可以存放多维数据,所以DataFrame不仅仅有索引,还有列名。
通过字典创建
通过二维数组创建
通过列表创建
通过列表创建DataFrame数组时,列表的每一个元素必须是字典,这样,字典的键将作为列名。
通过功能函数创建
我们还可以通过诸如from_dict()、from_records()这类的功能函数来创建DataFrame数组,以from_dict()为例:
如果需要让字典的键作为索引,重新指定列名,可以传入orient='index'参数,然后重新传入列名。
DataFrame数组常用属性
DataFrame数组的属性与Series数据几乎一样,只是多了一个保存列名信息的columns属性,参看上面表格中的Series属性就行了。
DataFrame元素索引
创建时指定了index 和 columns标签,这是为了便于通过标签取得元素。与列表类似,dataframe也可以选取一个或多个元素。
输出行列索引和元素值:
dataframe.columns
dtataframe.index
dataframe.values
动手写一遍代码
按列或行索引
在dataframe中,通过dataframe[列名]或dataframe.列名的方式就可以取得对应的一列数据。
更新DataFrame
二、数据运算
在进行数据运算的时候,pandas可以让数据自动对齐。参与运算的两个数据结构的索引顺序不一致,但是只要索引项一致,就可以自动对齐,并进行运算,如果索引项只在一个数据结构中出现,那么该元素无法进行对齐和运算,用NaN填充。
series之间的运算
DataFrame之间的运算
对齐规则相同,但是列和行都需要对齐
列和行标签相同才会做运算。否则NaN填充。
pandas里有算术函数可以进行常规运算:
add()//加
sub()//减
mul()//乘
div()//除
s1.add(s2)
series和dataframe之间的运算
他们两种不同的数据结构进行数学运算时,series中的元素会与dataframe中具有相同列索引的元素进行数学运算:
注意columns和index是对应的,如果一个索引项只存在于一个数据结构中,那么运算结果中会为该索引生成一列,只不过都是NaN。
numpy通用函数
pandas可以用numpy函数拓展,操作series和dataframe,比如sqrt,square函数,这是开方和平方的。
三、文件读取和数据选取
pandas对大量的Excel表格进行操作,pandas可以对Excel,csv,数据库文件等等进行数据读取。
read_excel()和read_csv(),用info函数去查看数据的整体信息。
数据选取
使用loc和iloc选取数据
df.loc[]只能使用标签索引,不能使用整数索引,通过便签索引切边进行筛选时,前闭后闭。
df.iloc[]只能使用整数索引,不能使用标签索引,通过整数索引切边进行筛选时,前闭后开。
df.ix[]既可以通过整数索引进行数据选取,也可以通过标签索引进行数据选取,换句话说,df.ix[]是df.loc[]和df.iloc[]的功能集合,且在同义词选取中,可以同时使用整数索引和标签索引。
Python培训:http://www.baizhiedu.com/python2019