数据分析常用的基本操作
1 Numpy 2 np.array() 3 #数组的存储数据类型必须是统一的,如果不是统一的会按照 #str>float>int #转换为统一类型 4 np.array([1,2,3]) #返回一个一维数组 5 arry = np.array([[1,2,3],[1,1,1],[1,1,1]]) #返回二维数组 6 7 arry.shape() 8 arry.shape(arry) #传入一个数组 返回数组的形状 9 10 np.full() 11 np.full(shape=(5,6),fill_value = 55) #返回一个指定纬度的制定值的数组 12 13 np.linspace() 14 np.linspace(0,100,num=10) #返回一个指定区间等差数列 一维数组 15 16 np.arange() 17 np.arange(0,100,2) #返回一个指定区间的一维数组 18 19 np.random.randint() 20 np.random.randint(0,100,size=(6,7)) #返回指定维度,指定区间的,随机数组 21 22 np.random.seed() 23 np.random.seed(10) #固定随机因子 24 25 np.random.random() 26 np.random.random(size=(4,5)) #返回0到1之间 ,指定维度的二维数组 27 属性 28 arry.ndim # 返回数组的形状 29 30 arry.size #返回数组的大小 31 32 arry.dtype #返回数组元素的类型 33 34 切片 35 #,左边是行 右边是列 36 arr[0:2] #切前两行 37 arr[:,0:2] 切前两列 38 arr[::-1] #行倒叙 39 arr[:,::] #列倒序 40 41 变形 42 #保证改变的形状要可以装的下原本形状 43 arr1.reshape((4)) # 指定数组的形状 44 arr1.reshape((2,-1)) #-1是计算机自己计算 45 46 级联 47 #0 是列 1是行 48 #必须保证级联的 行/列 是一样的 49 50 a1 = np.random.randint(0,10,size=(4,5)) 51 a2 = np.random.randint(0,10,size=(4,5)) 52 53 np.concatenate((a1,a2),axis=0) 54 55 切分 56 #0是行 1是列 57 np.split(al,[2],axis=1) 58 59 60 聚合 61 0是列 1是行 不写是全部 62 a1.sum(axis=0) #求每一列的和 63 a1.sum() #求全部的和 64 排序 65 0是列 1是行 66 np.sort(a1,axis=0) #每一列从小到大排序 返回新的数组 67 a1.sort(axis=1) #没一行排序 映射会原数组 68 69 70 71 72 Pandas 73 导包 74 impost pandas as pd 75 from pandas import Series,DataFrame 76 77 Series 78 #Series必须是一维 79 s1 = Series(data=[1,2,3,4,5]) #创建一个Series对象 隐式索引 80 s1[0] #1 81 s2 = Series(data=[1,2,3,4,5],index=['a','b','c','d','e') #创建一个Series对象 隐式索引 和显示索引 82 s2['a'] #1 83 84 a1[[1,2,3]] #1,2,3 85 86 loc显示索引 87 iloc 是隐私索引 88 89 a['7'] = 7 增加一个值 90 91 notnill #值是nitll返回Flase 92 isnill #值是nitll返回True 93 94 DataFrame 95 创建 96 97 DataFrame(data=np.random.randint(60,120,size=(3,3),index=['a','b','c'],columns=['A','B','C']) 98 #data 数据源 size 形状 index 行显示索引 columns 列显示索引 99 #字典的 key是列索引 100 dfc = { 101 '张三':[150,150,150], 102 '李四':[0,0,0,0] 103 } 104 105 DataFrame(data=dic) 106 107 属性 108 df.values() #显示数据源 109 df.index() #返回行索引 110 df.columns() #返回列索引 111 df.shape() #返回DataFrame的形状 112 113 修改索引 114 df.index = ['值','值']修改行索引 115 df.columns = ['值','值'] 修改列索引 116 取值 117 #中括号中显示索引 获取列 118 df['lisi'] #获取列 119 df[['lisi','张三']]#获取多列 120 121 loc # 显示索引 ,左边是行 右边是列 122 df.loc['语文'] #获取行 123 124 iloc # 隐式索引 ,左边是行 右边是列 125 df.iloc[0] #获取行的 126 127 df.ioc[['理综','数学'],'张三'] #取得一列的多行 128 129 130 切片 131 左边是行 右边是列 直接[]代表行 132 df[0:2] #获取前两行 133 134 df.iloc[:,0:2] #获取前两列 135 136 df.loc[:,'张三':'李四'] #显示索引切出前两列 137 138 df['语文':'数学'] #显示索引取出前两行 139 140 141 142 运算 143 qizhong = df 144 qimo = df 145 146 qimo['张三'] = [145,140,150,138] #修改qimo中张三列的行成绩 147 148 149 (qizhong + qimo)/2 #qizhong 加上 qimo 除与2 150 151 152 qizhong.loc['数学',zhangsan] = 0 #取出张三列,的数学成绩全部改为0 153 154 155 数据清洗 156 all,any 1是行 0是列 157 df.isnill #把所有的值以布尔值显示是nill的显示True 158 df.isnill().any(axis=1) #any只要有true就显示true or 159 df.isnill().all(axis=1) #全部是true就返回True否则返回Flse 160 drop_index = df.loc[df.isnill().any(axis=1)].index #获取所有带有空值的行索引 161 162 163 drop行是0 列是1 164 df.drop(labels=drop_index,axis=0) #删除索引对应的行 165 df.dropna(axis=0) #删除有空值的行 166 167 168 filna 1是行 0是列 169 df.filna(value=33) # 用333填充所有空值 170 df.filna(method='bfill',axis=0) # 用列下面的值进行填充 171 df.filna(method='ffill',axis=0) # 用列上面的值进行填充 172 df.filna(method='ffill',axis=1) # 用行前面的值进行填充 173 df.filna(method='bfill',axis=1) # 用行后面的值进行填充 174 175 176 matplotlib 177 plt.imread() 178 img_arr = plt.imread('./cat.jpg') #返回一个图片对应维度的数组 179 img_arr = img_arr - 50 #可以进行减法操作 180 181 plt.imshow() 182 plt.imshow(img_arr) #放入图片对应维度的数组显示图片