矩阵数据处理 Numpy 基础入门
2018-05-10 本文已影响28人
采香行处蹙连钱
pandas库学习
参考文献:http://codingpy.com/article/a-quick-intro-to-pandas/
import pandas as pd def load_data(y_name='Species'): CSV_COLUMN = ['SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth', 'Species'] path = '/Users/gl/Desktop/iris_training.csv' train = pd.read_csv(path, names=CSV_COLUMN, header=0) #pop删除某列,返回删除的那一列的数据,此处为简单赋值 train_x, train_y = train, train.pop(y_name) return (train_x, train_y) print(load_data()) 接口: df.tail() df.head() df['rain_octsep']或者df.rain_octsep 布尔过滤:df.rain_octsep < 1000 索引:df.iloc[30] 对数据集应用函数: def base_year(year): base_year = year[:4] base_year= pd.to_datetime(base_year).year return base_year df['year'] = df.water_year.apply(base_year) df.head(5) 数据集结构操作 合并数据集: 使用Pandas快速作图:
ove
Numpy快速入门
Python 学习数据科学或者机器学习,就必须学习 NumPy
1. 创建一维数组、矩阵 a = np.array([2, 3, 4, 5, 6]) b = np.array([4, 5, 5, 5, 6]) c = np.arange(6) d = np.linspace(0, 2*np.pi, 5) print(a, b, c, d) 2. 切片基本知识:切片适用于list、tuple和str l = [23, 42, 96, 7, 84, 99, 54, 1] t = (2, 85, 64, 129, 92, 84, 1, 33) s = 'Hello internet!' # Basic slicing. print(l[4:7]) # >>>[84, 99, 54] print(t[4:7]) # >>>(92, 84, 1) print(s[4:7]) # >>> 'o i' # First five. print(l[:5]) # >>>[23, 42, 96, 7, 84] print(t[:5]) # >>>(2, 85, 64, 129, 92) print(s[:5]) # >>>'>Hello' # Last five. print(l[-5:]) # >>> [7, 84, 99, 54, 1] print(t[-5:]) # >>> (129, 92, 84, 1, 33) print(s[-5:]) # >>> 'rnet!' # Every other. print(l[::2]) # >>>[23, 96, 84, 54] print(t[::2]) # >>>(2, 64, 92, 1) print(s[::2]) # >>>Hloitre! # Reverse order. print(l[::-1]) # >>>[1, 54, 99, 84, 7, 96, 42, 23] print(t[::-1]) # >>>(33, 1, 84, 92, 129, 64, 85, 2) print(s[::-1]) # >>>!tenretni olleH print(l[-5:-3:-2]) >>> [84] # copy and all print(l[:]) 3. 多维数组&切片 e = np.array([[11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25], [26, 27, 28 ,29, 30], [31, 32, 33, 34, 35]]) print(e[3, 4]) >>> 30 print(a[0, 1:4]) # >>>[12 13 14] print(a[1:4, 0]) # >>>[16 21 26] print(a[::2,::2]) # >>>[[11 13 15] # [21 23 25] # [31 33 35]] print(a[:, 1]) # >>>[12 17 22 27 32] 4. 向量和矩阵 向量是一个有方向和大小的量,通常用来表示速度、加速度和动量等。向量能以多种方式书写,但是我们最有用的方式是把它们写在有 n 个元素的元组里边,比如(1, 4, 6, 9)。这就是它们在 NumPy 中的表示方式。 5. 数组属性 依旧使用上例中的数组矩阵 print(type(a)) # >>><class 'numpy.ndarray'> print(a.dtype) # >>>int64 print(a.size) # >>>25 print(a.shape) # >>>(5, 5) 数组的形状(shape)是指它有多少行和列 print(a.itemsize) # >>>8 'itemsize' 属性是每一个条目所占的字节 print(a.ndim) # >>>2 'ndim' 属性是指数组有多少维 print(a.nbytes) # >>>200 6. 使用数组基本操作 a = np.arange(25) a = a.reshape((5, 5)) b = np.array([10, 62, 1, 14, 2, 56, 79, 2, 1, 45, 4, 92, 5, 55, 63, 43, 35, 6, 53, 24, 56, 3, 56, 44, 78]) b = b.reshape((5,5)) print(a + b) print(a - b) print(a * b) // 这里是矩阵的某个位置上的数字相乘 print(a / b) print(a ** 2) print(a < b) print(a > b) print(a.dot(b)) // 这里是矩阵的点积 7. 数组特定操作符 print(a.sum()) # >>>45 print(a.min()) # >>>0 print(a.max()) # >>>9 print(a.cumsum()) # >>>[ 0 1 3 6 10 15 21 28 36 45] 8.高级索引 花俏的索引 “花俏的索引”是获取数组中我们想要的特定元素的有效方法。 a = np.arange(0, 100, 10) indices = [1, 5, -1] b = a[indices] print(a) # >>>[ 0 10 20 30 40 50 60 70 80 90] print(b) # >>>[10 50 90] 返回了 indices索引数组要求的数据 布尔屏蔽 缺省索引 缺省索引是从多维数组的第一维获取索引和切片便捷方法。例如,你有一个数组 a = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]],那么 a[3] 将会返回数组第一维中索引值为 3 的元素,这里的结果是 4。 a = np.arange(0, 100, 10) b = a[:5] c = a[a >= 50] print(b) # >>>[ 0 10 20 30 40] print(c) # >>>[50 60 70 80 90] Where函数 # Where a = np.arange(0, 100, 10) b = np.where(a < 50) c = np.where(a >= 50)[0] print(b) # >>>(array([0, 1, 2, 3, 4]),) print(c) # >>>[5 6 7 8 9]
over