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 pass101 # 4,方差和标准差102 if 0:103 ret = df['工资'].var() #方差104 print(ret)105 106 ret = df['工资'].std() #方差 = 标准差的平方107 print(ret )108 pass109 # 5,求和110 if 0:111 ret = df['工资'].sum()112 print(ret)113 pass114 # 6,相关系数,协方差 #这就涉及到两个变量了115 if 0:116 ret = df[['年龄','工资' ]].corr() #相关系数117 print(ret)118 119 ret = df[['年龄','工资']].cov() #协方差120 print(ret)121 122 pass123 # 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 pass145 146 pass147 148 if 0:149 #算出每个姓名都有多少行 value_counts()150 ret = df['姓名'].value_counts() #默认是从大到小151 print(ret)152 pass153 pass154 pass155 156 #保存数据157 if 0:158 df.to_excel("d:/test03.xlsx")159 pass160 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 pass180 # 2,也可以有多个索引。实际上,大多数的pivot_table 参数可以通过列表获取多个值181 if 0:182 ret = pd.pivot_table(df,index = ['学号','姓名'])183 print(ret)184 pass185 186 # 3,也可以制定需要统计汇总的数据187 if 0:188 #在 2 的基础上 ,但是我们只需要工资那一列就好了189 ret = pd.pivot_table(df,index=['学号','姓名'],values='工资')190 print(ret)191 pass192 # 4,还可以指定函数,来统计不同的统计值193 if 0:194 #注意:aggfunc 去制定 计算的方式,默认是取 平均值195 if 0:196 ret = pd.pivot_table(df,index=['学号','姓名'],values='工资',aggfunc=np.sum )197 print(ret)198 pass199 200 if 0:201 #values 也可以是多个202 ret = pd.pivot_table(df,index='姓名',values=['年龄','工资'],aggfunc=np.sum)203 print(ret)204 pass205 206 # 5,非数值NaN 难以处理 ,如果要移除它们 ,可以使用“fill_value ” 将其设置为0207 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 pass216 # 6,加入margins = True 可以在下方显示一些总和数据217 if 0:218 ret = pd.pivot_table(df,index='姓名',aggfunc=[np.sum],margins=True)219 print(ret)220 pass221 pass222 # 7,对不同值执行不同的函数:可以向 aggfunc传递一个字典。不过,这样有个副作用,就是必须将标签做的更加简洁才行223 if 0:224 #对工资求综合 ,对年龄求均值225 ret = pd.pivot_table(df,index='姓名',values=['工资','年龄'],aggfunc={ '工资':np.sum,'年龄':np.mean })226 print(ret)227 pass228 229 #数据透视表的过滤230 if 0:231 ret = pd.pivot_table(df,index='姓名',values=['工资','年龄'],aggfunc={ '工资':np.sum,'年龄':np.mean} )232 # print(ret)233 # print(type(ret)) #234 235 if 0:236 print(ret[:5]) #前 五行237 pass238 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 pass246 247 pass248 249 #数据透视 对多个索引来进行 汇总 下次课更详细的讲 250 if 0:251 ret = pd.pivot_table(df,index=['学号','姓名'],values=['工资','年龄'],aggfunc={ '工资':np.sum,'年龄':np.mean} )252 print(ret)253
相应的excel 数据:
学号 姓名 年龄 工资17096218 张三 28 12345.2317096218 张三 19 13345.2317096218 张三 20 14345.2317096221 张三 21 15345.2317096222 张三 22 16345.2317096223 张三 23 17345.2317096224 张三 24 18345.2317096225 张三 25 19345.2317096226 张三 26 20345.2317096227 张三 27 21345.2317096227 张三 28 22345.2317096227 张三 29 23345.2317096230 张三 30 24345.2317096231 张三 31 25345.2317096232 张三 32 26345.2317096233 张三 33 27345.2317096234 张三 34 28345.2317096235 张三 35 29345.2317096236 张三 36 30345.2317096237 张三 37 31345.2317096238 张三 38 32345.2317096239 张三 39 33345.2317096240 张三 40 34345.2317096241 张三 41 35345.2317096242 张三 42 36345.2317096243 张三 43 37345.2317096244 张三 44 38345.2317096245 张三 45 39345.2317096245 张三 46 40345.2317096245 张三 47 41345.2317096245 张三 48 42345.2317096245 张三 49 43345.2317096250 张三 50 44345.2317096251 张三 51 45345.2317096252 张三 52 46345.2317096253 张昌博 18 47345.2317096254 张昌博 19 48345.2317096255 张昌博 20 49345.2317096256 张昌博 21 50345.2317096257 张昌博 22 51345.2317096258 张昌博 23 52345.2317096258 张昌博 24 53345.2317096258 张昌博 25 54345.2317096258 张昌博 26 55345.2317096258 张昌博 27 56345.2317096263 张昌博 28 57345.2317096264 张昌博 29 58345.2317096265 张昌博 30 59345.2317096266 张昌博 31 60345.2317096267 张昌博 32 61345.2317096268 张昌博 33 62345.2317096269 张昌博 34 63345.2317096270 张昌博 35 64345.2317096271 张昌博 36 65345.2317096272 张昌博 37 66345.2317096273 张昌博 38 67345.2317096274 张昌博 39 68345.2317096275 张昌博 40 69345.2317096276 张昌博 41 70345.2317096277 张昌博 42 71345.2317096278 张昌博 43 72345.2317096279 张昌博 44 73345.2317096280 李四 18 74345.2317096281 李四 19 75345.2317096281 李四 20 76345.2317096281 李四 21 77345.2317096281 李四 22 78345.2317096281 李四 23 79345.2317096281 李四 24 80345.2317096281 李四 25 81345.2317096288 李四 26 82345.2317096289 李四 27 83345.2317096290 李四 28 84345.2317096291 李四 29 85345.2317096292 李四 30 86345.2317096293 李四 31 87345.2317096294 李四 32 88345.2317096295 李四 33 89345.2317096296 李四 34 90345.2317096297 李四 35 91345.2317096298 李四 36 92345.2317096299 李四 37 93345.2317096300 李四 38 94345.2317096301 李四 39 95345.2317096302 李四 40 96345.2317096303 李四 41 97345.2317096304 李四 42 98345.2317096305 李四 43 99345.2317096306 李四 44 100345.2317096307 李四 45 101345.2317096308 李四 46 102345.2317096309 李四 47 103345.2317096310 李四 48 104345.2317096311 李四 49 105345.2317096312 李四 50 106345.2317096313 李四 51 107345.2317096314 李四 52 108345.2317096315 李四 53 109345.2317096316 李四 54 110345.2317096317 李四 55 111345.2317096318 李四 56 112345.2317096319 李四 57 113345.2317096320 李四 58 114345.2317096321 李四 59 115345.2317096322 李四 60 116345.2317096323 李四 61 117345.2317096324 李四 62 118345.2317096325 李四 63 119345.2317096326 王五 18 120345.2317096327 王五 19 121345.2317096328 王五 20 122345.2317096329 王五 21 123345.2317096330 王五 22 124345.2317096331 王五 23 125345.2317096332 王五 24 126345.2317096333 王五 25 127345.2317096334 王五 26 128345.2317096335 王五 27 129345.2317096336 王五 28 130345.2317096336 王五 29 131345.2317096336 王五 30 132345.2317096336 王五 31 133345.2317096336 王五 32 134345.2317096336 王五 33 135345.2317096336 王五 34 136345.2317096336 王五 35 137345.2317096336 王五 36 138345.2317096336 王五 37 139345.2317096346 王五 38 140345.2317096347 王五 39 141345.2317096348 王五 40 142345.2317096349 王五 41 143345.2317096350 王五 42 144345.2317096351 王五 43 145345.2317096352 王五 44 146345.2317096353 王五 45 147345.2317096354 王五 46 148345.2317096354 王五 47 149345.2317096354 王五 48 150345.2317096354 王五 49 151345.2317096354 王五 50 152345.2317096354 王五 51 153345.2317096354 王五 52 154345.2317096354 王五 53 155345.2317096362 赵六 18 156345.2317096363 赵六 19 157345.2317096364 赵六 20 158345.2317096365 赵六 21 159345.2317096366 赵六 22 160345.2317096367 赵六 23 161345.2317096368 赵六 24 162345.2317096369 赵六 25 163345.2317096370 赵六 26 164345.2317096371 赵六 27 165345.2317096372 赵六 28 166345.2317096373 赵六 29 167345.2317096374 赵六 30 168345.2317096375 赵六 31 169345.2317096376 赵六 32 170345.2317096377 赵六 33 171345.2317096378 赵六 34 172345.2317096379 赵六 35 173345.2317096380 赵六 36 174345.2317096381 赵六 37 175345.2317096382 赵六 38 176345.2317096383 赵六 39 177345.2317096384 赵六 40 178345.2317096385 赵六 41 179345.2317096386 赵六 42 180345.2317096387 赵六 43 181345.2317096388 赵六 44 182345.2317096389 赵六 45 183345.2317096390 赵六 46 184345.2317096391 赵六 47 185345.2317096392 赵六 48 186345.2317096393 赵六 49 187345.2317096394 赵六 50 188345.2317096395 赵六 51 189345.2317096396 赵六 52 190345.2317096397 赵六 53 191345.2317096398 赵六 54 192345.2317096399 陈七 18 193345.2317096400 陈七 19 194345.2317096218 陈七 20 195345.2317096219 陈七 21 196345.2317096220 陈七 22 197345.2317096221 陈七 23 198345.2317096222 陈七 24 199345.2317096223 陈七 25 200345.2317096224 陈七 26 201345.2317096225 陈七 27 202345.2317096226 陈七 28 203345.2317096227 陈七 29 204345.2317096228 陈七 30 205345.2317096229 陈七 31 206345.2317096230 陈七 32 207345.2317096231 陈七 33 208345.2317096232 陈七 34 209345.2317096233 陈七 35 210345.2317096234 陈七 36 211345.2317096235 陈七 37 212345.2317096236 陈七 38 213345.2317096237 陈七 39 214345.2317096238 沈八 40 215345.2317096239 沈八 41 216345.2317096240 沈八 42 217345.2317096241 沈八 43 218345.2317096242 沈八 44 219345.2317096243 沈八 45 220345.2317096244 沈八 46 221345.2317096245 沈八 47 222345.2317096246 沈八 48 223345.2317096247 沈八 49 224345.2317096248 沈八 50 225345.2317096249 沈八 51 226345.2317096250 沈八 52 227345.2317096251 沈八 53 228345.2317096252 沈八 54 229345.2317096253 沈八 55 230345.2317096254 沈八 56 231345.2317096255 沈八 57 232345.2317096256 沈八 58 233345.2317096257 沈八 59 234345.2317096258 沈八 60 235345.2317096259 沈八 61 236345.2317096260 沈八 62 237345.2317096261 沈八 63 238345.2317096262 沈八 64 239345.2317096263 沈八 65 240345.2317096264 沈八 66 241345.2317096265 沈八 67 242345.2317096266 沈八 68 243345.2317096267 沈八 69 244345.2317096268 沈八 70 245345.2317096269 沈八 71 246345.2317096270 沈八 72 247345.2317096271 沈八 73 248345.2317096272 沈八 74 249345.2317096273 沈八 75 250345.2317096274 沈八 76 251345.2317096275 沈八 77 252345.2317096276 沈八 78 253345.2317096277 沈八 79 254345.2317096278 沈八 80 255345.2317096279 沈八 81 256345.2317096280 沈八 82 257345.2317096281 沈八 83 247345.2317096282 沈八 84 237345.2317096283 沈八 85 227345.2317096284 沈八 86 217345.2317096285 沈八 87 207345.2317096286 沈八 88 197345.2317096287 沈八 89 187345.2317096288 沈八 90 177345.2317096289 沈八 91 167345.2317096290 沈八 92 157345.2317096291 沈八 93 147345.2317096292 沈八 94 137345.2317096293 沈八 95 127345.2317096294 沈八 96 117345.2317096295 沈八 97 107345.2317096296 沈八 98 97345.2317096297 吴九 18 87345.2317096298 吴九 19 77345.2317096299 吴九 20 67345.2317096300 吴九 21 57345.2317096301 吴九 22 47345.2317096302 吴九 23 37345.2317096303 吴九 24 47345.2317096304 吴九 25 57345.2317096305 吴九 26 67345.2317096306 吴九 27 77345.2317096307 吴九 28 87345.2317096308 吴九 29 97345.2317096309 吴九 30 107345.2317096310 吴九 31 117345.2317096311 吴九 32 127345.2317096312 吴九 33 137345.2317096313 吴九 34 147345.2317096314 吴九 35 157345.2317096315 吴九 36 167345.2317096316 吴九 37 177345.2317096317 吴九 38 187345.2317096318 吴九 39 197345.2317096319 吴九 40 207345.2317096320 吴九 41 217345.2317096321 吴九 42 227345.2317096322 吴九 43 237345.2317096323 吴九 44 247345.2317096324 吴九 45 257345.2317096325 吴九 46 267345.2317096326 吴九 47 277345.2317096327 吴九 48 287345.2317096328 吴九 49 297345.2317096329 吴九 50 307345.2317096330 吴九 51 317345.2317096331 吴九 52 327345.2317096332 吴九 53 337345.2317096333 吴九 54 347345.2317096334 吴九 55 357345.2317096335 吴九 56 367345.2317096336 吴九 57 377345.2317096337 吴九 58 387345.2317096338 吴九 59 397345.2317096339 吴九 60 407345.2317096340 吴九 61 417345.2317096341 吴九 62 427345.2317096342 吴九 63 437345.2317096343 吴九 64 447345.2317096344 吴九 65 457345.2317096345 吴九 66 467345.2317096346 吴九 67 477345.2317096347 吴九 68 487345.2317096348 吴九 69 497345.2317096349 吴九 70 507345.2317096350 吴九 71 517345.2317096351 马十 18 527345.2317096352 马十 19 537345.2317096353 马十 20 547345.2317096354 马十 21 557345.23