Pandas 第二部分
1 import numpy as np 2 import pandas as pd 3 4 df = pd.read_excel("d:/test.xlsx") 5 if 0 : 6 print(df.dtypes) #查看数据的列的类型 7 pass 8 9 #查找一个条目 并删除 10 if 0: 11 # 查找一个条目 12 print(df[(df['年龄'] == 18) & (df['姓名'] == '李四')]) 13 # 删除它 14 df.drop([62], inplace=True) 15 print(df[60:64]) # 发现62 已经没有了 16 17 #因为上面删除了一些条目,所以index 就不会连续了 18 #然后重新更新它的index 19 df.index = range(len(df)) 20 21 #数据格式的 查看(dtype ) 与 装换 astype() 22 if 0: 23 #查看格式 dtype 24 if 0: 25 print(df["年龄"].dtype ) #int64 26 print(df['姓名'].dtype) #object 27 print(df["学号"].dtype ) #int64 28 print(df["工资"].dtype ) #float64 29 pass 30 #将年龄转为 浮点格式 astype() 31 if 0: 32 df['年龄'] = df['年龄'].astype(float) #默认指的是float64 33 print(df.dtypes) 34 pass 35 #将工资转为整数格式 astype() 36 if 0: 37 df['工资'] = df['工资'].astype(int) #int 指的是int32 38 print(df.dtypes) 39 pass 40 pass 41 42 #排序 43 if 0: 44 #默认排序 45 if 0: 46 #默认排序是按照index 来的 47 pass 48 #按照年龄排序 49 if 0: 50 if 0: 51 print( df.sort_values(by='年龄') ) #默认是升序 52 #降序排列 53 print(df.sort_values(by='年龄',ascending = False) ) 54 55 pass 56 #按照学号排序 57 if 0: 58 print(df.sort_values(by='学号',ascending = False )) 59 pass 60 61 #多个值排序 ,先按照学号 ,再按照年龄 62 if 0: 63 print( df.sort_values(by=['学号','年龄']) ) 64 pass 65 66 67 68 pass 69 70 #基本统计分析 71 if 0: 72 # 1,描述性统计 73 if 0: 74 res = df.describe() #对df 中的数值提供描述性统计 75 print(res) 76 #而且,我们往往还可以在描述性统计中的极值中发现异常的数值 77 pass 78 # 2,最值 79 if 0: 80 ret = df['年龄'].min() 81 print(ret) 82 83 ret = df['年龄'].max() 84 print(ret) 85 86 ret = df['工资'].min() 87 print(ret) 88 89 ret = df['工资'].max() 90 print(ret) 91 pass 92 # 3,均值和中值 93 if 0: 94 ret = df['年龄'].mean() 95 print(ret) 96 97 ret = df['年龄'].median() 98 print(ret) 99 100 pass 101 # 4,方差和标准差 102 if 0: 103 ret = df['工资'].var() #方差 104 print(ret) 105 106 ret = df['工资'].std() #方差 = 标准差的平方 107 print(ret ) 108 pass 109 # 5,求和 110 if 0: 111 ret = df['工资'].sum() 112 print(ret) 113 pass 114 # 6,相关系数,协方差 #这就涉及到两个变量了 115 if 0: 116 ret = df[['年龄','工资' ]].corr() #相关系数 117 print(ret) 118 119 ret = df[['年龄','工资']].cov() #协方差 120 print(ret) 121 122 pass 123 # 7,计数 124 if 1: 125 #算多少行 126 if 0: 127 ret = len(df) 128 print(ret) 129 if 0: 130 #算有多少个人 131 ret = df['姓名'].unique() 132 print(ret) 133 print(len(ret)) #9 个人 134 135 if 0: # 现在要解决 张三和 张昌博是同一个人的问题 , 136 df['姓名'].replace('张三','张昌博',inplace=True ) 137 ret = df['姓名'].unique() 138 print(ret) #这时就得到了 正确的所有的人 139 140 #一次替换多个值 (用列表表示 ) 141 if 0 : 142 df['姓名'].replace(['张昌博','李四'],['张三','李大四'],inplace=True) 143 print(df['姓名'].unique()) 144 pass 145 146 pass 147 148 if 0: 149 #算出每个姓名都有多少行 value_counts() 150 ret = df['姓名'].value_counts() #默认是从大到小 151 print(ret) 152 pass 153 pass 154 pass 155 156 #保存数据 157 if 0: 158 df.to_excel("d:/test03.xlsx") 159 pass 160 161 162 #数据透视 163 if 0: 164 #Excel 的数据透视表使用的非常广泛 ,Pandas 也提供了数据透视表的功能,名为pivot_table 。 165 166 #1,基本形式 167 if 0: 168 ret = pd.pivot_table(df,index=['学号']) 169 #默认进行的聚合计算是 均值计算 170 print(ret) 171 #如何解决显示不全的问题 172 if 0: 173 pd.set_option('max_columns',100) #最大 100 列 174 pd.set_option('max_rows',500) #最大 500行 175 print(ret) 176 177 178 179 pass 180 # 2,也可以有多个索引。实际上,大多数的pivot_table 参数可以通过列表获取多个值 181 if 0: 182 ret = pd.pivot_table(df,index = ['学号','姓名']) 183 print(ret) 184 pass 185 186 # 3,也可以制定需要统计汇总的数据 187 if 0: 188 #在 2 的基础上 ,但是我们只需要工资那一列就好了 189 ret = pd.pivot_table(df,index=['学号','姓名'],values='工资') 190 print(ret) 191 pass 192 # 4,还可以指定函数,来统计不同的统计值 193 if 0: 194 #注意:aggfunc 去制定 计算的方式,默认是取 平均值 195 if 0: 196 ret = pd.pivot_table(df,index=['学号','姓名'],values='工资',aggfunc=np.sum ) 197 print(ret) 198 pass 199 200 if 0: 201 #values 也可以是多个 202 ret = pd.pivot_table(df,index='姓名',values=['年龄','工资'],aggfunc=np.sum) 203 print(ret) 204 pass 205 206 # 5,非数值NaN 难以处理 ,如果要移除它们 ,可以使用“fill_value ” 将其设置为0 207 if 0: 208 #aggfunc 也可以是多个 209 if 0: 210 ret = pd.pivot_table(df,index=['姓名'],aggfunc=[np.sum,np.mean]) 211 print(ret) 212 213 ret = pd.pivot_table(df,index='姓名',aggfunc=[np.sum],fill_value=0) 214 print(ret) 215 pass 216 # 6,加入margins = True 可以在下方显示一些总和数据 217 if 0: 218 ret = pd.pivot_table(df,index='姓名',aggfunc=[np.sum],margins=True) 219 print(ret) 220 pass 221 pass 222 # 7,对不同值执行不同的函数:可以向 aggfunc传递一个字典。不过,这样有个副作用,就是必须将标签做的更加简洁才行 223 if 0: 224 #对工资求综合 ,对年龄求均值 225 ret = pd.pivot_table(df,index='姓名',values=['工资','年龄'],aggfunc={'工资':np.sum,'年龄':np.mean }) 226 print(ret) 227 pass 228 229 #数据透视表的过滤 230 if 0: 231 ret = pd.pivot_table(df,index='姓名',values=['工资','年龄'],aggfunc={'工资':np.sum,'年龄':np.mean} ) 232 # print(ret) 233 # print(type(ret)) #<class 'pandas.core.frame.DataFrame'> 234 235 if 0: 236 print(ret[:5]) #前 五行 237 pass 238 if 0: 239 ret = ret [ ret.index == '张昌博'] 240 print(ret) 241 242 if 0: 243 ret = ret.sort_values('工资',ascending=False ) 244 print(ret) 245 pass 246 247 pass 248 249 #数据透视 对多个索引来进行 汇总 下次课更详细的讲 250 if 0: 251 ret = pd.pivot_table(df,index=['学号','姓名'],values=['工资','年龄'],aggfunc={'工资':np.sum,'年龄':np.mean} ) 252 print(ret) 253
相应的excel 数据:
https://files.cnblogs.com/files/zach0812/Excel%E6%95%B0%E6%8D%AE%E9%9B%86.zip
学号 姓名 年龄 工资
17096218 张三 28 12345.23
17096218 张三 19 13345.23
17096218 张三 20 14345.23
17096221 张三 21 15345.23
17096222 张三 22 16345.23
17096223 张三 23 17345.23
17096224 张三 24 18345.23
17096225 张三 25 19345.23
17096226 张三 26 20345.23
17096227 张三 27 21345.23
17096227 张三 28 22345.23
17096227 张三 29 23345.23
17096230 张三 30 24345.23
17096231 张三 31 25345.23
17096232 张三 32 26345.23
17096233 张三 33 27345.23
17096234 张三 34 28345.23
17096235 张三 35 29345.23
17096236 张三 36 30345.23
17096237 张三 37 31345.23
17096238 张三 38 32345.23
17096239 张三 39 33345.23
17096240 张三 40 34345.23
17096241 张三 41 35345.23
17096242 张三 42 36345.23
17096243 张三 43 37345.23
17096244 张三 44 38345.23
17096245 张三 45 39345.23
17096245 张三 46 40345.23
17096245 张三 47 41345.23
17096245 张三 48 42345.23
17096245 张三 49 43345.23
17096250 张三 50 44345.23
17096251 张三 51 45345.23
17096252 张三 52 46345.23
17096253 张昌博 18 47345.23
17096254 张昌博 19 48345.23
17096255 张昌博 20 49345.23
17096256 张昌博 21 50345.23
17096257 张昌博 22 51345.23
17096258 张昌博 23 52345.23
17096258 张昌博 24 53345.23
17096258 张昌博 25 54345.23
17096258 张昌博 26 55345.23
17096258 张昌博 27 56345.23
17096263 张昌博 28 57345.23
17096264 张昌博 29 58345.23
17096265 张昌博 30 59345.23
17096266 张昌博 31 60345.23
17096267 张昌博 32 61345.23
17096268 张昌博 33 62345.23
17096269 张昌博 34 63345.23
17096270 张昌博 35 64345.23
17096271 张昌博 36 65345.23
17096272 张昌博 37 66345.23
17096273 张昌博 38 67345.23
17096274 张昌博 39 68345.23
17096275 张昌博 40 69345.23
17096276 张昌博 41 70345.23
17096277 张昌博 42 71345.23
17096278 张昌博 43 72345.23
17096279 张昌博 44 73345.23
17096280 李四 18 74345.23
17096281 李四 19 75345.23
17096281 李四 20 76345.23
17096281 李四 21 77345.23
17096281 李四 22 78345.23
17096281 李四 23 79345.23
17096281 李四 24 80345.23
17096281 李四 25 81345.23
17096288 李四 26 82345.23
17096289 李四 27 83345.23
17096290 李四 28 84345.23
17096291 李四 29 85345.23
17096292 李四 30 86345.23
17096293 李四 31 87345.23
17096294 李四 32 88345.23
17096295 李四 33 89345.23
17096296 李四 34 90345.23
17096297 李四 35 91345.23
17096298 李四 36 92345.23
17096299 李四 37 93345.23
17096300 李四 38 94345.23
17096301 李四 39 95345.23
17096302 李四 40 96345.23
17096303 李四 41 97345.23
17096304 李四 42 98345.23
17096305 李四 43 99345.23
17096306 李四 44 100345.23
17096307 李四 45 101345.23
17096308 李四 46 102345.23
17096309 李四 47 103345.23
17096310 李四 48 104345.23
17096311 李四 49 105345.23
17096312 李四 50 106345.23
17096313 李四 51 107345.23
17096314 李四 52 108345.23
17096315 李四 53 109345.23
17096316 李四 54 110345.23
17096317 李四 55 111345.23
17096318 李四 56 112345.23
17096319 李四 57 113345.23
17096320 李四 58 114345.23
17096321 李四 59 115345.23
17096322 李四 60 116345.23
17096323 李四 61 117345.23
17096324 李四 62 118345.23
17096325 李四 63 119345.23
17096326 王五 18 120345.23
17096327 王五 19 121345.23
17096328 王五 20 122345.23
17096329 王五 21 123345.23
17096330 王五 22 124345.23
17096331 王五 23 125345.23
17096332 王五 24 126345.23
17096333 王五 25 127345.23
17096334 王五 26 128345.23
17096335 王五 27 129345.23
17096336 王五 28 130345.23
17096336 王五 29 131345.23
17096336 王五 30 132345.23
17096336 王五 31 133345.23
17096336 王五 32 134345.23
17096336 王五 33 135345.23
17096336 王五 34 136345.23
17096336 王五 35 137345.23
17096336 王五 36 138345.23
17096336 王五 37 139345.23
17096346 王五 38 140345.23
17096347 王五 39 141345.23
17096348 王五 40 142345.23
17096349 王五 41 143345.23
17096350 王五 42 144345.23
17096351 王五 43 145345.23
17096352 王五 44 146345.23
17096353 王五 45 147345.23
17096354 王五 46 148345.23
17096354 王五 47 149345.23
17096354 王五 48 150345.23
17096354 王五 49 151345.23
17096354 王五 50 152345.23
17096354 王五 51 153345.23
17096354 王五 52 154345.23
17096354 王五 53 155345.23
17096362 赵六 18 156345.23
17096363 赵六 19 157345.23
17096364 赵六 20 158345.23
17096365 赵六 21 159345.23
17096366 赵六 22 160345.23
17096367 赵六 23 161345.23
17096368 赵六 24 162345.23
17096369 赵六 25 163345.23
17096370 赵六 26 164345.23
17096371 赵六 27 165345.23
17096372 赵六 28 166345.23
17096373 赵六 29 167345.23
17096374 赵六 30 168345.23
17096375 赵六 31 169345.23
17096376 赵六 32 170345.23
17096377 赵六 33 171345.23
17096378 赵六 34 172345.23
17096379 赵六 35 173345.23
17096380 赵六 36 174345.23
17096381 赵六 37 175345.23
17096382 赵六 38 176345.23
17096383 赵六 39 177345.23
17096384 赵六 40 178345.23
17096385 赵六 41 179345.23
17096386 赵六 42 180345.23
17096387 赵六 43 181345.23
17096388 赵六 44 182345.23
17096389 赵六 45 183345.23
17096390 赵六 46 184345.23
17096391 赵六 47 185345.23
17096392 赵六 48 186345.23
17096393 赵六 49 187345.23
17096394 赵六 50 188345.23
17096395 赵六 51 189345.23
17096396 赵六 52 190345.23
17096397 赵六 53 191345.23
17096398 赵六 54 192345.23
17096399 陈七 18 193345.23
17096400 陈七 19 194345.23
17096218 陈七 20 195345.23
17096219 陈七 21 196345.23
17096220 陈七 22 197345.23
17096221 陈七 23 198345.23
17096222 陈七 24 199345.23
17096223 陈七 25 200345.23
17096224 陈七 26 201345.23
17096225 陈七 27 202345.23
17096226 陈七 28 203345.23
17096227 陈七 29 204345.23
17096228 陈七 30 205345.23
17096229 陈七 31 206345.23
17096230 陈七 32 207345.23
17096231 陈七 33 208345.23
17096232 陈七 34 209345.23
17096233 陈七 35 210345.23
17096234 陈七 36 211345.23
17096235 陈七 37 212345.23
17096236 陈七 38 213345.23
17096237 陈七 39 214345.23
17096238 沈八 40 215345.23
17096239 沈八 41 216345.23
17096240 沈八 42 217345.23
17096241 沈八 43 218345.23
17096242 沈八 44 219345.23
17096243 沈八 45 220345.23
17096244 沈八 46 221345.23
17096245 沈八 47 222345.23
17096246 沈八 48 223345.23
17096247 沈八 49 224345.23
17096248 沈八 50 225345.23
17096249 沈八 51 226345.23
17096250 沈八 52 227345.23
17096251 沈八 53 228345.23
17096252 沈八 54 229345.23
17096253 沈八 55 230345.23
17096254 沈八 56 231345.23
17096255 沈八 57 232345.23
17096256 沈八 58 233345.23
17096257 沈八 59 234345.23
17096258 沈八 60 235345.23
17096259 沈八 61 236345.23
17096260 沈八 62 237345.23
17096261 沈八 63 238345.23
17096262 沈八 64 239345.23
17096263 沈八 65 240345.23
17096264 沈八 66 241345.23
17096265 沈八 67 242345.23
17096266 沈八 68 243345.23
17096267 沈八 69 244345.23
17096268 沈八 70 245345.23
17096269 沈八 71 246345.23
17096270 沈八 72 247345.23
17096271 沈八 73 248345.23
17096272 沈八 74 249345.23
17096273 沈八 75 250345.23
17096274 沈八 76 251345.23
17096275 沈八 77 252345.23
17096276 沈八 78 253345.23
17096277 沈八 79 254345.23
17096278 沈八 80 255345.23
17096279 沈八 81 256345.23
17096280 沈八 82 257345.23
17096281 沈八 83 247345.23
17096282 沈八 84 237345.23
17096283 沈八 85 227345.23
17096284 沈八 86 217345.23
17096285 沈八 87 207345.23
17096286 沈八 88 197345.23
17096287 沈八 89 187345.23
17096288 沈八 90 177345.23
17096289 沈八 91 167345.23
17096290 沈八 92 157345.23
17096291 沈八 93 147345.23
17096292 沈八 94 137345.23
17096293 沈八 95 127345.23
17096294 沈八 96 117345.23
17096295 沈八 97 107345.23
17096296 沈八 98 97345.23
17096297 吴九 18 87345.23
17096298 吴九 19 77345.23
17096299 吴九 20 67345.23
17096300 吴九 21 57345.23
17096301 吴九 22 47345.23
17096302 吴九 23 37345.23
17096303 吴九 24 47345.23
17096304 吴九 25 57345.23
17096305 吴九 26 67345.23
17096306 吴九 27 77345.23
17096307 吴九 28 87345.23
17096308 吴九 29 97345.23
17096309 吴九 30 107345.23
17096310 吴九 31 117345.23
17096311 吴九 32 127345.23
17096312 吴九 33 137345.23
17096313 吴九 34 147345.23
17096314 吴九 35 157345.23
17096315 吴九 36 167345.23
17096316 吴九 37 177345.23
17096317 吴九 38 187345.23
17096318 吴九 39 197345.23
17096319 吴九 40 207345.23
17096320 吴九 41 217345.23
17096321 吴九 42 227345.23
17096322 吴九 43 237345.23
17096323 吴九 44 247345.23
17096324 吴九 45 257345.23
17096325 吴九 46 267345.23
17096326 吴九 47 277345.23
17096327 吴九 48 287345.23
17096328 吴九 49 297345.23
17096329 吴九 50 307345.23
17096330 吴九 51 317345.23
17096331 吴九 52 327345.23
17096332 吴九 53 337345.23
17096333 吴九 54 347345.23
17096334 吴九 55 357345.23
17096335 吴九 56 367345.23
17096336 吴九 57 377345.23
17096337 吴九 58 387345.23
17096338 吴九 59 397345.23
17096339 吴九 60 407345.23
17096340 吴九 61 417345.23
17096341 吴九 62 427345.23
17096342 吴九 63 437345.23
17096343 吴九 64 447345.23
17096344 吴九 65 457345.23
17096345 吴九 66 467345.23
17096346 吴九 67 477345.23
17096347 吴九 68 487345.23
17096348 吴九 69 497345.23
17096349 吴九 70 507345.23
17096350 吴九 71 517345.23
17096351 马十 18 527345.23
17096352 马十 19 537345.23
17096353 马十 20 547345.23
17096354 马十 21 557345.23