生成数组
1 2 3 4 5
| a = np.array([[1,2,3],[4,5,6]]) # 从现有的数组当中创建 a1 = np.array(a) # 相当于索引的形式,并没有真正的创建一个新的 a2 = np.asarray(a)
|
关于array和asarray的不同
1 2 3 4
| 等于创建一个软链接 当数组赋值给另外一个变量后, array:修改变量不会改变 asarray: 会跟着改变
|
生成各种不同的数组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| 生成固定范围的数组
np.linspace (start, stop, num, endpoint) 参数: start:序列的起始值 stop:序列的终止值 num:要生成的等间隔样例数量,默认为50 endpoint:序列中是否包含stop值,默认为ture
等差数组
np.arange(start,stop, step, dtype)
参数 step:步长,默认值为1 np.arange(10, 50, 2)
等比数组
np.logspace(start,stop, num) num:要生成的等比数列数量,默认为50
生成随机数组 np.random
|
正态分布创建方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| 准正态分布中返回一个或多个样本值 np.random.randn(d0, d1, …, dn)
np.random.normal(loc=0.0, scale=1.0, size=None)
loc:float
此概率分布的均值(对应着整个分布的中心centre)
scale:float
此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)
size:int or tuple of ints
输出的shape,默认为None,只输出一个值
返回指定形状的标准正态分布的数组。 np.random.standard_normal(size=None)
|
均匀分布
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| np.random.rand(d0, d1, ..., dn) 返回一组均匀分布的数。
从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high. np.random.uniform(low=0.0, high=1.0, size=None
均匀分布中随机采样,生成一个整数或N维整数数组 np.random.randint(low, high=None, size=None, dtype="l") 取数范围:若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数。
|
形状修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 返回一个具有相同数据域,但shape不一样的视图 行、列不进行互换 ndarray.reshape(shape, order)
修改数组本身的形状(需要保持元素个数前后相同) 行、列不进行互换
ndaarray.resize(new_shape)
数组的转置 将数组的行、列进行互换
ndaarray.T
|
类型修改
1 2 3 4 5 6 7 8
| 返回修改了类型之后的数组 stock_change.astype(np.int32)
构造包含数组中原始数据字节的Python字节 arr = np.array([[[1, 2, 3], [4, 5, 6]], [[12, 3, 34], [5, 6, 7]]]) arr.tostring()
|
返回给定的形状哥类型的新数组,用0填充
numpy.zeros(shape,dtype=float,order = ‘C’)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| 返回给定形状和类型的新数组,用0填充。
参数: shape:int 或 int 的元组
新阵列的形状,例如:(2,3)或2。 dtype:数据类型,可选 数组的所需数据类型,例如numpy.int8。默认是numpy.float64 order:{'C','F'},可选,默认:'C' 是否在内容中以行(C)或列(F)顺序存储多维数据。 返回: out:ndarray 具有给定形状,类型和顺序的0的数组。
np.zeros((2,3)) Out[2]: array([[ 0., 0., 0.], [ 0., 0., 0.]])
|
分组频数计算
1 2 3 4
| mean() 取平均值 nunique方法计算pandas Series的唯一值计算(去重) value_counts方法获取pandas Series的频数统计
|
to_numeric 函数
变量转换为数值类型(int,float)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| DataFrame每一列的数据类型必须相同,当有些数据中有缺失,但不是NaN时(如missing,null等),会使整列数据变成字符串 类型而不是数值型,这个时候可以使用to_numeric处理
pd.to_numeric(tips_sub_miss['total_bill'])
to_numeric函数有一个参数errors,它决定了当该函数遇到无法转换的数值时该如何处理 默认情况下,该值为raise,如果to_numeric遇到无法转换的值时,会抛错 coerce: 如果to_numeric遇到无法转换的值时,会返回NaN ignore: 如果to_numeric遇到无法转换的值时会放弃转换,什么都不做 pd.to_numeric(tips_sub_miss['total_bill'],errors = 'ignore')
to_numeric向下转型 to_numeric函数还有一个downcast参数, downcast接受的参数为 'integer','signed','float','unsigned' downcast参数设置为float之后, total_bill的数据类型由float64变为float32
pd.to_numeric(tips_sub_miss['total_bill'],errors = 'coerce',downcast='float')
|
分类数据(category)
Pandas 有一种类别数据, category,用于对分类值进行编码
1 2 3 4
| 转换为category类型 tips['sex'] = tips['sex'].astype('str') tips.info()
|
Pandas 数据类型转换
Pandas除了数值型的int 和 float类型外,还有object ,category,bool,datetime类型
可以通过as_type 和 to_numeric 函数进行数据类型转换
Pandas 分类数据类型
category类型,可以用来进行排序,并且可以自定义排序顺序
CategoricalDtype可以用来定义顺序