1、Numpy
Numpy的核心对象:ndarray多维数组对象,数组允许使用类似于标量的操作语法在整块数据上进行数学计算(数组是一个矢量)。一个ndarray是一个通用的多维同类型数据容器,
它包含的每一个元素均为相同类型。
两个重要属性:shape,dtype,ndim
生成ndarray的方法:
(1)、array函数,可接收任意的序列型对象(包括数组),比如列表、元组、字符串、数组,生成一个新的包含传递数据的Numpy数组。
(2)、创建特殊数组:zeros,zeros_like,ones,ones_like,empty,empty_like,full,full_like,eye(或者identity)。其中full有几个重要参数:
shape,fill_value,dtype,order,fill_value指定元素值,order指定在内存中的存储方式,选项{'C','F'},是否在内存中以行为主(C风格)或列为主(Fortran风格)
连续(行或列)顺序存储多维数据
(3)、其他:asarray,arange。
astype:转换数组的数据类型
算术运算:批量操作,无需循环
注意:Numpy的切片不复制数据,而只是原数组的视图。这话怎么理解呢?Python中对列表的切片是会自动进行复制的,也就是说你切片得到的数据与原列表已经没有关系了,
对切片得到的数据的任何操作不影响原列表,而Numpy不一样,对数组切片或者索引只是给出原数组的一个视图,如果你熟悉内存的存储原理的话,可以这样理解,
切片或者索引得到的数据依然指向原数组的内存地址,而不是重新开辟一块内存。通俗地讲,不论是索引还是切片,相当于打开了一个窗口,借此浏览原数组的全部或部分元素,
而不重新生成数据(开辟内存),所以对索引或者切片得到的数据的操作也就是对原数组的操作,不论是重新赋值给其他变量还是直接操作,都会反映到原数组上。
2、Pandas
a.过滤缺失值:dropna函数 参数:axis : {0 or ‘index’, 1 or ‘columns’} how : {‘any’, ‘all’},默认值 any
any : 如果存在任何NA值,则放弃该标签
all : 如果所以的值NA值,则放弃该标签
thresh : int, 默认值 None
int value :要求每排至少N个非NA值
subset : 类似数组
inplace : boolean, 默认值 False
如果为True,则进行操作并返回None。
返回:被删除的DataFrame
b.pandas中索引对象:索引对象不可变,可通过pandas中的Index函数事先单独构建索引对象
1 import numpy as np 2 import pandas as pd 3 4 lables = pd.Index(['a','b','c']) 5 obj1 = pd.Series(np.arange(3),index=lables)
b.pandas中的rank函数
1 obj2 = pd.Series(np.random.randint(-15,20,size=20)) 2 obj21 = obj.sort_values() 3 obj22 = obj.rank()
obj2 obj21 obj22
sort_values函数按元素大小排序,大小相同的按整数索引值排序,序号从1开始,以数据总个数结束,可以得到每个元素的唯一序号,rank函数以sort_values排序为基础,大小相同的元素以序号的平均值作为名次。
(1)pandas的两种数据类型之Series
1 mylist = list(['abcdefghijklmn']) 2 myarr = np.arange(26) 3 mydict = {'a':1,'b':2,'c':3} 4 ser1 = pd.Series(mylist) 5 ser2 = pd.Series(myarr) 6 ser3 = pd.Series(mydict)
Series的属性与方法
属性:values,index,name(value的name),index.name(索引的name)
方法:使用布尔索引过滤,使用numpy的函数或numpy风格的操作
检查是否有缺失值:使用pandas对象的实例方法isnull,notnull,这同时也是pandas的函数
(2)pandas的两种数据类型之DataFrame
3、一些好用容易忘的API
日期字符串转换为datetime类型:to_datetime()
datetime类型转换成字符串格式:dates.dt.strftime()